Wine是一个在X86、X86-64上容许类Unix操作系统在X Window System下运行Microsoft Windows程序的软件。另一方面,计算机程序设计师能经由Wine的程序库将视窗的程序转移至类Unix操作系统中运行。也有不少软件经过 Wine测试后发布,比如Picasa,uTorrent,MediaCoder。
Wine解为 "Wine Is Not an Emulator",即Wine不是模拟器。虽然Wine有另一个非官方名称,"Windows Emulator",即Windows模拟器。Wine的正确名称是"Wine",不是全大写、全小写或大小写混合。
发展
Quicken on Wine
Wine计划是在1993年由Bob Amstadt及Eric Youngdale发起的,最初的目的是为了使16位的视窗3.1的程序可以在Linux上运行,但现在已将目的变为使32位的视窗程序在Linux上运行。
Wine不是模拟器,而是用兼容模式调用DLLs以运行Windows程序
Wine虽然是为Linux而制,但亦能支持FreeBSD 与 Solaris-x86。
因为Windows的DLLs 是封闭源代码的,所以程序设计师只能由最底层的设计开始,耗费大量的时间来编写和测试,最后达至兼容。但这个过程往往会有很多困难,而且亦可能会出现很多错误。
当Corel参加这个计划后,Wine很快便能兼容WordPerfect Office,但Corel后来停止了支持这个计划。
功能
在2008 年,Wine已经能够完美运行很多知名程序,例如Lotus Notes及Microsoft Office 2007,Photoshop CS2,但其可靠性及稳定性仍有待改善。如果该程序包含本地的微软视窗的程序库 ,那样Wine便可很顺利运行该程序。
但有些Wine DLLs亦已能完美地取代视窗原来的DLLs,使得有些程序可完美运行。
其他Wine版本
Wine虽然可运行大部份视窗程序,但只能极有限度地运行以DirectX所编写的游戏,亦即是很多游戏不能在其运行。
Wine的延伸计划主要有两大产品,一个是CodeWeavers开发的CrossOver,另一个是TransGaming Technologies的Cedega,CrossOver Office以提供应用软件支持为主,Cedega则锁定在游戏娱乐方面。CodeWeavers和Wine计划一直保有密切的合作关系。 CodeWeavers亦雇用了Alexandre Juillard以将CrossOver Office的源代码回馈给Wine。在2005年6月22日,CodeWeavers 宣布支持基于英特尔处理器的苹果计算机。
Transgaming的Cedega则是商业软件,以Wine为基础,在Wine更换授权后停止使用Wine的源代码,虽然有Cedega提供源代码下载(经由CVS),但在不包含专利技术的情形下,功能与可用性都不高。
微软对Wine的回应
微软甚少直接回应Wine计划。不过它们通过各种手段封锁Wine。
像2005 年2月16日软件巨头微软承认其在公司的更新软件包中加入了阻止特定用户的程序。微软公司日前承认,其反盗版工具同时也会阻止使用Wine软件的用户更新Windows。微软的发言人日前说,其Windows Genuine Advantage(WGA)认证工具将会辨认Wine用户,因此只有运行真正正版的Windows的用户才能下载升级和附加工具。“现在越来越多的第三方模拟技术被投入使用,不过Wine是第一款通过WGA测试的模拟软件,”发言人说道。“微软并不希望为那些使用第三方模拟软件或者跨平台API转换技术的用户提供Windows软件更新。”不过发言人称那些没有真正运行Windows XP或者Windows 2000的用户依然能够下载Office Update。
引用
作者:Aditya Narayan 来源:developerWorks 中国
Wine 是一个令人神往而且目标远大的开放源代码项目,它尝试去解决在 Linux 上运行 Windows 可执行文件的复杂问题。尽管 Wine 不是一个新项目,但是,人们对 Linux 桌面的期望以及对 Linux 应用程序的需求日益增加,使得它现在仍具有重要意义。本文对 Wine 进行了介绍,并提出了几种获得 Wine 内部操作经验的途径。
Wine 项目起始于 1993 年,它的根源可以追溯到 90 年代早期出现的用于 UNIX 的 DOS 和 Windows 模拟器。Wine 项目最初是将 16 位的应用程序移植到 Linux,而几年之后,已可以在 Linux 上运行 Microsoft Word 和 Excel。现在它有一百多万行代码。
人们一直认为,在桌面上采用 Linux 的主要障碍是应用程序不足。商用桌面应用程序供应商还不能确定他们是否应该投入时间和精力将他们的 Windows 应用程序移植到 Linux,他们基本上是在等待 Linux 大规模应用于桌面。另一方面,Linux 需要应用程序才能大规模应用于桌面。这是一个经典的先有鸡还是先有蛋的问题,而 Wine 通过在 Linux 上运行现有的 Windows 应用程序而解决了这一问题。
Wine 能做什么
Wine 项目实际是一个二合一的项目。它们提供了一个名字叫做 Winelib 的开发工具包,用于将应用程序从 Windows 移植到 Linux(和 Unix);它们还提供了一个程序加载器,让 Windows 二进制文件可以在 Unix 和类 Unix 系统中运行。本文讨论的主要是后者;在 参考资料中有关于 Winelib 的更多资料的链接。
Wine 程序加载器让运行于 x86 上的 Linux 和其他类 Unix 操作系统可以加载并运行 Windows x86 可执行文件 — 不过那只是它要解决的问题的一部分。因为 Windows 可执行文件总是会链接到其他的库,而这些库是 Windows 操作系统的一部分(如本文稍后图 1 中的 Dependency Walker 截图中可以看到),Wine 还最大可能限度地实现了那些 Windows 内部构件,即 Linux 上通常所指的 Win32 API5。
虽然 Windows 和 Linux 有很大的不同,但是就基本的层次而言,与任何现代操作系统一样,还是有很多类似之处的 — 比较明显的包括,对文件和目录的支持,对同时运行多个程序的支持,类似的用户界面以及对多媒体的支持。
不是仿真器
据 WineHQ的说法,“WINE 代表 Wine Is Not an Emulator(即,Wine 不是一个仿真器)。更确切地说,Wine 是 X 和 UNIX 之上对 Windows API 的一个开放源代码实现。您可以认为它是一个 Window 兼容层。Wine 不需要 Microsoft Windows,因为它是由 100% 非 Microsoft 代码构成的另一个实现。但是它可以使用本机系统 DLL,只要这些 DLL 可用。而且它可以让您在 Linux 或者其他类 UNIX 操作系统之上运行大部分 Windows 软件。”
图 1. 可执行文件 callDLL.exe 的依赖: