目前 wine 版本为较为稳定的 9.0 版本,本文重点围绕 wine 9.0 安装、使用以及 wine 工具介绍等方面进行了学习和整理。
一、安装 wine
安装步骤主要参考的官方Debian 安装 wine 的文档
1. 如果你使用的是 64 位系统,需要先开启 32 位架构支持:
$ sudo dpkg --add-architecture i386
architecture,指的是cpu体系架构,如64位的amd64,arm64。下面是一些关于架构方面的指令:
$ sudo dpkg --print-architecture #查看当前CPU体系架构:
$ sudo dpkg --add-architecture [ amd64 | i386 | arm64 | ...] #开启或者说增加其他架构支持
$ sudo dpkg --print-foreign-architectures #查看开启的其他架构(非当前cpu体系架构)
$ sudo dpkg --remove-architecture [ amd64 | i386 | arm64 | ...] #删除开启的其他架构
i386 = Intel 80386。通常被用来作为对Intel(英特尔)32位微处理器的统称。
amd64,又称“x86-64”或“x64”。是一种64位元的电脑处理器架构。它是建基于现有32位元的x86架构,由AMD公司所开发。
2. 信任来自 https://dl.winehq.org/ 的公钥:
$ sudo mkdir -pm755 /etc/apt/keyrings
$ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
上面的命令实现了将 https://dl.winehq.org/
的公钥内容保存至 /etc/apt/keyrings/winehq-archive.key
文件。
可以查看是否保存成功
$ ls /etc/apt/keyrings/
3.添加仓库(以 debian12 和 ubuntu 22.04 为例):
方法一:添加 winehq 官方仓库(不能保证下载速度)
debian12 添加源命令:
$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources
ubuntu2404 添加源命令:
$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/noble/winehq-noble.sources
方法二:从镜像站添加仓库,如清华大学开源镜像站(推荐,能保证下载速度)
清华大学开源镜像站只同步了 ubuntu/debian 部分,因此其他发行版不适用。
在 /etc/apt/sources.list.d/
目录中新增一个源列表文件 winehq.list
,并将 winehq 源添加进来
debian12 添加源命令:
$ echo 'deb [arch=amd64,i386 signed-by=/etc/apt/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ bookworm main' | sudo tee /etc/apt/sources.list.d/winehq.list
ubuntu2404 添加源命令:
$ echo 'deb [arch=amd64,i386 signed-by=/etc/apt/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ noble main' | sudo tee /etc/apt/sources.list.d/winehq.list
4. 更新源列表
$ sudo apt update
5. 安装 wine 稳定版
这里选择安装的是稳定分支 (winehq-stable),可以根据需要选择开发分支 (winehq-devel) 或Staging 分支 (winehq-staging)
$ sudo apt install --install-recommends winehq-stable
如果 apt 提示缺少依赖,请先安装缺少的依赖,然后重复以上两步(update 和 install)。
二、安装 wine 工具
1.winetricks(建议安装)
介绍: 带点官方性质的wine的配置工具。
源码网站: https://github.com/Winetricks/winetricks
如何安装:
$ sudo apt install winetricks
2.winetricks-zh(建议安装)
介绍: 国人维护的 winetricks 修改版,添加了一些国内常用的 windows 应用支持,以弥补 winetricks 对国内应用支持不足的情况。
源码网站: https://github.com/hillwoodroc/winetricks-zh
如何安装:
$ git clone https://github.com/hillwoodroc/winetricks-zh.git # 克隆代码到本地
$ cd winetricks-zh/ # 切换到 winetricks-zh 目录
$ sudo cp winetricks-zh /usr/bin/ # 将 winetricks-zh 文件添加到命令所在环境变量路径
$ sudo cp icon/winetricks-zh.svg /usr/share/icons/hicolor/scalable/apps/ # 将 winetricks-zh 程序图标添加到指定位置
$ sudo cp winetricks-zh.desktop /usr/share/applications/ # 将 winetricks-zh 程序添加到开始菜单
如何使用:
$ WINEARCH=win32 WINEPREFIX=~/.winehy winetricks-zh
这条命令的含义是:在开启 winetricks-zh 配置界面的同时,新建一个win32
也就是32位系统的容器,同时指定该容器路径为~/winehy
,具体参数后面会详细介绍。
注意:新建并初始化容器的过程,会提示安装插件 wine-mono
(.net 开源方案)和 wine-gecko
(IE HTML开源方案),如果点下载的话,估计会非常慢,我们可以点取消,然后自行从国内镜像源中进行下载并安装。
比如,清华大学镜像站就提供了这 2 个插件的镜像源:http://mirrors.ustc.edu.cn/wine/wine/
如何安装? 因为在线安装的原理是先从官网下载插件到 wine 缓存目录~/.cache/wine
,然后再从缓存目录中查找插件并安装。因此,我们可以直接从国内一些镜像站先下载好他们并复制到缓存目录~/.cache/wine
中,下次在初始化 wine 容器时,就会自动从该缓存目录中查找和安装插件。但要注意,不同的 wine 版本会默认下载有与之对照的 mono 和 Gecko 版本,如果下载版本不与之对照,则还是会弹出安装提示。如 wine8.0.2
稳定版对应的是 mono7.4.0
和 Gecko2.47.3
, wine 9.0
稳定版对应的是 wine-mono-9.0.0
,开发版对应的则往往是最新的那个版本。
插件名 | 功能 | 缓存位置 |
---|---|---|
wine-mono | .net 开源方案 | ~/.cache/wine |
gecko | HTML 渲染引擎(Mozilla) | ~/.cache/wine |
3.wine 运行器(补充使用)
wine 运行器 gfdgd xi 开发的一个基于 wine 的可视化工具。
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作,且安装过程较为繁琐,对小白不友好。于是该运行器为了解决该痛点,内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器、运行库安装工具等。
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。
而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。
且对于 Deepin23 用户做了特别优化,以便能在缺少 i386 运行库的情况下运行 Wine32。同时也为非 X86 架构用户提供了 Box86/64、Qemu User 的安装方式
当前支持 amd64、arm64、mips64el、loong64(新世界)、loongarch64(旧世界)、riscv64
程序界面:
三、创建和配置 wine 容器
1. 先理解 2 个重要的环境变量
(1) WINEARCH
WINEARCH 可以指定要支持的 Windows 体系结构。对应的值为 win32(仅支持32位应用程序)或win64(在 WoW64 模式下支持 64 位应用程序和 32 位应用)。在 Wine 容器创建时设置,之后无法更改。如不指定 WINEARCH ,则通常会默认为当前主机系统的体系架构。目前 wine 容器在 win32 下运行较为稳定一些。
(2) WINEPREFIX
WINEPREFIX 可以指定容器的路径,不指定时默认容器路径为 ~/.wine
。建议把不同的 Windows 程序分给不同的 WINEPREFIX,便于打包和隔离。不过,当你要启动这个 Windows 程序前也需要指定对应的 WINEPREFIX。
2.创建并初始化 wine 容器
刚才已经用 winetricks-zh 创建了一个容器(~/.winehy),wine 自带的创建容器的标准命令是:WINEARCH=系统位数 WINEPREFIX=容器的路径 winecfg
,如:
$ WINEARCH=win32 WINEPREFIX=~/.winehy winecfg
这条命令首先指定容器系统的体系架构为 win32,容器路径为 ~/.winehy
,然后执行创建和初始化容器。容器创建完后,会自动在容器路径(~/.winehy)下创建类似于在 Windows 中的虚拟设备(dosdevices)、虚拟C盘驱动器(drive_c)以及注册表文件(*.reg)。
$ ls ~/.winehy/ #查看容器内文件
dosdevices drive_c system.reg userdef.reg user.reg
之后,会自动开启 wine 配置窗口,该窗口允许您定制 wine 的各种设置,其中包括 Windows 版本,DLL 替换,显示设置,驱动器映射,以及应用程序的特定设置等。
如不指定环境变量,也就是直接用 winecfg
则会使用默认的环境变量,即默认为主机系统的体系架构,容器路径则默认为~/.wine
。
wine 首次创建和初始化容器时会要求下载插件wine-mono
(.net 开源方案)和wine-gecko
(ie HTML开源方案),但如果我们之前已经将这 2个插件下载和复制到了 wine 缓存目录~./cache/wine
中,就会自动安装,而不会出现弹窗了,文章后面部分有介绍。
如果配置已经存在的容器,则只需使用 WINEPREFIX=容器的路径 winecfg
命令即可,如:
$ WINEPREFIX=~/.wine-h y winecfg
3.winetricks 命令安装 wine 应用
这里要用到 winetricks 或 winetricks-zh 工具,在终端输入 winetricks-zh 应用名称
命令,可以将读取应用所对应的verb文件,进而安装应用。这里的应用可以是字体文件、可以是动态链接库(dll)、也可以是软件。
安装命令:
WINEPREFIX=path/to/wine winetricks-zh 应用名称 # 如 WINEPREFIX=~/.winehy winetricks-zh riched20
winetricks 安装 wine 应用大概的处理过程:
- 查找应用对应的 verb 文件
- 根据 verb 文件,从 winetricks 缓存目录
~/.cache/winetricks
中获取所需资源,如果没有则根据 verb 文件中的地址进行下载 - 处理缓存中的文件(比如执行解压、写入注册表、注册dll等操作)
重要应用
基础库
库名 | 说明 | 备注 |
---|---|---|
gdiplus | 微软 GDI+(Microsoft,2011) | 加载 gdiplus.dll ( 须安装 corefonts,及解包 win7sp1/windows6.1-KB976932-X86.exe ) |
riched20 | 微软 riched20 | 加载riched20.dll( 解包 ~/.cache/winetricks/win2ksp4/W2KSP4_EN.EXE )和 msls31.dll( 解包 ~/.cache/winetricks/msls31/InstMsiW.exe ) |
riched30 | 微软 riched30 | 加载riched30.dll(需安装 riched20,及解包 ~/.cache/winetricks/riched30/InstMsiA.exe) |
重要字体
字体包名 | 说明 | 备注 |
---|---|---|
corefonts | 微软 Arial, Courier, Times 字体 | (官方下载困难) |
tahoma | 微软 Tahoma 字体 (not part of corefonts) | |
liberation | Red Hat Liberation 字体 (Sans, Serif, Mono) |
其他常用
应用名 | 说明 | |
---|---|---|
dxvk | Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (latest) (Philip Rebohle, 2023) | |
colorprofile | 标准 RGB 颜色配置文件 | |
fontfix | Fix bad fonts which cause crash in some apps (e.g. .net). | |
vb3run | 微软 Visual Basic 3 运行时 | |
vb4run | 微软 Visual Basic 4 运行时 | |
vb5run | 微软 Visual Basic 5 运行时 | |
vb6run | 微软 Visual Basic 6 运行时 | |
mfc40 | 微软 mfc40 (Microsoft Foundation Classes from Visual C++ 4) | |
vcrun6 | 微软 Visual C++ 6 SP4 运行库 (mfc42, msvcp60, msvcirt) (Microsoft, 2000) | |
vcrun6sp6 | 微软 Visual C++ 6 SP6 运行库 (with fixes in ATL and MFC) (Microsoft, 2004) | |
vjrun20 | 微软 MS Visual J# 2.0 SE 运行库 (requires dotnet20) (Microsoft, 2007) | |
vcrun2003 | 微软 Visual C++ 2003 运行库 (mfc71.dll,msvcp71.dll,msvcr71.dll) | |
vcrun2005 | 微软 Visual C++ 2005 运行库 (mfc80.dll,msvcp80.dll,msvcr80.dll) | |
vcrun2008 | 微软 Visual C++ 2008 运行库 (mfc90,msvcp90,msvcr90) | |
vcrun2010 | 微软 Visual C++ 2010 运行库 (mfc100,msvcp100,msvcr100) | |
vcrun2012 | 微软 Visual C++ 2012 运行库 (atl110,mfc110,mfc110u,msvcp110,msvcr110,vcomp110) | |
vcrun2013 | 微软 Visual C++ 2013 运行库 (mfc120,mfc120u,msvcp120,msvcr120,vcomp120) | |
vcrun2022 | 微软 Visual C++ 2015-2022 运行库 | |
msi2 | 微软 Installer 2.0 | |
msls31 | 微软 Line Services 3.1 (needed by native riched?) | |
msxml3 | 微软 XML version 3 | |
msxml4 | 微软 XML version 4 | |
msxml6 | 微软 XML version 6 | |
divx | divx 视频编码 | |
ffdshow | ffdshow 视频编码 | |
xvid | xvid 视频编码 | |
dotnet11 | 微软 .NET 1.1 | |
dotnet20 | 微软 .NET 2.0 |
DXVK 是一个基于 Vulkan 的 Direct3D 9/10/11 翻译层,它允许用户在 Linux 系统上通过 Wine 运行 3D 应用程序。无论是游戏、图形设计软件还是其他依赖 Direct3D 的应用,DXVK 都能帮助你在 Linux 上获得流畅的体验。
winetricks-zh 常用命令
winetricks-zh apps list # 查看应用
winetricks-zh dlls list # 查看动态库
winetricks-zh fonts list # 查看字体
winetricks games list # 查看游戏
winetricks-zh benchmarks list # 查看benchmarks
winetricks-zh settings list # 查看可设置的参数
四、使用 wine 容器
因为 wine 安装 windows 程序是在容器中进行的,所以要时刻注意我们的程序是安装在哪个容器,以及我们是在哪个容器中启动程序的。
1.安装 Windows 程序
(1) 首先下载一个32位的安装包
这里以 事业单位图片压缩软件 安装包为例。
(2) 打开终端,切换到安装包所在路径,输入如下命令:
WINEPREFIX=~/.winehy wine 事业单位图片压缩软件安装包.exe # 这里我们选择了 ~/.winehy 这个容器进行安装
2.运行 Windows 程序
安装完后,可以在开始菜单找到这个程序进行打开。但因为他是在容器中运行的,容器路径和我们熟悉的物理路径还是有所不同的,只有理解了容器路径,才能更加清楚程序安装的过程。
拿上面的程序安装为例解释路径对应关系:
- 我们使用的是 winehy 这个容器,物理路径是
~/.winehy
- 该程序在容器内(windows环境)默认安装的位置)是
c:/SYDJ_TPYS/
(注意:通常软件默认安装在c:/Program Files/
下),而在 linux 系统的物理路径则是:~/.winehy/drive_c/SYDJ_TPYS
(1) 使用命令直接打开:
打开软件的命令语法是 wine [start] 程序路径/程序名.exe 参数
这里的程序路径有 2 种表示方法,分别对应的是容器路径和物理路径:
a.使用容器内程序的路径打开
$ WINEPREFIX=~/.winehy wine "c:/SYDJ_TPYS/事业单位图片压缩.exe"
b.使用程序的物理路径打开
$ WINEPREFIX=~/.winehy wine ~/.winehy/drive_c/SYDJ_TPYS/事业单位图片压缩.exe
上面的命令,都指定了容器,这是为什么呢?不指定可不可以呢?也可以,不过不指定的话默认是用 ~/.wine
这个容器来调用程序。
(2) 通过 winefile
命令打开 wine 文件管理器,然后定位到所需程序,双击打开。
我应该将这个第2点放前面的,不过,放这里的话,可能会对加深第 1 点中这个路径的理解。
$ WINEPREFIX=~/.winehy winefile
(3) 通过桌面快捷方式打开
在桌面上创建一个"程序名.desktop"的文件,添加可执行权限(chmod +x 程序名.desktop),内容编辑格式大体如下:
[Desktop Entry]
Name=程序名
Exec=env WINEPREFIX="容器路径" wine "wine容器内的程序路径"
Type=Application
StartupNotify=true
Icon=桌面图标路径
顺便说一下这个软件将照片压缩后存放的物理路径是:~/.winehy/drive_c/SYDJ_TPYS/pictures
,如果经常用,可以创建一个软链接到桌面。
$ ln -s ~/.winehy/drive_c/SYDJ_TPYS/pictures/ ~/桌面/pictures
(4) 用 wine 运行器管理程序
3.安装绿色免安装版 windows 程序
1) 下载软件包并解压,切换到软件目录的父目录,并在该目录打开终端
打开终端后,我们查看一下该程序所包含的文件
$ tree
2) 将整个目录复制到容器C盘的 Program Files 目录(物理路径为:~/.wine/drive_c/Program Files)
$ cp -r PDFShaper/ ~/.wine/drive_c/Program\ Files/
1) 终端目录切换到 ~/.wine/drive_c/Program Files/PDFShaper
$ cd ~/.wine/drive_c/Program\ Files/PDFShaper/
4) 执行命令运行程序
$ wine PDFShaper.exe
五、wine 子程序
wine 子程序对应了 windows 环境中的一些系统程序,可以通过 dpkg -L winehq-stable | grep bin
大概了解 wine 有哪些命令(子程序并不全在此)
$ dpkg -L winehq-stable | grep bin/
/usr/bin/function_grep.pl
/usr/bin/msidb
/usr/bin/msiexec
/usr/bin/notepad
/usr/bin/regedit
/usr/bin/regsvr32
/usr/bin/widl
/usr/bin/wine
/usr/bin/wine-preloader
/usr/bin/wine64
/usr/bin/wine64-preloader
/usr/bin/wineboot
/usr/bin/winebuild
/usr/bin/winecfg
/usr/bin/wineconsole
/usr/bin/winecpp
/usr/bin/winedbg
/usr/bin/winedump
/usr/bin/winefile
/usr/bin/wineg++
/usr/bin/winegcc
/usr/bin/winemaker
/usr/bin/winemine
/usr/bin/winepath
/usr/bin/wineserver
/usr/bin/wmc
/usr/bin/wrc
几个子程序命令
$ winecfg # wine配置窗口
$ wineconsole # cmd终端窗口
$ winefile # 文件管理器
$ wineboot # 重启容器
$ winemine # 扫雷游戏
$ wine regedit # 注册表
$ wine regsvr32 XXX.dll # 在注册表中注册 OLE 组件
$ wine rundll32 # 加载 DLL 并运行带有指定参数的入口点
$ wine control # 控制面板
$ wine taskmgr # 任务管理器
$ wine cmd # 显示 cmd 命令提示符
$ wine notepad # 记事本
$ wine clock # 时钟
$ wine uninstaller # 卸载面板
$ wine msiexec # 安装msi文件
$ wine explorer # 资源管理器
$ wine oleview # 浏览和探索 COM 对象以及配置 DCOM
$ wine progman # 程序管理器
$ wine iexplore # ie浏览器
$ wine winhelp # 帮助查看器
$ wine winhlp32 # 帮助查看器32位
六、升级到开发版
不喜欢稳定版,希望体验一下新的功能?可以卸载稳定版,安装开发版。
1.卸载 winehq-stable
sudo apt remove winehq-stable # 删除稳定版
sudo apt autoremove # 自动删除不要的软件
dpkg -l | grep ^rc | awk '{print $2}' | xargs sudo dpkg -P #清除配置文件
2.安装开发版
sudo apt install winehq-devel # 安装开发版
wget https://mirrors.ustc.edu.cn/wine/wine/wine-mono/9.4.0/wine-mono-9.4.0-x86.msi #下载开发版对应的 mono,通常为最新的那个mono
cp wine-mono-9.4.0-x86.msi ~/.cache/wine/ #复制到缓存中,避免每次初始化容器时提示缺少 mono
七、wine 其他使用技巧
1. 提示加载 libvulkan.so.1.
失败:
如如下所示的错误提示:
0074:err:vulkan:vulkan_init_once Failed to load libvulkan.so.1
0074:err:xrandr:vulkan_init_once Failed to load libvulkan.so.1
一般是缺少程序运行所需的 Vulkan 专有驱动程序和支持。通常需要安装显卡驱动以及对应的 Vulkan API。
如果你使用的是 AMD/Intel 显卡,可以尝试运行下面命令:
sudo apt install libgl1-mesa-dri:i386 mesa-vulkan-drivers mesa-vulkan-drivers:i386
如果你使用的是 Nvidia 显卡,可以尝试下面命令:
sudo apt install -y nvidia-driver-version libvulkan1 libvulkan1:i386
2. 如何提高 winetricks-zh 命令安装应用的速度?
通过 winetricks-zh 命令安装应用的同仁们应该感受到了那种无法获取资源的痛苦了,这里提供一些常用的缓存资源,我们只要将其复制到 ~/.cache/winetricks/ 对应的库文件目录下,然后再去安装相应的应用,就会无需下载资源,从而实现快速安装了。
$ tree
.
├── d3dcompiler_47 # dxvk 资源3/3
│ ├── d3dcompiler_47_32.dll
│ └── d3dcompiler_47.dll
├── directx9 # dxvk 资源2/3
│ └── directx_Jun2010_redist.exe
├── dxvk # dxvk 资源1/3
│ └── dxvk-2.5.2.tar.gz
├── baekmuk # baekmuk 字体资源
│ └── fonts-baekmuk_2.2.orig.tar.gz
├── colorprofile
│ └── ColorProfile.exe
├── corefonts # corefonts 字体资源
│ ├── andale32.exe
│ ├── arial32.exe
│ ├── arialb32.exe
│ ├── comic32.exe
│ ├── courie32.exe
│ ├── georgi32.exe
│ ├── impact32.exe
│ ├── times32.exe
│ ├── trebuc32.exe
│ ├── verdan32.exe
│ ├── wd97vwr32.exe
│ └── webdin32.exe
├── sourcehansans # sourcehansans 字体资源
│ └── SourceHanSans.ttc.zip
├── tahoma # tahoma 字体资源
│ └── IELPKTH.CAB
├── liberation # liberation 字体资源
│ └── liberation-fonts-ttf-1.07.4.tar.gz
├── msls31 # riched20 资源1/2
│ └── InstMsiW.exe
├── win2ksp4 # riched20 资源2/2
│ └── W2KSP4_EN.EXE
├── riched30 # riched30 资源
│ └── InstMsiA.exe
├── vcrun2022 # vcrun2022 资源
│ └── vc_redist.x86.exe
└── win7sp1 # gdiplus 资源
└── windows6.1-KB976932-X86.exe
参考文档:
Ubuntu WineGuide: https://wiki.ubuntu.org.cn/WineGuide
deepin Wine安装使用: https://bbs.deepin.org/zh/post/174950
winehq wiki: https://wiki.winehq.org/FAQ
暂无留言