Windows模拟器-Wine
2013-06-04 15:12:34 阿炯

Wine提供了一个用来运行Windows程序的平台,是一款免费和开源的兼容层。Wine(Wine Is Not an Emulator的缩写,即Wine不仅仅是一个模拟器)是一个在X-Windows和Unix上执行的Windows APIs(应用程序接口),也可以认为Wine是一个Windows兼容层,其能够在多种兼容 POSIX 接口的操作系统(诸如 Linux、MacOS 与 BSD 等)上运行 Windows 应用的兼容层。它不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是将 Windows API 调用翻译成为动态的 POSIX 调用,使得在运行 Linux、FreeBSD 或其他一些操作系统的计算机上运行一些 Windows 应用程序成为可能。它也是 Valve 用来让 Steam Deck 用户在 Linux 驱动的手持设备上玩 Windows 游戏的 Proton 软件的基础。其采用C/C++开发并在LGPL协议下授权。


Wine 项目由 Bob Amstadt 于 1993 年发起,旨在寻求一种在 Linux 上运行 Windows 3.1 程序的办法。不久之后,Alexandre Julliard 开始接手领导 Wine 的开发,从此由他管理这个项目。随着 Windows API 和应用为了适应新硬件及软件而不断演变,其也一直不断发展来支持新的特性,移植到更多其他系统,并且更加稳定,提供着更好的用户体验。

通过确立一个宏伟的目标,在2008年项目到达 v1.0 之前,Wine 一直稳健地持续了 15 年之久,那是第一个稳定版。多个版本以后,虽然还有许多工作要做,但今天 Wine 仍然在活跃地开发着。 并且有大约数以百万人计的人们使用 Wine 在他们所选择的系统上运行 Windows 软件。

开放源代码和用户驱动的
Wine 将会永远是自由软件。大约一半的 Wine 代码由志愿者编写,其余部分由商业公司赞助。

可跨指令架构运行程序的Wine-Wine-CE首个正式版发布

Wine-CE 首个正式版 v8.0 于2023年1月发布,该版本基于 Wine 8.0 和 Qemu 7.2.0,可在 ARM 平台上运行 x86 Win32 程序。在此版本之前,已发布 2 个预览版。并已经在树莓派 4 平台上成功进行了测试。和其它在 ARM 平台上运行 x86 应用程序的方案相比,该方案将指令翻译层,即修改过的 Qemu,嫁接于 Wine 的 Windows Dll 层和 Unix 库层之间,从而遵循了非必要不模拟的原则,即只对 x86 架构的 Windows Dll 和所模拟的应用程序进行翻译,并且和原生的 Wine 共用一套 Unix 库。从而可以直接使用宿主架构 ARM 的库和驱动,避免了图形 API 等底层库和驱动的模拟工作。相比其它方案,该项目可直接使用宿主的文件系统,无需 rootfs 和 chroot 操作,从而无需 root 权限也可正常使用。

该项目基于 Wine 和 Qemu 项目的最新稳定版分支,并充分利用 Wine 和 Qemu 的最新特性。在此项目的开发过程中,修复了 Qemu x86 用户模式下的全局描述表(GDT)bug,该 bug 会导致多线程运行时所模拟的段寄存器值被意外修改。由于此 bug 的修复,Wine-CE 可以直接将 Qemu 的无软页表用户模式作为指令翻译层,从而让模拟层和本基层使用共同的内存地址空间,进而保证两者间通过协程方式进行双向快速交互。另外,此项目使用了 DXVK 作为 Direct3D 的实现。和其它项目相比,此项目将 DXVK 进行了修改,使之可以在树莓派上运行。因此,针对 Direct3D 程序的执行,会将 Direct3D 调用翻译为 Vulkan 调用,交由宿主端本机执行,从而大幅提升图形渲染性能,为 3D 游戏的运行打好基础。

Wine-CE 项目在仓库中不但提供了完整的源码和构建过程描述,还提供了二进制包,可以快速部署到机器上进行执行。


