文章目录

  • 介绍
  • 测试环境
  • 安装环境
    • 安装 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-commonsudo apt-get install python-software-properties
sudo apt-get install software-properties-common
sudo apt-get update

python-software-properties 包不存在时

请用以下方法处理:

这时需要修改/etc/lsb-release文件,注释掉原内容,然后追加如下修改,仅供参考:

#DISTRIB_ID=Deepin
#DISTRIB_RELEASE="15.11"
#DISTRIB_DESCRIPTION="Deepin 15.11"
#DISTRIB_CODENAME=stableDISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"

这样就可以使用add-apt-repository命令了,不会报错误。

  • 参考 提示sudo: add-apt-repository:找不到命令的解决方法

add-apt-repository 出现异常异常 NoDistroTemplateException

# 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_Commands

wine-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系统

Wine Mono 环境安装并运行.Net WPF相关推荐

  1. hadoop,pySpark环境安装与运行实战《一》

    一.环境准备 环境最好再mac或者liunx环境搭建最为友好,不建议在windows上折腾. 1)安装java jdk 下载java jdk 并在~/.bash_profile配置,jdk  mac路 ...

  2. asp.net core linux环境,ASP.NET Core Linux环境安装并运行项目

    如何更新Android SDK和Build Tool 1. 运行命令 android 2. 勾选并安装需要的版本 3. 完成! MSP430F149学习之路--按键 代码一: /*********** ...

  3. linux Fedora安装桌面,CentOS6.x\Red Hat\Fedora\Linux 安装Wine 1.7.48 桌面运行环境教程

    Open Source Software for running Windows applications on other operating systems Wine ("Wine Is ...

  4. linux下运行class,在Linux下可用Wine安装和运行AIclass、希沃白板5

    在Linux操作系统下可用Wine安装和运行AIclass.希沃白板5.exe文件,它们是Windows下的软件,在Linux中借助Wine就可以使用AIclass和希沃白板5了,已亲测有效. 说明 ...

  5. Ubuntu 18.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+SLAM相关库的安装

    文章目录 一.换源 二.安装三方库 2.1 安装必要的依赖项 2.2 安装Pangolin 2.3 安装OpenCV3 2.4 安装Eigen3 三.安装ORB-SLAM2 四.安装ORB-SLAM3 ...

  6. python详细安装教程视频-如何安装Python运行环境Anaconda?(视频教程)

    本视频教程针对Windows 7平台,集成3.6版本Python的Anaconda录制. 根据我多次线下编程工作坊获得的反馈经验,发现Python初学者居然在环境安装步骤,就很可能遭受挫折. 如果没有 ...

  7. linux go语言运行环境,安装Go语言运行环境

    安装Go运行环境,如果从旧版本的Go进行升级,必须先删除现有版本. 1. 二进制包安装 下载包 cd /usr/local/src wget https://storage.googleapis.co ...

  8. Linux下安装Dubbo运行环境

    Linux下安装Dubbo运行环境 1.1.1    安装jdk zk首先需要安装jdk环境. yum -y install glibc.i686       #jdk依赖glibc mkdir /u ...

  9. 安装python环境与运行_专栏G|轻松学Python01:Python环境搭建与运行

    原标题:专栏G|轻松学Python01:Python环境搭建与运行 | Cora编撰 | 和[PM10分男人]一起成长 Python是一个开源且功能强大的解释型语言,应用领域比较广泛,如今越来越受重视 ...

最新文章

  1. git本地ben远程分支_git 本地分支与远程分支
  2. 移动医疗未来还有多少红利?
  3. Android Notification状态栏通知
  4. android studio新建layout,【Android Studio安装部署系列】十六、Android studio在layout目录下新建子目录...
  5. 硬件:选购CPU和显卡需了解的参数,TDP、SDP、ACP、GCP、TBP是什么?
  6. mysql in优化_MySQL的一次优化记录 (IN子查询和索引优化)
  7. 红帽:IaaS与PaaS齐头并进
  8. 跳转定义_HTML中的超级链接和锚点跳转
  9. python是什么意思-python中class是什么意思
  10. 一个农民矿工的悲情遗书
  11. java grpc简单例子
  12. python几次方_Python中表示某个数几次方的方法
  13. 利用Excel爬取网页数据
  14. A. Vasya the Hipster
  15. 支付宝给微信好友转账!转了?好像又没转
  16. c语言运算符 amp 的意思,C语言运算符是什么意思
  17. Java中合并多个视频文件转换一个新的视频
  18. java注解检验集合对象_Java 对list对象进行属性校验
  19. 企业薪酬管理的“七大通病”
  20. 2022年合束器市场前景分析及研究报告

热门文章

  1. java2.0qq同步_qq同步助手2.0 apk下载
  2. 如何提高程序的可移植性
  3. nginx下强制跳转到www域名,域名重定向
  4. 怎么把图片拼接成长图,3招教你快速处理
  5. vc的含义(与c的区别)
  6. NBOJv2 Problem 1009 蛤玮的魔法(二分)
  7. frustum pointnets训练代码学习笔记——kitti_object.py
  8. 第一篇:初学编程对未来的展望
  9. 格式: echo -e \033[字背景颜色;字体颜色m字符串\033[0m
  10. Vue中的this.$nextTick方法的使用 [前端][Vue框架]