Wine编译环境搭建及使用完整流程详细笔记

1. 背景及资源文件下载1.1 背景说明(实现目标)1.2 VMWare下载地址:1.3 Debian安装文件地址1.34 Ubuntu安装文件地址1.35 编译好的可执行wine直接下载1.36 winetricks下载1.5 Wine源码下载地址1.5.1 Web下载地址1.5.2 Git下载地址

2. 常用文档2.1 Wine Document2.2 Build Wine Document

3. 清华源配置Apt 包镜像库4. 安装必要资源包5. 用debootstrap做环境隔离(可选)5.1 基本环境安装5.2 安装编译依赖包

6. 安装docker做环境隔离(可选)6.1 卸载旧版docker6.2 允许apt使用https6.3 下载Docker官方GPG密钥6.4 添加安装源6.4.1 先确认系统版本信息6.4.2 确认处理器和软件的架构信息6.4.3 编辑apt配置源的文件

6.5 用apt安装docker6.6 docker下安装debian10系统6.7 docker下载过慢或卡住问题解决6.7.1 新建一个docker目录:6.7.2 添加配置文件到docker目录6.7.3 将镜像和docker重启

6.8 启动docker下的容器debian6.9 带界面的docker debian容器6.10 容器与宿主机文件传输6.11 docker使用必备需知6.11.1 查看已创建的容器列表6.11.2 启动一个已存在容器6.11.3 进入一个已启动的容器6.11.4 删除一个已创建的容器

7. 磁盘空间扩展8. 编译wine源码(32和64位兼容)8.1 添加32位架构的支持8.2 安装编译所需的依赖包8.3 获取wine编译为WoW648.3.1 编译64位wine8.3.2 编译32位wine

9. 使用编译好的wine9.1 在容器系统中安装wine9.2 在容器系统中运行winecfg9.2 在容器系统中运行winetricks(可选)9.3 通过wine运行一个exe应用程序

1. 背景及资源文件下载

1.1 背景说明(实现目标)

本教程记录的是基于i7CPU的MacBookPro电脑、为了不影响mac系统环境、安装Vmware虚拟机、Vmware上安装的是debian12的系统、基于debian12系统安装了docker、docker容器安装debian10、基于debian10配置编译环境进行编译和测试、可跳跃查看。

1.2 VMWare下载地址:

Linux/Windows:https://www.vmware.com/products/workstation-pro.html MacOS:https://www.vmware.com/products/fusion.html

1.3 Debian安装文件地址

选择安装64位的系统 https:/www.debian.org/download

1.34 Ubuntu安装文件地址

https://cn.ubuntu.com/download/desktop 如果是Mac M1 M2芯片可以用Ubuntu

1.35 编译好的可执行wine直接下载

如果只是想测试一下wine的不同版本的运行效果,并不想自己编译的情况下,可以直接下载已经编译好的不同wine的版本用来测试想要运行的应用: wine6.0 可直接运行版本下载 wine7.1 可直接运行版本下载 wine8.5 可直接运行版本下载 wine9.7 可直接运行版本下载

1.36 winetricks下载

为了一些不能墙的人下载方便,下边是winetricks的完整包: Winetricks-2024版本下载

1.5 Wine源码下载地址

1.5.1 Web下载地址

https://www.winehq.org/

1.5.2 Git下载地址

https://gitlab.winehq.org/wine/wine

2. 常用文档

2.1 Wine Document

https://www.winehq.org/documentation

2.2 Build Wine Document

https://wiki.winehq.org/Building_Wine#Satisfying_Build_Dependencies

3. 清华源配置Apt 包镜像库

debian和ubuntu的地址: https://mirrors.tuna.tsinghua.edu.cn/help/debian/ https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 将下面文件备份后, 上边的deb全部copy到该文件中

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak

vi sources.list

sudo cp ./sources.list /etc/apt/sources.list

更新apt镜像列表

sudo apt-get update

sudo apt-get upgrade

4. 安装必要资源包

为了使用vmware共享剪切板,先将这两个安装后重启虚拟机

sudo apt install open-vm-tools

sudo apt install open-vm-tools-desktop

5. 用debootstrap做环境隔离(可选)

5.1 基本环境安装

