- 介绍
- 测试环境
- 安装环境
- 安装 WineHQ5.0
- 排查问题
- add-apt-repository 找不到命令
- 安装 add-apt-repository 包
- python-software-properties 包不存在时
- add-apt-repository 出现异常异常 NoDistroTemplateException
- 安装WineTricks(Wine安装助手)
- 安装WineTricks
- 利用 winetricks 安装mono、gecko
- 手动安装 mono、gecko
- 下载mono、gecko
- 手动安装mono、gecko
- 安装Wine字体
- 安装必要的字体
- 支持显示中文字体
- 附录
- wine 的一些命令
- wine-mono 安装对照表
- wine-gecko 安装对照表
- wine 32位64位架构切换
- Wine 中 PREFIX 与 ARCH 关系
- 字体问题
- 参考链接
因项目需要,希望公司的产品能够在国产Linux操作系统中运行。在安装环境时遇到的一些坑跟心得,记下来分享给大家。
测试环境Linux 系统 : 统信UOS
.Net运行时: .Net Framework 4.5.2
安装环境 安装 WineHQ5.0# 参考官方教程: https://wiki.winehq.org/Ubuntu_zhcn # 安装WineHQ # 开启32位架构支持 sudo dpkg --add-architecture i386 # 下载仓库密钥 wget -nc https://dl.winehq.org/wine-builds/winehq.key sudo apt-key add winehq.key # 添加WineHQ 仓库源 sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/debian/ stretch main' # 更新apt-get缓存 sudo apt update # 安装WineHQ sudo apt install --install-recommends winehq-stable排查问题 add-apt-repository 找不到命令
遇到这个问题尝试安装add-apt-repository相关包, 但出现一些另外的问题, 最终直接利用文件的方式添加apt仓库源, 解决方法如下:
# 切换到root su - # 添加apt仓库源 echo "deb https://dl.winehq.org/wine-builds/debian/ stretch main" > /etc/apt/sources.list.d/winehq.list # 更新apt仓库索引 sudo apt update安装 add-apt-repository 包
## 安装Package ## python-software-properties、software-properties-common sudo apt-get install python-software-properties sudo apt-get install software-properties-common sudo apt-get updatepython-software-properties 包不存在时
请用以下方法处理:
这时需要修改/etc/lsb-release文件,注释掉原内容,然后追加如下修改,仅供参考:
#DISTRIB_ID=Deepin #DISTRIB_RELEASE="15.11" #DISTRIB_DESCRIPTION="Deepin 15.11" #DISTRIB_CODENAME=stable DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"
这样就可以使用add-apt-repository命令了,不会报错误。
- 参考 提示sudo: add-apt-repository:找不到命令的解决方法
# aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for Deepin/n/a # 修改文件 (未测试) sudo vim /usr/share/python-apt/templates/Deepin.info # 将 Suite=XXXX 改为 Suite=Stable安装WineTricks(Wine安装助手) 安装WineTricks
默认情况下,apt包管理器的Winetricks不是最新的,如果需要安装最新的请按以下方式:
# 参考链接 https://wiki.winehq.org/Winetricks
# 下载winetricks
cd "${HOME}/Downloads"
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks
# 安装 winetricks 用到的 package
sudo apt install cabextract unzip p7zip wget
# 安装 winetricks GUI 操作界面 (可选)
sudo apt install zenity
# 将 winetricks 拷贝的 系统
sudo cp winetricks /usr/bin/winetricks
利用 winetricks 安装mono、gecko
在Linux中,mono主要用来跑.Net Framework的程序, gecko 用来支持程序中嵌入HTML (这里也一起安装了, 防止出现其他问题)
# 运行winetricks winetricks # 正常情况下如果你没有安装mono、gecko会提示你安装, 如下图
点击安装之后可以通过以下命令查看.
# wine 下的程序管理 wine uninstaller手动安装 mono、gecko 下载mono、gecko
# 下载 wine-mono 下载网址 https://dl.winehq.org/wine/wine-mono/ curl https://dl.winehq.org/wine/wine-mono/6.3.0/wine-mono-6.3.0-x86.msi --output wine-mono-6.3.0-x86.msi # 下载 wine-gecko 下载网址 http://mirrors.ustc.edu.cn/wine/wine/wine-gecko/ curl http://mirrors.ustc.edu.cn/wine/wine/wine-gecko/2.47.2/wine-gecko-2.47.2-x86.msi --output wine-gecko-2.47.2-x86.msi # 对于 64位wine 32位跟64位的 gecko 都必须安装 curl http://dl.winehq.org/wine/wine-gecko/2.47.1/wine-gecko-2.47.1-x86_64.msi --output wine-gecko-2.47.1-x86_64.msi
如果提示 Wine cannot find the ncurses library (libncurses.so.5). 则安装ncurses
sudo apt install libncurses5 libncurses5:i386 # 安装32位与64位curses手动安装mono、gecko
# 安装mono sudo wine start wine-mono-6.3.0-x86.msi # 安装gecko sudo wine start wine-gecko-2.47.2-x86.msi sudo wine start wine-gecko-2.47.1-x86_64.msi
点击安装之后可以通过以下命令查看.
# wine 下的程序管理 wine uninstaller安装Wine字体 安装必要的字体
# 安装 必须的字体 winetricks corefonts支持显示中文字体
这里参考网上的大佬们写的文章, 拷贝 simsun.ttc (宋体)跟msyh.ttc (微软雅黑) 到 wine 环境目录下再注册就可以了,但是我试了很多次都还不行。
最终通过如下方法成功显示出中文:
# 支持富文本框控件显示 (顺序安装, 防止出错) # 1. 先安装 richtx32 winetricks richtx32 # 2. 再安装 riched30 winetricks riched30 # 这里可能需要FQ才能下载, 已再 附录中 上传了, 可直接下载 # 3. 再安装 riched20 winetricks riched20 # 这里可能需要FQ才能下载, 已再 附录中 上传了, 可直接下载 # 安装字体 winetricks cjkfonts
以下为成功打开WPF程序。
附录 wine 的一些命令# 查看 wine 配置 winecfg # 引导 根据指定架构初始化 默认Prefix wineboot # 查看 wine 安装的库 wine uninstaller # wine 打开注册表 wine regedit # 注册字体 cp your_font_file.ttc ~/.wine/drive_c/window/Fonts/ regedit ~/.wine/drive_c/window/Fonts # 安装msi安装包 wine start package.msi # 或 wine msiexec /i package.msi # 其他命令参考 https://wiki.winehq.org/List_of_Commandswine-mono 安装对照表
wine与mono对照表用来对照装mono, 譬如说wine的版本为5.0, 则mono版本应该选择安装 4.9.4 版本 或 最新6.3.0
注意: 如果框架中使用WPF则mono版本必须>= 5.0.0
wine-gecko 安装对照表wine与gecko对照表用来对照装gecko, 譬如说wine的版本为5.0, 则Gecko 版本应该选择安装 2.47.1 版本 或 2.47.2
wine 32位64位架构切换# 启用wine 多架构 dpkg --print-foreign-architectures | grep -q i386 && sudo dpkg --add-architecture i386 # 移动源64位配置到.wine64 然后切换成32位 并重新引导 mv ~/.wine ~/.wine64 && WINEARCH=win32 wineboot
参考: How do I create a 32-bit WINE prefix? (如果创建 32位wine前缀与架构)
Wine 中 PREFIX 与 ARCH 关系如下为个人理解.
Prefix 相当于一个环境, 环境中包含一个Winodw镜像,可通过Prefix区别32位跟64位环境。
ARCH 表示此环境是32位或者64位。
根据前缀(Prefix)基于架构(Arch)构建环境,并且前缀下的环境是相互隔离的。
通过执行前缀(Prefix)与架构(ARCH) 则可以实现指定环境下运行程序。
当我们需要某个在32位环境下运行程序或者要在32位环境下安装DLLs等…
# 在32位环境下运行程序 WINEPREFIX=~/.wine32 WINEARCH=win32 your_32bit_executable.exe # 在64位环境下运行程序 WINEPREFIX=~/.wine WINEARCH=win64 your_64bit_executable.exe
ARCH 表示此环境是32位或者64位
通过执行前缀(Prefix)与架构(ARCH) 则可以实现指定环境下运行程序,并且前缀(Prefix)之间的程序都是相互隔离的。
当我们需要某个在32位环境下运行程序或者要在32位环境下安装DLLs等…
# 在32位环境下运行程序 WINEPREFIX=~/.wine32 WINEARCH=win32 your_32bit_executable.exe # 在64位环境下运行程序 WINEPREFIX=~/.wine WINEARCH=win64 your_64bit_executable.exe字体问题
Wine中中文显示为错误的解决方案
ubuntu下通过wine安装windows软件(以微信和Adobe Acrobat Pro为例)
解决Ubuntu下wine打开微信无法看到输入框内容
参考链接A developers guide to running WPF apps on Linux with .NET Core and Wine (在Wine中运行.NetCoreWPF程序)
linux下路径名中含空格如何处理
dotnet 在 UOS 国产系统上安装 Mono 开发工具的方法
wine —— windows软件移植到Linux系统



