wine —— windows软件移植到Linux系统

导读:

wine是我们在Linux下运行部分Windows应用程序必不可少的工具。

接下来主要了解wine服务的工作原理、wine服务的部署以及windows应用程序在统信UOS操作系统中的安装。

 

一、wine服务简介

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服务的系统结构和兼容性 

1.wine系统结构

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服务进程的连接、装入目标程序,并转入目标程序运行的。

 

2、wine特性与兼容性

wine 通过翻译系统调用、重建 Windows 系统的目录结构、提供 Windows 系统库的替代实现、提供系统服务以及提供其它常用重要应用程序(如 Internet Explorer、注册表编辑器等)的替代实现等方式在类 Unix 平台中重现了 Windows 的运行环境。因没有利用虚拟化或模拟等技术,其性能颇佳。

wine起始于 1993 年,虽然仍有诸多不足,但 Wine 已相当成熟。前不久,知名游戏发布平台 Steam 的厂商 Valve 还发布了基于 wine 的开源项目 Proton,后者可协助将 Steam 客户端及 Windows 平台下的游戏运行于 Linux 系统。

 

3、wine 最显著的特性有:

对 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 版本。

·

4、wine的功能介绍:

它是一个Windows兼容层,通俗的讲,就是一个Windows模拟器。这个层即提供了一个用来从Windows源进出到UNIX的开发工具包(Winelib);也提供了一个程序加载器,该加载器允许不用任何修改Windows 3.1/95/NT的二进制文件,就可以运行在Intel Unix及其衍生版本下。

Wine可以工作在绝大多数的UNIX版本下、包括Linux、 FreeBSD 和 Solaris。

 

 

三、wine服务部署

当前是用操作系统版本如下:

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

 

2、wine服务基本配置

(1)winecfg

当安装了原版的wine后,如需对wine进行设置,可以执行如下命令:

uos-PC:~/.wine/drive_c/windows/Fonts# winecfg

在命令行执行上述命令之后,会出现如图1所示对话框:

wine —— windows软件移植到Linux系统_第1张图片 图1

 

如想调取windows的任务管理器,查看进程的运行状态及性能,可以执行如下命令(会出现如图2所示对话框):

root@uos-PC:/home/uos/Desktop# wine taskmgr
wine —— windows软件移植到Linux系统_第2张图片 图2

 

(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所示)。

 

wine —— windows软件移植到Linux系统_第3张图片 图3

 

wine —— windows软件移植到Linux系统_第4张图片 图4

 

 

字体一直很重要,一些应用程序没有字体就没法正常的加载。winetricks 可以轻松地安装许多常用 Windows 字体.在配置菜单中,选中【安装字体】按钮,然后单机 【确定】按钮。然后就会得到一列字体清单,它们都有着相对应的复选框。不确定需要什么字体,可以先安装一款插件corefonts,它包含了大多数 Windows 系统中应用程序所设定的字体。要安装corefonts,请选择相应的复选框(如图5所示),然后单机【确定】按钮,就会看到和在Windows下差不多的提示(如图6所示),字体就会被安装了。完成了这个插件的安装,你就会回到先前的菜单界面(如图4所示)。如需其他插件,安装步骤相同。

wine —— windows软件移植到Linux系统_第5张图片 图5

 

wine —— windows软件移植到Linux系统_第6张图片 图6​​​​​

 

winetricks 加载安装 Windows 下的 .dll 文件和别的组件也十分简单。如果你需要安装的话,在菜单页(如图4所示)选择 “安装 Windows DLL 或组件”,然后单机 【确定】按钮。

 

窗口就会进入到另一个菜单界面,其中包含可用的 dll 和其他 Windows 组件。在相应的复选框进行选择(如图7所示),单机 【确定】按钮。脚本就会下载你选择的组件,接着通过Windows一般的安装进程进行安装。像在Windows系统上安装那样跟着提示往下走。可能会有报错信息。很多时候,Windows安装程序安装时也会报错,但是你接着会收到来自winetricks窗口的消息,说明它正在绕过此问题,这很正常。由于组件之间的相互依赖关系,也可能看不到成功安装的信息。只要确保安装完成时候,菜单页中你的选项仍旧处于被选中状态就行了。

wine —— windows软件移植到Linux系统_第7张图片 图7

提示:Wine 有几百个 Windows DLL 的内部实现 -- 不过,其中没有多少是完全的实现。例如,包含有用户界面相关函数的 userd32.dll 在开放源代码的 Wine 中实现了 92%。

 

四、项目实战 

为更好满足工作对软件的需求,可以使用wine技术安装windows系统中的软件程序。 

 

1、安装酷狗音乐

(1)下载“酷狗音乐”

打开浏览器并访问“http://download.kugou.com/”此网址,下载“酷狗PC版”,单机【立即下载】按钮即可,如图8所示。

wine —— windows软件移植到Linux系统_第8张图片 图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所示对话框,直接单机【一键安装】按钮,酷狗音乐软件将自动安装。

 

wine —— windows软件移植到Linux系统_第9张图片 图9

 

安装完毕后,可以启动酷狗音乐软件,如图10所示。

 

wine —— windows软件移植到Linux系统_第10张图片 图10

2、 修改win e字体 

第一次启动会发现因缺少字体而显示有问题(如图所示11),按照下列步骤配置simsun字体后,重启即可。

wine —— windows软件移植到Linux系统_第11张图片 图11

 

1、下载字体

方法:

  • 打开任意浏览器,使用百度搜索“windows字体”并进行下载,如图12所示。
wine —— windows软件移植到Linux系统_第12张图片 图12
  • 从安装好的windows系统中搜索“simsun.ttc”。

搜索方法:双击windows系统桌面的“此电脑”图标,接下来会出现如图13所示界面,在搜索对话框输入“simsun.ttc”后直接回车,windows系统就会进行搜索。

wine —— windows软件移植到Linux系统_第13张图片 图13

 

 

将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"

2、使wine的软件可以连接互联网 

在现有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)的二进制

 

3、安装腾讯会议

(1)下载“腾讯会议Windows客户端”

打开浏览器并访问“https://meeting.tencent.com/download-center.html?from=1001”,单机网站中间的【立即下载】按钮(如图14所示),即可下载“腾讯会议Windows客户端”

wine —— windows软件移植到Linux系统_第14张图片 图14

(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所示界面。

wine —— windows软件移植到Linux系统_第15张图片 图15
wine —— windows软件移植到Linux系统_第16张图片 图16
wine —— windows软件移植到Linux系统_第17张图片 图17
wine —— windows软件移植到Linux系统_第18张图片 图18

 

运行腾讯会议后的界面如图19所示,那就赶紧登陆腾讯会议,开个会议试试吧。

wine —— windows软件移植到Linux系统_第19张图片 图19

 

使用deep-editor编辑器查看腾讯会议桌面启动文件内容,查看方法如下:

root@uos:~# deepin-editor ~/.local/share/applications/wine/Programs/腾讯软件/腾讯会议/腾讯会议.desktop

执行完上述命令,会出现如图20所示界面,即腾讯会议桌面启动文件内容。

wine —— windows软件移植到Linux系统_第20张图片 图20

 

 

你可能感兴趣的:(uos,Linux,linux,wine,软件移植)