debootstrap是一套基本的系统(根文件系统)。生成的目录符合Linux文件系统标准(FHS),即包含了/boot、/etc、/bin、/usr等等目录,但它比发行版本的Linux体积小很多 安装debootstrap

sudo apt-get install debootstrap

sudo debootstrap --arch amd64 bullseye ~/arch/debian https://mirrors.tuna.tsinghua.edu.cn/debian/

sudo debootstrap --variant=buildd --arch amd64 bullseye ~/arch/debian https://mirrors.tuna.tsinghua.edu.cn/debian/

安装成功后,进入目录切换环境

cd arche/debian

sudo chroot .

有时中文会有问题、以英文环境运行某些命令

env LANGUAGE=en

开启32位支持

dpkg --add-architecture i386

5.2 安装编译依赖包

安装https证书文件

apt install apt-transport-https ca-certificates

修改/etc/apt/sources.list

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free

# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb https://security.debian.org/debian-security bullseye-security main contrib non-free

# deb-src https://security.debian.org/debian-security bullseye-security main contrib non-free

更新apt源

apt update

安装依赖包

sudo apt install flex bison gcc make gcc-mingw-w64 libasound2-dev libpulse-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgnutls28-dev libjpeg62-turbo-dev libpng-dev libtiff-dev libunwind-dev libx11-dev libxml2-dev libxslt1-dev libfaudio-dev libgstreamer1.0-dev libmpg123-dev libosmesa6-dev libudev-dev libvkd3d-dev libvulkan-dev libcapi20-dev liblcms2-dev libcups2-dev libgphoto2-dev libsane-dev libgsm1-dev libkrb5-dev libldap2-dev ocl-icd-opencl-dev libpcap-dev libusb-1.0-0-dev libv4l-dev libopenal-dev libjxr-dev libasound2-dev:i386 libpulse-dev:i386 libdbus-1-dev:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libgnutls28-dev:i386 libjpeg62-turbo-dev:i386 libpng-dev:i386 libtiff-dev:i386 libunwind-dev:i386 libx11-dev:i386 libxml2-dev:i386 libxslt1-dev:i386 libfaudio-dev:i386 libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev:i386 libosmesa6-dev:i386 libsdl2-dev:i386 libudev-dev:i386 libvkd3d-dev:i386 libvulkan-dev:i386 libcapi20-dev:i386 liblcms2-dev:i386 libcups2-dev:i386 libgphoto2-dev:i386 libsane-dev:i386 libgsm1-dev:i386 libkrb5-dev:i386 libldap2-dev:i386 ocl-icd-opencl-dev:i386 libpcap-dev:i386 libusb-1.0-0-dev:i386 libv4l-dev:i386 libopenal-dev:i386 libjxr-dev:i386

如果在执行 configure时有如下错误提示:

configure: error: Cannot build a 32-bit program, you need to install 32-bit development libraries.

还需要安装如下库后再次执行

apt-get install gcc-multilib g++-multilib

再次执行 configure

configure: Finished. Do 'make' to compile Wine.

6. 安装docker做环境隔离(可选)

6.1 卸载旧版docker

不确定是否已经安装过,必须先尝试卸载旧版

sudo apt-get remove docker docker-engine docker.io containerd runc

6.2 允许apt使用https

apt install \

apt-transport-https \

ca-certificates \

curl \

gnupg \

lsb-release

6.3 下载Docker官方GPG密钥

先安装curl再用curl下载

sudo apt-get install curl

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

6.4 添加安装源

6.4.1 先确认系统版本信息

cat /etc/os-release

可以看到code name:bullseye

PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"

也可以通过lsb-release -a命令来查看

6.4.2 确认处理器和软件的架构信息

uname -a

如果下列i686或者i386, 就说明是32位系统,下边的步骤不用看了,你可以考虑用vmware,选择64位架构重新安装系统,也可以找其它的32位安装的方式、如果是Mac M1/M2的芯片、需要安装Arm版本、本文不做介绍;

Linux debian 5.10.0-23-686-pae #1 SMP Debian 5.10.179-1 (2023-05-12) i686 GNU/Linux

如果是x86_64(amd64)的系统,恭喜你,一切安装流程将更加顺利

6.4.3 编辑apt配置源的文件

编辑sudo vi /etc/apt/sources.list文件,最后一行添加阿里云的镜像,其中的arch是cpu架构,sign-by是6.3节下载的密钥路径

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb http://security.debian.org/debian-security bullseye-security main contrib non-free

deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian/ bullseye stable

添加完成后,执行更新命令

sudo apt-get update

显示结果如下:

获取:1 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm InRelease [147 kB]

获取:2 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates InRelease [52.1 kB]

获取:3 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-backports InRelease [49.7 kB]

获取:4 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm/main amd64 Packages [8,904 kB]

命中:5 https://security.debian.org/debian-security bookworm-security InRelease

6.5 用apt安装docker

apt install docker-ce docker-ce-cli containerd.io

6.6 docker下安装debian10系统

搜索docker下的debian镜像

sudo docker search debian

下载debian10的镜像文件

sudo docker pull debian:10

6.7 docker下载过慢或卡住问题解决

docker下安装debian10系统如果在国内可能会出现下载过慢或卡住不动的情况,这时我们可以替换阿里的镜像

6.7.1 新建一个docker目录:

sudo mkdir -p /etc/docker

6.7.2 添加配置文件到docker目录

在这个目录里daemon.json文件配置一个阿里云的镜像加速地址:

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://mjpmak3l.mirror.aliyuncs.com"]

}

EOF

6.7.3 将镜像和docker重启

sudo systemctl daemon-reload

sudo systemctl restart docker

重启后可以用docker pull尝试再次下载, 就可以成功了

6.8 启动docker下的容器debian

启动镜像文件debian:10,会得到容器编号

sudo docker run -itd debian:10 /bin/bash

查看debian10在容器中的情况

sudo docker ps

使用attach命令进入容器(也可以使用ssh、nsenter、exec)

sudo docker attach ada5094c89419e344b727d7d053fc9bd384a10265b0fc0e12008ed25281dc368

下边是运行效果截图、可以看到我们进入容器后系统的版本信息 退出容器可以用 exit 命令

但是这样做并不是我们想要的,因为当电脑重启后,容器中的配置和内容会全部丢失,因些我们需要创建与宿主机关系的卷,来达到宿主机重启后保留容器内的数据和配置 首先我在宿主机创建了docker_debian10,在容器debian10中创建了project目录,用如下方式启动使之关联:

docker run -itd -v /home/xuanwenchao/docker_debian10:/project debian:10 /bin/bash

然后再次进入容器中的debian10系统

6.9 带界面的docker debian容器

docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/xuanwenchao/docker_debian10:/project debian:10 /bin/bash

解释说明:

-it:以交互式模式运行容器并分配一个终端。 –rm:容器退出后自动删除容器。(这里不添加这个参数) -e DISPLAY=$DISPLAY:将宿主机的 DISPLAY 环境变量传递给容器,用于 X11 转发。 -v /tmp/.X11-unix:/tmp/.X11-unix:将宿主机的 X11 服务器套接字目录映射到容器内的相同路径,以便容器可以显示图形界面。 -v /home/xuanwenchao/docker_debian10:/project:将宿主机的 /home/xuanwenchao/docker_debian10 目录映射到容器内的 /project 目录,以便容器可以访问该目录下的文件。 debian:10:使用 debian:10 镜像。 /bin/bash:在容器内执行 Bash 终端。

为容器安装必要的X11服务器工具包

apt update

apt install -y xauth x11-apps

apt install -y x11-xserver-utils

export DISPLAY=:0

xhost +local:root

解释说明:

xauth 是 X Window System 的授权机制,用于控制 X 服务器和客户端之间的身份验证和授权。它通过生成和管理授权数据来确保安全访问 X 服务器。

x11-apps 是一个包含多个 X11 应用程序的软件包。这些应用程序提供了一些基本的图形界面工具和实用程序,如终端模拟器、时钟、绘图工具等,用于在 X Window System 环境中进行交互和操作。

安装 xauth 和 x11-apps 可以提供必要的工具和支持,使得在 X Window System 下的图形界面环境中能够正常运行和交互。这些工具对于需要使用图形界面的应用程序或执行一些与 X11 相关的操作非常有用。

xhost +local:root 是一个 X Window System 的命令,用于允许本地 root 用户通过 X 协议访问 X 服务器。通过执行这个命令,X 服务器会将本地 root 用户添加到访问控制列表(Access Control List,简称 ACL),从而允许其连接和显示图形界面。