最新版本:1.8
此版本包括了开发者 17 个月的努力,包括大约 13,000 个独立改进。此版本值得关注的是实现了 DirectWrite 和 Direct2D;新增 Pulse 音频驱动器。此外还有大量的改进,支持更多的应用和游戏,详细改进内容请看发行说明

最新版本:3.0
官方表示这个版本代表了一年努力开发的成果,包含了 6000 多个变化。该版本值得关注的更新有:
支持 Direct3D 10 和 11
Direct3D 的命令行流
Android 图形驱动程序
改进的 DirectWrite 和 Direct2D 支持
此外,在内核方面,该版本的默认 Windows 版本已设置为 Windows 7。更新内容十分多,请参阅更新说明。官方表示,由于年度发布时间表,许多正在开发的功能已经推迟到下一个开发周期。其中包括对 Direct3D 12 和 Vulkan 的支持,以及在 Android 上启用 Direct3D 的 OpenGL ES 支持。

最新版本:3.12
本次更新包含新特性的增加和 近40个bug 修复,主要新增功能
Unicode 数据已更新为 Unicode 11.0.0。
Internet 控制面板中的代理配置对话框。
语法修复 Cmd.exe 命令解释程序。
Wingdings 字体中的一些字形。
其他更新内容及Bug修复情况请查看完整的发行说明

最新版本:4.3
此版本的主要更新内容包括:
用 FAudio 库重新实现 XAudio2。
Mono 引擎更新至最新版本。
更现代的图标窗口的处理。
改进了内核对象的处理。
各种 Bug 的修复。
默认情况下,许多 DLL 都构建为 PE 文件。
更多地支持安装即插即用驱动程序。
Media Foundation 中的时钟同步。
音频驱动程序的音量调整。
一些 bug 修复。
更多详情请参看发行公告

最新版本:5.0
5.0版本凝聚了过去一年的开发工作成果,包括了超过 7400 项个人更改。主要的更新亮点包括:
PE 格式的内建模块
多显示器支持
XAudio2 重新实现
Vulkan 1.1 支持
同时官方表示此版本用于纪念 Józef Kucia,他是 Wine 的 Direct3D 实现的主要贡献者,也是 vkd3d 项目的首席开发人员,于 2019 年 8 月去世。“我们所有人都非常想念他的技巧和友善。”更多更新说明请详见此处

最新版本:5.4
此版本主要更新内容包括:
Unicode 数据更新到 Unicode 版本 13。
内建程序使用新的 UCRTBase C 运行时。
对国际化域名更正确的支持。
支持在 Direct2D 中绘制圆角矩形。
D3DX9 中的文本绘图。
更多详细信息请参考更新说明

最新版本:6.0
2021年1月17日,Wine 6.0 已经发布。此次更新特别纪念 Ken Thomases,一位在圣诞节前离开的杰出开发者,同时也是 Wine 上的 macOS 支持的主要负责人。主要更新内容:
PE 格式的核心模块
WineD3D 的 Vulkan 后端
DirectShow 和 Media Foundation 的支持
文本控制台重新设计
此次更新还涉及音视频播放、输入设备支持、桌面整合、国际化支持、内核优化、C 运行时优化、网络优化、开发工具优化等。更多详细更新内容请查看发行说明

最新版本:6.2
2021年2月14日,Wine 6.2 已经发布,此版本中的新增功能:
具有 DirectX 支持的 Mono 引擎已更新至 6.0.0 版。
支持 NTDLL 调试器 API。
WIDL 中更多的 WinRT 支持。
Xbox One 控制器在 Mac 上已修复。
修复了 Paint.NET、Earth 2160、Foxit Reader、Google SketchUp 13 和许多其他应用程序修复。
更多详情可查看此处

