我需要使用两个不同的 Windows 应用程序,一个可以与 Wine 1.4 配合使用,但不能与 Wine 1.5 配合使用,另一个应用程序可以与后一个版本配合使用,但不能与前一个版本配合使用。
有没有办法安装两个版本的 Wine,并指定哪个应用程序应该与哪个 Wine 版本一起运行?
答案1
答案2
答案3
我使用了几个脚本,但基本上是这样做的:
转到:
https://dl.winehq.org/wine-builds/ubuntu/
然后进一步
https://dl.winehq.org/wine-builds/ubuntu/dists/bionic/main/binary-i386/
和
https://dl.winehq.org/wine-builds/ubuntu/dists/bionic/main/binary-amd64/
下载示例:
wine-staging_4.21_bionic_amd64.deb
wine-staging_4.21_bionic_i386.deb
wine-staging-amd64_4.21_bionic_amd64.deb
wine-staging-i386_4.21_bionic_i386.deb
(可以是暂存的或稳定的)在页面搜索类型中例如:4.21
现在跳过所有包含的软件包:wine-devel-
,winehq-
(但您也可以下载-dbg
和-dev
),如上面的一样。
您可以在最后使用脚本,而不必手动执行以下步骤:
将它们全部复制到名为 wine4.21-bionic 的文件夹中(如果它是稳定的,则可以改为 wine4.21stable-bionic)
使用文件管理器将它们全部提取出来(比较简单,我用的是nemo
)。展开所有 4 个文件夹以同时查看所有文件data.tar.xz
,选择所有这 4 个文件夹并执行“提取到此处”(将在子文件夹中)。
现在将 4 个文件夹中的 2 个重命名wine4.21-bionic/
为(保留其结尾文件夹名称):
amd64
i386
从剩余文件夹(提取但未重命名的文件夹)复制子文件夹opt
,usr
然后粘贴到重命名的文件夹中(您必须选择现在合并文件夹)。
清理/丢弃所有不需要的东西。
其中nemo
有open as root
上下文菜单选项。因此我使用它来移动该文件夹并将 root 权限应用于顶级文件夹和所有包含的文件。
在运行它之前:
之后你将需要设置这些环境(我将它们保存在顶级文件夹:/WineVersions/)例如:
export PATH="$PATH:/WineVersions/wine4.21-bionic/amd64/opt/wine-staging/bin:/WineVersions/wine4.21-bionic/i386/opt/wine-staging/bin"
export LD_LIBRARY_PATH=":/WineVersions/wine4.21-bionic/amd64/opt/wine-staging/lib:/WineVersions/wine4.21-bionic/i386/opt/wine-staging/lib:/usr/lib/x86_64-linux-gnu"
(/usr/lib/x86_64-linux-gnu
上面可能没有必要(先试试不用它?),但我还是会用它)
现在您应该能够例如:(wine64 explorer
当然,在您创建并设置 WINEPREFIX 之后:))
如果您愿意,您可以使用这个帮助脚本来提取和准备下载的.deb 包的内容winePrepare.sh
。
#!/bin/bash
set -eu
grep "[#]help" $0
: ${strWorkPath:="/WineVersions/_NEW_DOWNLOADS_"} #help you can change this. This is a main/workfolder work flow, so you need at least a 2 depth folder, on the example the main is WineVersions and the workfolder is _NEW_DOWNLOADS_. Place the downloaded packages at the strWorkPath.
if [[ ! -d "$strWorkPath" ]];then
echo "create this folder and chown it to your normal user (not root): $strWorkPath (but /WineVersions should be owner root)"
exit 1
fi
cd "$strWorkPath";pwd
strType="$1" #help stable or staging
strVersion="$2" #help ex.: 4.1 or 7.0~rc6
strDistro="$3" #help ex.: bionic or focal-1
astrFiles=(
#amd64
"wine-${strType}_${strVersion}~${strDistro}_amd64.deb"
"wine-${strType}_${strVersion}_${strDistro}_amd64.deb"
"wine-${strType}-dbg_${strVersion}~${strDistro}_amd64.deb"
"wine-${strType}-dbg_${strVersion}_${strDistro}_amd64.deb"
"wine-${strType}-amd64_${strVersion}~${strDistro}_amd64.deb"
"wine-${strType}-amd64_${strVersion}_${strDistro}_amd64.deb"
"wine-${strType}-dev_${strVersion}~${strDistro}_amd64.deb"
"wine-${strType}-dev_${strVersion}_${strDistro}_amd64.deb"
#i386
"wine-${strType}_${strVersion}~${strDistro}_i386.deb"
"wine-${strType}_${strVersion}_${strDistro}_i386.deb"
"wine-${strType}-dbg_${strVersion}~${strDistro}_i386.deb"
"wine-${strType}-dbg_${strVersion}_${strDistro}_i386.deb"
"wine-${strType}-i386_${strVersion}~${strDistro}_i386.deb"
"wine-${strType}-i386_${strVersion}_${strDistro}_i386.deb"
"wine-${strType}-dev_${strVersion}~${strDistro}_i386.deb"
"wine-${strType}-dev_${strVersion}_${strDistro}_i386.deb"
)
strPath="wine${strVersion}${strType}-${strDistro}"
mkdir -vp "$strPath"
strPath="$(realpath "$strPath")"
ls -ld "$strPath"
for strFile in "${astrFiles[@]}";do
cd "$strPath"
pwd
if ls -l "../$strFile";then
echo
mv -v "../$strFile" ./
if [[ "$strFile" =~ .*amd64.* ]];then
mkdir -vp amd64
cd amd64
else
mkdir -vp i386
cd i386
fi
ar x "../$strFile"
xz -d data.tar.xz
tar -xf data.tar
trash -v data.tar control.tar.xz debian-binary
else
echo "a file with that name was not found, trying next one"
fi
done
echo "#now run these commands:"
echo "(sudo chown -vR root:root $strPath; sudo mv -v \"`basename "$strPath"`/\" ../; cd ..;pwd; sudo ln -vsfT `basename "$strPath"` $strType)" # this will chown to root the new wine files, move the folder to main path, symlink that folder to strtype