安装成功后,在容器内执行如下命令、可以测试一下

xeyes

看到如下效果就是成功了 如果宿主机重新启动时,再次进入容器之前,确保x11服务器可访问

xhost +

使用xhost +命令开放X11服务器的访问权限

6.10 容器与宿主机文件传输

为容器debian10制作新的sources.list文件,并将文件copy到容器的debian系统中

sudo docker cp ./sources.list ada5094c89419e344b727d7d053fc9bd384a10265b0fc0e12008ed25281dc368:/etc/apt/sources.list

结果显示如下

Successfully copied 2.56kB to ada5094c89419e344b727d7d053fc9bd384a10265b0fc0e12008ed25281dc368:/etc/apt/sources.list

6.11 docker使用必备需知

docker容器第一次启动成功后,这个容器就创建好了,不需要每次重新创建一个新的容器

6.11.1 查看已创建的容器列表

docker ps -a

6.11.2 启动一个已存在容器

docker start

6.11.3 进入一个已启动的容器

sudo docker attach

6.11.4 删除一个已创建的容器

sudo docker rm

7. 磁盘空间扩展

在编译之前一定要提前确认是否有足够的磁盘空间, 如果可用空间少于5G最好提前做好扩展,虚拟机默认分配20G,如果编译过程中发现空间不足很尴尬,会导致系统启动出错、就像下图这样:

如果想要不丢失数据扩展vmware/debian12的磁盘空间,首先要在vmware中操作,我将原来的20G扩大到35G 但是扩展之后,启动debian12系统、你依然可以看到可用空间没有变化 使用sudo fdisk -l 命令查看当前状态

sudo fdisk -l

可以看到空间没有变化、有一行红色的提示语、意思是说: GPT(GUID 分区表)中的 PMBR(Protective MBR)大小不匹配。PMBR 是用来保护 GPT 的主引导记录(Master Boot Record),以防止意外修改或破坏分区表,说白了,就是后来增加的空间没有被用上。 输入sudo fdisk

sudo fdisk /dev/sda

进入fdisk的命令行模式,输入m显示帮助菜单 输入p查看当前的分区表、当前有三个分区sda1、sda2、sda3 为了不影响现有系统中的数据、只能创建一个新的分区、输入n ,前边有三个分区、新的分区编号用4、然后需要告诉起动和结束的sector位置、如果想全部空间都用上就直接回车就可以了、创建完成后再次输入p 可以看到分区有四个了、输入w保存分区退出。 接下来对新创建的分区进行格式化 接下来走一波操作就可以成功了;

在设备 /dev/sda4 上创建物理卷(Physical Volume)。

sudo pvcreate /dev/sda4

将 /dev/sda4 分区添加到逻辑卷组 debian-vg 中:

sudo vgextend debian-vg /dev/sda4

扩展 debian-vg 卷组中的逻辑卷 root,以利用新添加的分区空间:

sudo lvextend -r -l +100%FREE /dev/debian-vg/root

下边的运行的效果图 再次查看可用空间、可以看到扩展成功了

8. 编译wine源码(32和64位兼容)

8.1 添加32位架构的支持

因为当前是64位系统、首先添加对32位架构的支持,注意如果容器中只有一个root用户,不用添加sudo

sudo dpkg --add-architecture i386

sudo apt update

运行效果如下:

8.2 安装编译所需的依赖包

按官方文档给出的信息:https://wiki.winehq.org/Building_Wine 执行批量安装命令