最新版本:6.6
Wine 6.6 已经于2021年4月初正式发布,该版本的新内容包括:
Mono 引擎更新至 6.1.1 版本,并进行了上游更新;
DWrite 和 DnsApi 库转换为 PE;
改进了即插即用驱动的支持;
各种 bug 修复;
Google Drive 登录前崩溃的问题;
Wine 的任务栏未在 KDE 5 的任务栏中显示的问题;
Microsoft Flight Simulator 崩溃的问题;
Wine 控制面板无法启动小程序(applets);
更多详情可查看此处

最新版本:7.0
Wine 7.0 已经于2022年1月中旬正式发布,该版本中值得关注的更新内容包括:
PE 模块
除了少数例外,所有模块都可以用 PE 格式构建。
对于有关联的 Unix 库的 PE 模块,PE 部分和 Unix 部分之间的接口是通过标准的 NT 系统调用。
内置的 dlls 只有在磁盘上有相应的PE文件时才被加载。

WoW64
实现了 64 位 Windows-on-Windows(WoW64)架构,并且支持在 64 位 Unix 主机进程中运行 32 位 Windows 应用程序。
大多数 Unix 库都实现了 WoW64 thunks,使 32 位 PE 模块可以调用 64 位的 Unix 库。

主题
Wine 中包含了一个 "Light" 主题,有 "Blue" 和 "Classic Blue" 两个颜色变体。
所有的 Common Controls 都支持主题化,并在主题改变时自动刷新。
所有内置的应用程序都支持主题化,以及高 DPI 渲染。

图形
有一个新的 Win32u 库实现了内核方面的图形和窗口管理支持。
Vulkan 驱动支持升级到 Vulkan 规范的 1.2.201 版本。
对 Direct2D 效果的一些初步支持已经实现。
Direct2D API 支持 ID2D1MultiThread 接口。
WindowsCodecs 支持对 WMP(Windows Media Photo)格式的图像进行解码,以及将图像编码为 DDS(DirectDraw Surface)格式。
WindowsCodecs 不再支持将图像编码为 macOS ICNS 格式。

Direct3D
对 Wine Direct3D 实现的 Vulkan 渲染器进行了各种改进。
Direct3D 12 支持 1.1 版本的根签名。
下列额外的显卡会被 Direct3D 显卡数据库所识别:
AMD Radeon RX 5500M
AMD Radeon RX 6800/6800 XT/6900 XT
AMD Van Gogh
英特尔 UHD Graphics 630
Nvidia GT 1030

D3DX
对 D3DX 效果框架的第 10 版的支持有了很大的改进。
D3DX 10 支持 Windows Media Photo(JPEG XR)图像文件格式。
各种 D3DX10 纹理创建函数( D3DX10CreateTextureFromMemory()及其变体)被实现。
增加了 ID3DX10Sprite 接口的部分实现。
增加了 ID3DX10Font 接口的部分实现。

音频/视频
DirectShow 和 Media Foundation GStreamer 被统一到一个单一的后端,使其更容易实现新的媒体解码 API。
Windows Media 的异步和同步阅读器对象是基于 WineGStreamer 后端实现的。
Media Foundation 的支持更加完整
QuickTime 解码器库(wineqtdecoder)被移除,GStreamer 是 macOS 上所有内置多媒体编解码器所需的。

文本和字体
Font Set 对象是在 DirectWrite 中实现的。
TextHost 接口已在 RichEdit 中正确实现。

国际化
统一码字符表是基于 14.0.0 版本。
时区数据被更新,基于来自 Olson 和 Unicode CLDR 数据库的信息。
720(阿拉伯语、波斯语和乌尔都语)和 20949(韩文)代码段得到支持。
支持 sr-Latn-RS 区划。
更多详情可查看此处

