wine学习笔记

news2024/9/22 1:04:58

目前 wine 版本为较为稳定的 8.0 版本,本文也是重点围绕 wine 8.0 安装、使用以及 wine 工具介绍等方面进行了学习和整理。

一、安装 wine

1. 如果你使用的是 64 位系统,需要先开启 32 bit 架构支持:

$ sudo dpkg --add-architecture i386 

architecture,指的是cpu体系架构,如64位的amd64,arm64。下面是一些关于架构方面的指令:

$ sudo dpkg  --print-architecture                                 #查看当前CPU体系架构:
$ sudo dpkg --add-architecture [ amd64 | i368 | arm64 | ...]      #开启或者说增加其他架构支持
$ sudo dpkg --print-foreign-architectures                         #查看开启的其他架构(非当前cpu体系架构)
$ sudo dpkg --remove-architecture [ amd64 | i368 | arm64 | ...]   #删除开启的其他架构

i386 = Intel 80386。通常被用来作为对Intel(英特尔)32位微处理器的统称。
amd64,又称“x86-64”或“x64”。是一种64位元的电脑处理器架构。它是建基于现有32位元的x86架构,由AMD公司所开发。

2. 信任来自 https://dl.winehq.org/ 的公钥:

$ sudo mkdir -pm755 /etc/apt/keyrings
$ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key

上面的命令实现了将 https://dl.winehq.org/ 的公钥内容保存至 /etc/apt/keyrings/winehq-archive.key 文件。

3.添加仓库(以 ubuntu 22.04 为例):

方法一:添加 winehq 官方仓库(能保证版本为最新,但不能保证下载速度)

$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources

方法二:从镜像站添加仓库,如清华大学开源镜像站(不能保证版本为最新,但应该能保证下载速度)

清华大学开源镜像站只同步了 ubuntu/debian 部分,因此其他发行版不适用。在 /etc/apt/sources.list.d/ 目录中新增一个源列表文件 winehq.list,内容为