sudo apt install flex bison gcc make gcc-mingw-w64 libasound2-dev libpulse-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgnutls28-dev libjpeg62-turbo-dev libpng-dev libtiff-dev libunwind-dev libx11-dev libxml2-dev libxslt1-dev libfaudio-dev libgstreamer1.0-dev libmpg123-dev libosmesa6-dev libudev-dev libvkd3d-dev libvulkan-dev libcapi20-dev liblcms2-dev libcups2-dev libgphoto2-dev libsane-dev libgsm1-dev libkrb5-dev libldap2-dev ocl-icd-opencl-dev libpcap-dev libusb-1.0-0-dev libv4l-dev libopenal-dev libjxr-dev libasound2-dev:i386 libpulse-dev:i386 libdbus-1-dev:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libgnutls28-dev:i386 libjpeg62-turbo-dev:i386 libpng-dev:i386 libtiff-dev:i386 libunwind-dev:i386 libx11-dev:i386 libxml2-dev:i386 libxslt1-dev:i386 libfaudio-dev:i386 libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev:i386 libosmesa6-dev:i386 libsdl2-dev:i386 libudev-dev:i386 libvkd3d-dev:i386 libvulkan-dev:i386 libcapi20-dev:i386 liblcms2-dev:i386 libcups2-dev:i386 libgphoto2-dev:i386 libsane-dev:i386 libgsm1-dev:i386 libkrb5-dev:i386 libldap2-dev:i386 ocl-icd-opencl-dev:i386 libpcap-dev:i386 libusb-1.0-0-dev:i386 libv4l-dev:i386 libopenal-dev:i386 libjxr-dev:i386

20230725 VERSION

apt install gcc-multilib gcc-mingw-w64 libasound2-dev libpulse-dev libdbus-1-dev libfontconfig-dev libfreetype-dev libgnutls28-dev libgl-dev libunwind-dev libx11-dev libxcomposite-dev libxcursor-dev

libxfixes-dev libxi-dev libxrandr-dev libxrender-dev libxext-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libosmesa6-dev libsdl2-dev libudev-dev libvulkan-dev libcapi20-dev libcups2-dev libgphoto2-dev libsane-dev libkrb5-dev samba-dev ocl-icd-opencl-dev libpcap-dev libusb-1.0-0-dev libv4l-dev libxxf86vm-dev libxinerama-dev gcc-multilib:i386 gcc-mingw-w64:i386 libasound2-dev:i386 libpulse-dev:i386 libdbus-1-dev:i386 libfontconfig-dev:i386 libfreetype-dev:i386 libgnutls28-dev:i386 libgl-dev:i386 libunwind-dev:i386 libx11-dev:i386 libxcomposite-dev:i386 libxcursor-dev:i386 libxfixes-dev:i386 libxi-dev:i386 libxrandr-dev:i386 libxrender-dev:i386 libxext-dev:i386 libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev:i386 libosmesa6-dev:i386 libsdl2-dev:i386 libudev-dev:i386 libvulkan-dev:i386 libcapi20-dev:i386 libcups2-dev:i386 libgphoto2-dev:i386 libsane-dev:i386 libkrb5-dev samba-dev:i386 ocl-icd-opencl-dev:i386 libpcap-dev:i386 libusb-1.0-0-dev:i386 libv4l-dev:i386 libxxf86vm-dev:i386 libxinerama-dev:i386

然后就等待安装完成

8.3 获取wine编译为WoW64

WoW64(Windows 32-bit on Windows 64-bit)是一种Windows操作系统的子系统,它允许在64位版本的Windows操作系统上运行32位的应用程序和系统组件。它为兼容性目的而设计,以确保32位的应用程序能够在64位的Windows操作系统上正常运行。

创建两个新的目录,分别是win32和win64,安装git获取代码,将wine完整的代码分别copy一份到新目录中

apt install git

git clone https://gitlab.winehq.org/wine/wine

mkdir win64

mkdir win32

cp -a ./wine ./win64

cp -a ./wine ./win32

8.3.1 编译64位wine

因为64位所需的依赖包与32位是不一样的,因此每次编译不同架构版本之前,需要重新安装依赖包 同时将不需要依赖包删除掉

cd win64/wine

apt install libgstreamer-plugins-base1.0-dev libsdl2-dev

apt autoremove

执行configure查看结果是否有错误

./configure --enable-win64

如果执行configure没有错误、就可以make了,为了提高编译速度,编译前可以使用lscp命令确认CPU的核心数量

lscpu

如果Cpu(s)显示数量为1则说明只有一个内核,如果硬件是多核的,这个值可以用vmware来自行分配

如果是多核可以使用 make -jN 命令提高编译速度

make -j2

8.3.2 编译32位wine

查询本机架构:

dpkg --print-architecture

amd64

打开本机多架构支持:

dpkg --print-foreign-architectures

i386

添加i386架构并更新:

sudo dpkg --add-architecture i386

sudo apt-get update

sudo apt-get upgrade

apt-get install gcc-multilib g++-multilib