最新版本:8.0
2023年1月25日消息,Wine 是一款免费和开源的兼容层,它使得在运行 Linux、FreeBSD 或其他一些操作系统的计算机上运行一些 Windows 应用程序成为可能。它也是 Valve 用来让 Steam Deck 用户在 Linux 驱动的手持设备上玩 Windows 游戏的 Proton 软件的基础。每年年初就是 Wine 发布大版本更新的时候,Wine 8.0 现在也如期正式发布。在经历了一年的 Wine 7.x 双周开发版本之后,再纳入了过去一年中的所有变化。虽然在过去一年的双周构建中可以找到这些变化,最大的变化之一是其所有模块现在都支持以 PE(可移植的可执行文件)格式构建。但比起 7.0,8.0 的更新亮点包括:
运行具有拷贝保护的 Windows 应用程序
在装有 64 位芯片的设备上使用 32 位应用程序、ARM 处理器的设备上使用 X86 应用程序
完成了将所有 Wine 模块转换为 PE 格式的工作。这对于复制保护、64 位主机上的 32 位应用支持、Windows 调试器、在 Arm 上运行 X86 应用等工作非常重要
继续进行 WoW64 工作,最终允许 32 位 Windows 应用程序在没有 32 位 Unix 库的情况下工作,但这项工作仍在进行中,类 Windows 的 WoW64 模式仍是实验性的
在默认配置中加入了 “light" 图形主题
Print Processor 架构已经实现
围绕 Direct2D 和 Direct3D 功能的持续改进,包括性能优化
VKD3D 着色器库已经实现了一个新的 HLSL 编译器和反汇编器
手柄的热插拔支持得到了极大的改善
更好地支持方向盘外设的检测、力反馈和其他输入功能
字体处理的改进,将 Mono 引擎更新为 Mono 7.4
所有内置应用程序默认使用 Common Controls v6 进行 HiDPI 渲染和主题设计
各种构建基础设施和开发工具的更新
对 Wine 中的许多捆绑库进行更新
OpenAL32.dll 包装器库已删除

开发人员指出其花了四年时间才完成这一工作,而且仍有一些模块“在 PE 和 Unix 部分之间进行直接调用,而不是通过 NT 调用接口”,但这些模块将在即将发布的 Wine 8.x 版本中被删除。8.0 中的其他变化包括图形改进,包括更新版本的 Vulkan 图形驱动和对更多显卡的支持,改进的游戏控制器热插拔支持(用于移除和插入控制手柄等)。用户可以通过 WineHQ.org 来下载和了解更多关于本版本的细节。

最新版本:9
Wine团队于2024年1月16日宣布推出 9.0 正式版,此版本代表了该团队近一年的开发努力和 7000 多项更改。9.0 正式版的主要亮点是新的 WoW64 架构和实验性的 Wayland 驱动程序支持。迎来了新的 WoW64 模式,这意味着可以在纯 64 位 Unix 系统上安装运行 32 位 Windows 应用程序,但这一工具默认情况下尚未启用,需要通过"--enable-archs=i386,x86_64"配置项来启用。

Wayland 是 Linux 发行版的替代窗口系统,取代了老化的 X11 标准。Wine 9.0 迎来了实验性的 Wayland 图形驱动,虽然没有开发完,但目前已经实现了许多功能,例如基本窗口管理、多显示器、高 DPI 缩放、相对运动事件和 Vulkan 支持。默认情况下将不会启用Wayland 驱动。可以通过以下命令在 HKCU\Software\Wine\Drivers 注册表项启用它:winereg.exe add HKCU\\Software\\Wine\\Drivers/vGraphics/dx11,wayland

该版本还增强了 ARM64 平台支持,并在 OpenGL 或 Vulkan(使用 VKD3D)之上进行了大量 Direct3D 改进;是过去一年中每两周发布一次的wine 8.x开发版本的集大成之作,极大地增强了Windows应用程序在Linux和其他目标平台上的支持。还附带了所有最新的捆绑/依赖包,如 VKD3D 1.10、更新的 Mono、Zlib 1.3 和其他更新的软件包。更多关于Wine 9的详情请访问 WineHQ.org 来了解。


官方主页:http://www.winehq.org/