wine使用指南

发布时间 2023-05-02 09:08:04作者: Leeds_Garden

注意,本文只讨论 Linux,由于 MacOS 现已经不支持 32 位应用程序,这里不作介绍。
wine 主要是 Linux 的 windows 应用程序方案,也是目前计划最优先支持的操作系统。

简介

wine 是一个可以在 Linux、BSD等系统运行 Windows 应用程序的软件。本身不具备图形界面的功能,只能通过命令行运行。

现在 wine 已经基本完成对 windows 的支持,现在主要的困难是反作弊和许可证书的支持。

更多内容请见官方网站

相关软件

相关软件都直接或间接使用 wine ,如果 wine 不能解决你的问题,这些软件也很可能无法解决

  • Proton:Steam 推出,为 Windows 游戏作了专门的优化和修改,启用 Steam Play 即可使用。
  • Crossover:wine 官方推出的付费项目,支持 Linux 和 Mac 。
  • Wine 游戏助手 \ Lutris:提供社区脚本安装游戏,为 Steam 以外的游戏平台提供 Linux 的支持。
  • 葡萄瓶 \ Bottles:提供图形化界面安装 Windows 应用。
  • PlayOnLinux:提供图形化界面安装 Windows 应用,该应用已经停止新功能开发,但稳定可靠。

本文只讨论 wine 命令行使用,有一定的门槛。电脑小白推荐使用其他第三方软件,具体请见,第三方软件清单

安装

Ubuntu/Debian

sudo apt install wine winetricks

openSUSE

sudo zypper in wine winetricks

更多请见 安装 Wine

一个简单的例子

一键安装微信脚本

#!/usr/bin/env bash

# Proxy
# export ALL_PROXY=socks5://127.0.0.1:7891 

# System
export WINESYS=win10

# System Arch
export WINEARCH=win64

# Install Dir
export WINEPREFIX=~/wine/WeChat

# Source
export SOURCE=WeChatSetup.exe

# Require
export REQUIRE="cjkfont vcrun2015 d3dcompiler_47 dxvk1032 vkd3d d3dcompiler_43 d3dx9 dxvk msls31 riched20s"

# Download the latest package from the official website
wget -c "https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe"
echo -e " System: ${WINESYS} \n ARCH: ${WINEARCH} \n PREFIX: ${WINEPREFIX} \n SOURCE: ${SOURCE} \n"

winetricks ${REQUIRE}
winetricks ${WINESYS}
wine ${SOURCE}

你可以试着运行该脚本,安装微信。

这里列了一张表,简要解释了各个变量的意义

参数 作用 本例
WINESYS 系统版本,可选 win10win7winxp win10
WINARCH 系统架构,可选 win32win64 win64
WINEPREFIX 容器目录,就是你要模拟的系统目录,推荐放在 ~/wine/<软件包名> 下,方便管理 ~/wine/WeChat
SOURCE 安装包名,一般以 .exe 结尾,推荐放在脚本运行目录里 WeChatSetup.exe
REQUIRE 依赖,安装软件需要的东西,你可以在社区里找到帮助 "cjkfont vcrun2015 ... riched20s"
URL 下载链接,可以手动下载到本地,不需要这句 wget -c "https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe"

可能需要代理,不然下载会很慢。

通用步骤

  • 确认 wine 安装完毕,挂好梯子。
  • 访问 Wine AppDB,查找你的软件的英文名,比如微信就是 WeChat。不知道英文名可以百度一下。
  • 找到你使用的版本或相近版本的 Test Result(测试结果),不会英语就用谷歌翻译插件翻译一下,记录需要哪些依赖,填到 REQUIRE 里。
  • sudo chmod +x <脚本名>' 赋予脚本运行权限后,运行脚本即可,如果遇到网络问题,卡住不动了,可以 Ctrl+C` 中断脚本,再重新运行。