wine是我们在Linux下运行部分Windows应用程序必不可少的工具。
接下来主要了解wine服务的工作原理、wine服务的部署以及windows应用程序在统信UOS操作系统中的安装。
1、wine是什么?
Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。
官方网站:https://www.winehq.org/
Wine 目前最新发布的稳定版是5.0.3, 开发版5.21
2、提示
Wine不是模拟Windows的工具,而是运用API转换技术实做出Linux对应到Windows相对应的函数来调用DLL(动态链接库)以运行Windows程序。
Wine可以工作在绝大多数的UNIX版本下,包括Linux, FreeBSD, 和 Solaris。另外,也有适用于Mac OS X的Wine程序。
Wine不需要Microsoft Windows系统, 因为这是一个完全由百分之百的免费代码组成的。如果有可利用的副本的话,它也可以随意地使用本地系统的DLLs。Wine的发布是完全公开源代码的,并且是免费发行的。(基于LGPL发布:GNU宽通用公共许可证)
wine是Windows应用软件与Linux内核之间的适配层,体现为一个wine服务进程(wineserver)和一组动态连接库(相当于Windows的众多DLL)。此外,wine的GUI用户界面仍依赖于X11,由动态连接库x11drv和X11服务进程构成。其中x11drv是作为wine与X11之间的界面,而X11服务进程本来就存在,因为GNOME也要通过X11服务进程操作图形界面。
在运行某个Windows应用时,系统中至少有3个进程与之有关:
(1)应用进程本身。所有对DLL的调用均在该进程的上下文中运行。需要得到wine的服务,或者通过wine间接提供的其他(特别是内核)服务时,应用进程经由Wine所提供的各种动态连接库逐层往下调用。在wine内部,这个进程往往需要通过socket和pipe与wine服务进程通信,以接受服务进程的管理和协调;另一方面又可能经由另一个动态连接库x11drv通过别的socket与X11服务进程通信,向其发送图形操作请求并接收键盘和鼠标输入。
(2)wine服务进程。其主要的作用有:提供Windows进程间通信与同步的手段;Windows进程和线程的管理,注册表服务,包括文件在内的各种W32“对象”的管理等等。
(3)X11服务进程。图形的显示,以及键盘和鼠标输入。
实际上,具体的Windows应用进程是从另一个进程,即Wine的作业装入程序wine转化过来的。用户一开始时启动的是wine,而具体的Windows程序名是个参数,是由wine为具体目标程序的运行建立起与Wine服务进程的连接、装入目标程序,并转入目标程序运行的。
wine 通过翻译系统调用、重建 Windows 系统的目录结构、提供 Windows 系统库的替代实现、提供系统服务以及提供其它常用重要应用程序(如 Internet Explorer、注册表编辑器等)的替代实现等方式在类 Unix 平台中重现了 Windows 的运行环境。因没有利用虚拟化或模拟等技术,其性能颇佳。
wine起始于 1993 年,虽然仍有诸多不足,但 Wine 已相当成熟。前不久,知名游戏发布平台 Steam 的厂商 Valve 还发布了基于 wine 的开源项目 Proton,后者可协助将 Steam 客户端及 Windows 平台下的游戏运行于 Linux 系统。
对 Vulkan 的支持,Vulkan 是一套年轻的跨平台的 3D 图形计算 API。
对 Direct3D 12 的支持,Direct3D 是 Windows 平台的 3D 图形计算 API,D3D 12 是随着 Windows 10 发布的最新大版本。
为 D3D 10 及 11 版本实现了更多特性。
支持游戏控制器(如游戏手柄等)
在 Android 中支持 High-DPI。
.NET Mono 引擎更新至 4.7.5 版本。
·
它是一个Windows兼容层,通俗的讲,就是一个Windows模拟器。这个层即提供了一个用来从Windows源进出到UNIX的开发工具包(Winelib);也提供了一个程序加载器,该加载器允许不用任何修改Windows 3.1/95/NT的二进制文件,就可以运行在Intel Unix及其衍生版本下。
Wine可以工作在绝大多数的UNIX版本下、包括Linux、 FreeBSD 和 Solaris。
当前是用操作系统版本如下:
wd1@uos:~/Desktop$ cat /etc/deepin-version
[Release]
Version=20
Type=Professional
Type[zh_CN]=专业版
Edition=Y2020E0001
Copyright=Y2020CR001
[Addition]
Milestone=
Buildid=build1
wine的安装非常简单,接下来就开始安装wine。
1、wine服务安装
统信UOS操作系统中有两种版本的wine可以安装,分别是deepin-wine和wine4.0.2。
统信UOS操作系统默认安装的是deepin-wine。目前deepin-wine也有两个版本,分别是deepin-wine和deepin-wine5。建议直接使用默认安装的deepin-wine5(如有其它需要可安装wine4.0.2)。
wine服务安装方法如下所示:
uos-PC:~# apt -y install wine
(1)winecfg
当安装了原版的wine后,如需对wine进行设置,可以执行如下命令:
uos-PC:~/.wine/drive_c/windows/Fonts# winecfg
在命令行执行上述命令之后,会出现如图1所示对话框:
如想调取windows的任务管理器,查看进程的运行状态及性能,可以执行如下命令(会出现如图2所示对话框):
root@uos-PC:/home/uos/Desktop# wine taskmgr
(2)wine其他命令
命令 |
功能 |
wine ***.exe |
exe软件安装 |
wine notepad.exe |
启动记事本应用程序 |
wine regedit |
注册表,Wine 实现了大约 90% 的 Windows 注册表管理 API。 |
wine notepad |
记事本 |
wine wmplayer |
wm播放器 |
wineboot |
重启wine |
wine uninstaller |
卸载软件 |
(3)winetricks
winetricks 一个图形化安装配置wine的工具(前提是安装原版的wine),默认的WINE环境缺少很多WIN平台的DLL库、字体等,导致安装和启动windows程序失败,而找到这些库和字体是很麻烦的事,winetricks正是为这个而生的。
1)安装
root@uos-PC:/home/uos/Desktop# apt -y install winetricks
2)启动winetricks服务,需执行如下命令:
root@uos-PC:/home/uos/Desktop# winetricks
执行完命令“winetricks ”后,窗口第一次打开,将会给你一个有 “查看帮助” 和 “安装应用”选项的菜单。一般情况下,我们选择【选择默认的wine容器】(如图3所示),这将是主要使用的选项。其他的也能用,但是不推荐使用。接下来,单机【确认】按钮,就会进入到 WINE prefix 的配置菜单,你可以在这完成所有你要使用 winetricks 完成的事情(如图4所示)。
字体一直很重要,一些应用程序没有字体就没法正常的加载。winetricks 可以轻松地安装许多常用 Windows 字体.在配置菜单中,选中【安装字体】按钮,然后单机 【确定】按钮。然后就会得到一列字体清单,它们都有着相对应的复选框。不确定需要什么字体,可以先安装一款插件corefonts,它包含了大多数 Windows 系统中应用程序所设定的字体。要安装corefonts,请选择相应的复选框(如图5所示),然后单机【确定】按钮,就会看到和在Windows下差不多的提示(如图6所示),字体就会被安装了。完成了这个插件的安装,你就会回到先前的菜单界面(如图4所示)。如需其他插件,安装步骤相同。
winetricks 加载安装 Windows 下的 .dll 文件和别的组件也十分简单。如果你需要安装的话,在菜单页(如图4所示)选择 “安装 Windows DLL 或组件”,然后单机 【确定】按钮。
窗口就会进入到另一个菜单界面,其中包含可用的 dll 和其他 Windows 组件。在相应的复选框进行选择(如图7所示),单机 【确定】按钮。脚本就会下载你选择的组件,接着通过Windows一般的安装进程进行安装。像在Windows系统上安装那样跟着提示往下走。可能会有报错信息。很多时候,Windows安装程序安装时也会报错,但是你接着会收到来自winetricks窗口的消息,说明它正在绕过此问题,这很正常。由于组件之间的相互依赖关系,也可能看不到成功安装的信息。只要确保安装完成时候,菜单页中你的选项仍旧处于被选中状态就行了。
提示:Wine 有几百个 Windows DLL 的内部实现 -- 不过,其中没有多少是完全的实现。例如,包含有用户界面相关函数的 userd32.dll 在开放源代码的 Wine 中实现了 92%。
为更好满足工作对软件的需求,可以使用wine技术安装windows系统中的软件程序。
(1)下载“酷狗音乐”
打开浏览器并访问“http://download.kugou.com/”此网址,下载“酷狗PC版”,单机【立即下载】按钮即可,如图8所示。
(2)安装“酷狗PC版”
在统信UOS系统中,从浏览器中下载的软件,默认的存储位置为登录用户家目录下的Download目录中,等前登录系统的用户为“uos”,查看浏览器软件下载方法如下:
root@uos-PC:~# ls /home/uos/Downloads/
kugou9175.exe
安装命令如下所示:
root@uos-PC:~# cd /home/uos/Downloads/
root@uos-PC:/home/uos/Downloads# wine kugou9175.exe //(文件版本号请根据实际情况修改)
执行完上述命令,会出现如图9所示对话框,直接单机【一键安装】按钮,酷狗音乐软件将自动安装。
安装完毕后,可以启动酷狗音乐软件,如图10所示。
第一次启动会发现因缺少字体而显示有问题(如图所示11),按照下列步骤配置simsun字体后,重启即可。
方法:
搜索方法:双击windows系统桌面的“此电脑”图标,接下来会出现如图13所示界面,在搜索对话框输入“simsun.ttc”后直接回车,windows系统就会进行搜索。
将ttc的字体文件拷贝至 ~/.wine/drive_c/windows/Fonts(此目录没有,需要单独创建),安装windows字体命令如下所示:
uos-PC:~# mkdir -p ~/.wine/drive_c/windows/Fonts
uos-PC:~# cp /home/uos/Desktop/simsun.ttc zh.reg
uos-PC:~/.wine/drive_c/windows/Fonts# regedit zh.reg #此命令执行后无任何反应,表示成功
“zh.reg”文件中的内容如下所示:
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"Arial"="simsun"
"Arial CE,238"="simsun"
"Arial CYR,204"="simsun"
"Arial Greek,161"="simsun"
"Arial TUR,162"="simsun"
"Courier New"="simsun"
"Courier New CE,238"="simsun"
"Courier New CYR,204"="simsun"
"Courier New Greek,161"="simsun"
"Courier New TUR,162"="simsun"
"FixedSys"="simsun"
"Helv"="simsun"
"Helvetica"="simsun"
"MS Sans Serif"="simsun"
"MS Shell Dlg"="simsun"
"MS Shell Dlg 2"="simsun"
"System"="simsun"
"Tahoma"="simsun"
"Times"="simsun"
"Times New Roman CE,238"="simsun"
"Times New Roman CYR,204"="simsun"
"Times New Roman Greek,161"="simsun"
"Times New Roman TUR,162"="simsun"
"Tms Rmn"="simsun"
在现有windows下找到url.dll以及urlmon.dll文件(参照在windows中查找字体的方法),并将两个文件拷贝至~/.wine/drive_c/windows/system32/目录下,拷贝方法如下:
root@uos-PC:/home/uos/Desktop# ls
dde-computer.desktop dde-trash.desktop simsun.ttc url.dll urlmon.dll
root@uos-PC:/home/uos/Desktop# cp url* ~/.wine/drive_c/windows/system32/
root@uos-PC:/home/uos/Desktop# reboot #重启系统
提示:wine 完全支持 Windows可执行文件( .exe 和 DLL)的二进制
(1)下载“腾讯会议Windows客户端”
打开浏览器并访问“https://meeting.tencent.com/download-center.html?from=1001”,单机网站中间的【立即下载】按钮(如图14所示),即可下载“腾讯会议Windows客户端”
(2)安装“腾讯会议Windows客户端”
查看下载的“腾讯会议Windows客户端”的方法与查看下载“酷狗PC版”的方法相同,都是如下操作:
root@uos-PC:~# ls /home/uos/Downloads/
kugou9175.exe TencentMeeting_0300000000_2.3.0.426.publish.exe
安装命令如下所示:
root@uos-PC:~# cd /home/uos/Downloads/
root@uos-PC:/home/uos/Downloads# wine TencentMeeting_0300000000_2.3.0.426.publish.exe //(请根据实际修改下载的文件名)
执行完上述命令,就会出现图15的腾讯会议安装界面,单机对话框中的【我接受】按钮;接下来会弹出图16对话框,在对话框中选择完软件的安装位置后,单机【安装】按钮,安装界面如图17所示,安装完会出现图18所示界面。
运行腾讯会议后的界面如图19所示,那就赶紧登陆腾讯会议,开个会议试试吧。
使用deep-editor编辑器查看腾讯会议桌面启动文件内容,查看方法如下:
root@uos:~# deepin-editor ~/.local/share/applications/wine/Programs/腾讯软件/腾讯会议/腾讯会议.desktop
执行完上述命令,会出现如图20所示界面,即腾讯会议桌面启动文件内容。