因为64位所需的依赖包与32位是不一样的,因此每次编译不同架构版本之前,需要重新安装依赖包 同时将不需要依赖包删除掉

cd ../../win32/wine

apt install libgstreamer-plugins-base1.0-dev:i386 libsdl2-dev:i386

apt autoremove

编译32位版本wine时通过–with-wine64参数,指定了已编译完成的wine64位的目录,这样编译32位wine时,程序会注入64位版本处理32位程序所需的库, 如果不需要64位的,就不加任何参数就可以,执行configure查看结果是否有错误

./configure --with-wine64=/project/win64/wine

执行make编译32位wine,需要一点时间…

make -j2

9. 使用编译好的wine

9.1 在容器系统中安装wine

在win32/wine目录下执行安装命令、再到win64/wine下执行安装命令

make install

cd ../../win64/wine

make install

9.2 在容器系统中运行winecfg

安装完成后首选需要执行winecfg来配置环境

winecfg

配置会先在容器系统中安装Mono Mono 是一个开源的实现了 Microsoft .NET Framework 的跨平台框架。在 Wine 中,可以使用 Mono 来运行和支持基于 .NET 的应用程序。

执行 winecfg MONO 命令会打开一个专门用于配置 Mono 的窗口。

如果未检测到wine-gecko还会继续安装,容器中已经包含了,所以不需要安装了,

安装界面关闭重新回到命令行状态,再次输入winecfg 会出现Wine configuration配置界面。 配置Windows版本:在 “Applications” 选项卡中,选择合适的Windows版本,以匹配你要运行的应用程序的要求。

配置图形选项:在 “Graphics” 选项卡中,根据你的系统和需求,调整图形设置。你可以选择启用或禁用桌面集成、允许窗口管理器控制窗口和启用虚拟桌面等选项。

配置音频选项:在 “Audio” 选项卡中,选择合适的音频驱动程序,以确保应用程序在 Wine 环境中正确地播放声音。

配置库文件:在 “Libraries” 选项卡中,你可以添加或修改特定的库文件设置,以解决应用程序在 Wine 中的依赖关系或兼容性问题。例如,你可以添加某些 DLL 文件来模拟 Windows 环境中缺失的库。

配置外观和行为:在 “Desktop Integration” 和 “Staging” 选项卡中,你可以根据个人偏好进行设置,以改变 Wine 窗口的外观、行为和性能。

也可以先用默认的什么都不配置。

9.2 在容器系统中运行winetricks(可选)

首先通过apt安装winetricks然后再运行

apt-get install winetricks

winetricks

Winetricks并不是必须执行的步骤,但它是一个非常有用的工具,可以帮助你安装和配置一些常见的 Windows 组件、运行库和其他必要的依赖项,以提高在 Wine 环境下运行 Windows 程序的兼容性和性能。

使用 Winetricks,你可以轻松地安装和配置诸如 DirectX、.NET Framework、Visual C++ 运行库等常见的 Windows 组件。这些组件对于许多 Windows 程序的正确运行是必要的。

有明确目标需要时、可以通过winetricks来尝试解决。

9.3 通过wine运行一个exe应用程序

我下载了一个Notepad++的exe应用程序,我们先尝试一下运行:

root@e47effab5c82:/project# wine Notepad++_12_10031411.exe

可以看到如下错误信息:

008c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005

008c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005

008c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005

008c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005

0024:err:winediag:ntlm_check_version ntlm_auth was not found. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.

0024:err:ntlm:ntlm_LsaApInitializePackage no NTLM support, expect problems

0110:fixme:ver:GetCurrentPackageId (0350FEF0 00000000): stub

0024:fixme:richedit:editor_handle_message EM_SETLANGOPTIONS: stub

X Error of failed request: BadValue (integer parameter out of range for operation)

Major opcode of failed request: 130 (MIT-SHM)

Minor opcode of failed request: 3 (X_ShmPutImage)

Value in failed request: 0x2de

Serial number of failed request: 276

Current serial number in output stream: 284

因为缺少NTLM的支持、所以无法启动 Debian 系统中,你可以运行以下命令安装 winbind 软件包,该软件包通常提供了 ntlm_auth 工具:

apt install winbind

安装成功后再次尝试启动exe

wine Notepad++_12_10031411.exe

可以看到安装向导界面已经出现了

exe应用程序已经成功启动了。