deb [arch=amd64,i386 signed-by=/etc/apt/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ jammy main

4. 更新源列表

$ sudo apt update

5. 安装 wine

$ sudo apt install --install-recommends winehq-stable

这里选择安装的是稳定分支 (winehq-stable),可以根据需要选择开发分支 (winehq-devel) 或Staging 分支 (winehq-staging)

二、wine 的使用

1. 重要的 2 个环境变量

(1) WINEARCH 环境变量

WINEARCH 环境变量指的是容器所模拟的cpu体系架构,对应的值为 win32 及 win64,如果你的系统是 64 位系统,一般默认为 win64。目前 wine 容器在64位系统下其稳定性是远远低于 32 位系统的。

(2) WINEPREFIX 环境变量,容器路径,默认为 ~/.wine

WINEPREFIX 环境变量表示容器的路径,默认为 ~/.wine。wine 会在所指定的容器路径~/.wine下创建drive_c/等几个文件(夹),其中包含了Windows环境配置、它的C盘文件等等。建议把不同的 Windows 程序分给不同的 WINEPREFIX,便于打包和隔离。只是当你要启动这个 Windows 程序前也需要设置正确的 WINEPREFIX。

2.wine 配置命令(初次使用必须配置)

$ winecfg

上面的命令使用的是默认的环境变量配置 wine 的配置,它将在你的家目录中创建一个隐藏文件夹(.wine),该文件夹下包含类似于在 Windows 中的虚拟 C:驱动器以及注册表文件。一旦该目录中创建完,wine配置窗口将出现。该窗口将允许您定制wine的各种设置,其中包括Windows版本,DLL替换,显示设置,驱动器映射,以及应用程序的特定设置。单击OK按钮关闭该窗口。

wine 首次初始配置时会要求下载插件 wine-mono(.net 开源方案)和 wine-gecko(ie HTML开源方案) ,但通过初始配置窗口去下载会很慢,可以在初始设置前从网速快的镜像下载并安装
http://mirrors.ustc.edu.cn/wine/wine/wine-mono/
http://mirrors.ustc.edu.cn/wine/wine/wine-gecko/

因为 winecfg 命令使用的环境变量是默认的也就是容器路径为~/.wine,架构为物理系统的架构,通常是 win64,如果我们想要使用自定义的环境变量,可以使用类似下面的命令:

$ WINEARCH=win32 WINEPREFIX=~/.wine-new winecfg

这条命令配置的容器,其容器路径是 ~/.wine-new,架构是 win32。

3.安装 Windows 程序

  • 从某个地址下载Windows应用程序.exe(可执行文件)
  • 把它放在一个方便的目录(例如,桌面或个人文件夹)
  • 打开终端,并且切换到.exe文件所在的目录
  • 输入命令 wine appname.exe (例如: wine QQ.exe)

这将使用Wine启动.EXE。如果它是一个安装程序,它应该像在windows一样的运行。如果应用程序要求的目录来安装应用程序,选择把它放在 C:\Program Files 。

以 WinRAR 为例安装(为深入理解容器概念,我使用上一步自定义初始化的一个容器路径来进行操作,下同):

(1) 首先去官网下载32位的安装包 winrar-x32-611scp.exe

(2) 打开终端,切换到安装包所在路径,输入如下命令:

$ WINEPREFIX=~/.wine-new wine wine-gecko-2.47.3-x86.msi
$ WINEPREFIX=~/.wine-new wine winrar-x32-611scp.exe

在这里插入图片描述

4.运行 Windows 程序

(1) 使用命令直接打开:

$ wine [start] 程序路径/程序名.exe 参数

根据Windows约定,一般程序将默认安装在虚拟Windows驱动器(WINEPREFIX/drive_c)里面Program Files下的某处。

这里的程序路径有 2 种表示方法:

  • a.容器内程序的路径(需指定容器路径,否则默认为~/.wine)
$ WINEPREFIX=~/.wine-new wine "c:/Program Files/WinRAR/WinRAR.exe"
  • b.物理系统内程序的路径
$ wine ~/.wine-new/drive_c/Program\ Files/WinRAR/WinRAR.exe

(2) 通过 winefile 命令打开 wine 文件管理器,然后定位到所需程序,双击打开。

$ WINEPREFIX=~/.wine-new winefile

在这里插入图片描述

(3) 创建桌面快捷方式

在桌面上创建一个"程序名.desktop"的文件,添加可执行权限(chmod +x 程序名.desktop),内容编辑格式大体如下:

[Desktop Entry]
Name=程序名(WinRAR)
Exec=env WINEPREFIX="容器路径(/home/hollowman/.wine-new/)" wine "wine容器内的程序路径(C:\Program Files\WinRAR\WinRAR.exe)"
Type=Application
StartupNotify=true
Path=程序实际路径(/home/hollowman/.wine-new/dosdevices/c:/Program Files/WinRAR)
Icon=桌面图标路径()
StartupWMClass=程序名.exe(WinRAR.exe)

5.有关 wine 的命令

通过dpkg -L winehq-stable | grep bin可以大概了解wine有哪些二进制命令(这里的 winehq-stable 是我安装的 wine 版本,一般输入 wine 按 tab 补齐就可知道你安装了哪个wine)

$ dpkg -L winehq-stable | grep bin
/usr/bin
/usr/bin/function_grep.pl
/usr/bin/msidb
/usr/bin/msiexec
/usr/bin/notepad
/usr/bin/regedit
/usr/bin/regsvr32
/usr/bin/widl
/usr/bin/wine
/usr/bin/wine-preloader
/usr/bin/wine64
/usr/bin/wine64-preloader
/usr/bin/wineboot
/usr/bin/winebuild
/usr/bin/winecfg               
/usr/bin/wineconsole
/usr/bin/winecpp
/usr/bin/winedbg
/usr/bin/winedump
/usr/bin/winefile
/usr/bin/wineg++
/usr/bin/winegcc
/usr/bin/winemaker
/usr/bin/winemine
/usr/bin/winepath
/usr/bin/wineserver
/usr/bin/wmc
/usr/bin/wrc

解释几个命令

$ winecfg              #wine配置窗口
$ wine regedit         #注册表
$ wine control         #控制面板
$ wine notepad         #记事本
$ wineconsole          #cmd终端窗口
$ winefile             #文件管理器
$ wine uninstaller     #卸载面板
$ winemine             #扫雷游戏

三、wine 的可视化工具

1.winetricks

介绍: 带点官方性质的wine的配置工具。

源码网站: https://github.com/Winetricks/winetricks

如何安装: 可以通过 apt 来安装。

$ sudo apt install winetricks

2.winetricks-zh

介绍: 国人维护的 winetricks 的修改版,添加了一些国内常用的 windows 应用支持,以弥补 winetricks 对国内应用支持不足的情况。

源码网站: https://github.com/hillwoodroc/winetricks-zh

如何安装:

(1) 下载源码,并解压缩

(2) 在该目录下打开终端,输入如下命令

sudo cp winetricks-zh /usr/bin/  
sudo cp icon/winetricks-zh.svg /usr/share/icons/hicolor/scalable/apps/  
sudo cp winetricks-zh.desktop /usr/share/applications/  

如何使用:

$ winetricks-zh  #或者直接在应用程序菜单里面点击 winetricks-zh 来启动。

注意,该命令默认的容器路径是~/.wine,如果希望用其他的默认容器路径,同样需要在命令前面增加设置WINEPREFIX变量的语句 WINEPREFIX=~/.wine-new

3.wine 运行器

由网名为 gfdgd xi、为什么您不喜欢熊出没和阿布呢 制作的一个基于 wine 的可视化工具,他们对这个软件的定位是:

Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作。
此外,它还简化了如下命令,让你可以更简便地使用Wine:env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径 让你可以简易方便的使用 wine。

该程序的官网有:
https://gitee.com/gfdgd-xi/deep-wine-runner
https://github.com/gfdgd-xi/deep-wine-runner
https://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner
https://gfdgd-xi.github.io

程序Wiki: http://gfdgdxi.i.racoongx.cn/wine-runner-wiki/

程序界面:

在这里插入图片描述

四、如何干净卸载 wine

sudo apt remove wine wine64 wine32 winetricks winetricks-zh
cd ~
rm -rf .wine/
rm -rf .local/share/applications/wine/
cd .local/share/mime/
rm .local/share/mime/types
rm .local/share/mime/globs2
rm .local/share/mime/packages/x-wine-extension-*
rm .local/share/mime/application/x-wine-extension-*
rm -rf .config/menus/applications-merged/            #删除程序图标快捷方式
rm -rf .local/share/wineprefixes/                    #删除自己创建的wineprefixes(wine容器)
update-mime-database ~/.local/share/mime             #更新文件类型数据库

官方文档参考:

winehq wiki: https://wiki.winehq.org/FAQ
Wine_User’s_Guide: https://wiki.winehq.org/Wine_User’s_Guide

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Kubernetes】第四篇 - k8s 集群环境搭建

一,前言 前两篇,购买了 3 台阿里云服务器并完成了 ci-server 构建服务器的环境安装与配置; 三台服务器规划如下: 服务配置内网IP外网IP说明ci-server2c4g172.17.178.104182.92.4.158Jenkins Nexus Dockerk8s-master2c4g172.1…

Visual Studio 高级调试-Dump分析

Dumpdump指转储,一般用来创建进程快照。它可以在不停止应用的情况下,直接将模块列表、线程列表、堆栈信息、异常信息、句柄信息等所有内存信息保存下来,帮助开发者分析生产环境问题等。这篇博客主要介绍dotnet-dump的使用以及如何在Visual St…

SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】(内含教学视频+源代码)

SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】(内含教学视频源代码) 教学视频源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87463492 目录SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发…

【MySQL】Java连接MySQL数据库(封装版只需会MySQL)

一、准备普通项目如果创建的是普通的Java项目,我们需要去maven仓库下载jdbc驱动包然导入项目中就能使用,具体步骤详见MySQL数据库之Java中如何使用数据库【JDBC编程】maven项目如果创建的项目是maven项目,我们只需在pom.xml文件里引入一组依赖…

适合初学者的超详细实用调试技巧(上)

我们日常写代码的时候,常常会遇到bug的情况,这个时候像我这样的初学者就会像无头苍蝇一样这里改改那里删删,为了根除这种情况,我最近系统学习了调试的技巧,我想要十分详细地讲解,所以大概不会一篇文章写完。…

Django入门与构建

文章目录Django入门与构建Django介绍conda切换环境(看需要)安装虚拟环境基于 virtualenv基于venvDjango项目构建Django项目安装:创建应用Django运行测试总结Django入门与构建 官网:https://www.djangoproject.com/ 博客:https://www.liujian…

Spring的IOC,注入问题,包括自动注入的条件和前提

1. 前言 Spring的核心技术IOC(Intorol of Converse控制反转)的实现途径是DI(dependency Insert依赖注入)。而依赖注入(DI)的实现方式又有两种,xml方式和注解方式。如下图所示: 什么是属性注入 属性注入就是在实例化对象时,同时向对象中的…

小米12s ultra,索尼xperia1 iv,数码相机 拍照对比

首先说明所有的测试结果和拍摄数据我放到百度网盘了(地址在结尾) 为什么做这个测试 我一直想知道现在的手机和相机差距有多大,到底差在哪儿? 先说结论: 1.1英寸的手机cmos(2022年) 6年前(2016)的入门款相机(m43画幅) 2.手机 不能换镜头,只能在特定的拍摄距离才能发挥出全…

网络安全-域名相关收集

网络安全-域名相关收集 前言 一,我也是初学者记录的笔记 二,可能有错误的地方,请谨慎 三,欢迎各路大神指教 四,任何文章仅作为学习使用 五,学习网络安全知识请勿适用于违法行为 学习网络安全知识请勿适用于…

【C#基础】C# 常用语句讲解

序号系列文章3【C#基础】C# 数据类型总结4【C#基础】C# 变量和常量的使用5【C#基础】C# 运算符总结文章目录前言语句概念1,迭代语句1.1 for 语句1.2 foreach 语句1.3 while 语句1.4 do 语句2,选择语句2.1,if 语句2.2,else 语句2.3…

Android 基础知识4-2.9 FrameLayout(帧布局)详解

一、FrameLayout(帧布局)概述 FrameLayout又称作帧布局,它相比于LinearLayout和RelativeLayout要简单很多,因为它的应用场景也少了很多。这种布局没有方便的定位方式,所有的控件都会默认摆放在布局的左上角。 示例1代…

算法队列与栈—Java版

队列、双向队列、栈 — ArrayDeque 使用双向队列ArrayDeque可以完成以上三种数据结构。队列的操作包括:入队、出队、返回队首元素、返回队尾元素、删除队首元素、删除队尾元素、判断空、返回队列长度。双向队列包括:首尾入队、首尾出队、返回首尾元素、…

【挣值分析】

名称解释 拼写解释PV计划费用,预估预算EV挣值,实际预估预算AC实际费用,实际花费CV成本偏差 (EV - AC)SV进度偏差(EV - PV)CPI成本绩效指数 (EV / AC)SPI进度绩效指数 &a…

【Kubernetes】【十】Pod详解 Pod介绍与配置

第五章 Pod详解 本章节将详细介绍Pod资源的各种配置(yaml)和原理。 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类: 用户程序所在的容器,数量可多可少 Pause容器,这是每个…

Mybatis(4)之跟着老杜做一个简单的银行转账会话

这是个MVC项目,我不一定可以完整的实现这个项目,但力求把这个复现出来,尽量的复现细节。 第一步:创建数据库 表 创建表如下: 我们使用 int 是为了方便 然后采用 demcial,精确度较高 添加两个用户 然后…

JVM学习笔记二:运行时数据区概述及JVM线程

目录 概述 JVM各区域划分 JVM线程 线程的内存空间 JVM系统线程 概述 运行时数据区是JVM非常重要的组成部分,这一篇主要介绍运行时数据区各个区域的划分,以及JVM中的线程。 JVM各区域划分 学习JVM,必须牢记下图各个区域的分类&#xff…

【5G RRC】5G系统消息SIB2介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

九龙证券|动力锂离子电池的能量密度可达多少?

现在,我国车用动力锂电池技能道路挑选的是与美国相同的磷酸铁锂道路。毫无疑问,磷酸铁锂离子电池有着许多优势:稳定性高、价格相对便宜,然而其能量密度(能量密度更大,才能更好地解决路程问题)提…

RabbitMQ 入门到应用 ( 五 ) 基本应用

6.更多应用 6.1.AmqpAdmin 工具类 可以通过Spring的Autowired 注入 AmqpAdmin 工具类 , 通过这个工具类创建 队列, 交换机及绑定 import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.Di…

linux xargs 删除名字中包含某字符串的文件

xargs的作用 格式化输出 可以把多行文本变成一行,或者指定行数和列数。每一列用空格作分隔符号。 test.txt中的内容 例子1: 用xargs格式化输出后,多行变成了一行,而且多个空格变成了一个空格。 cat test|xargs例子2: 当然也可…