如何在同一个安装中使用两个不同版本的 wine?

如何在同一个安装中使用两个不同版本的 wine?

我需要使用两个不同的 Windows 应用程序,一个可以与 Wine 1.4 配合使用,但不能与 Wine 1.5 配合使用,另一个应用程序可以与后一个版本配合使用,但不能与前一个版本配合使用。

有没有办法安装两个版本的 Wine,并指定哪个应用程序应该与哪个 Wine 版本一起运行?

答案1

玩转Linux安装 PlayOnLinux

您可以使用玩转Linux安装在不同版本的 wine 上运行的应用程序。PlayOnLinux 提供了在安装程序的同时安装一些库的选项。

要管理不同版本的 Wine,请访问工具 > 管理 Wine 版本

Wine_版本

如果您想将您自定义编译的 Wine 版本添加到此列表中,请在~/.PlayOnLinux/wine/linux-amd64或中创建新的 wine“版本” linux-x86,并将您的自定义安装复制到那里。

在安装应用程序时,您可以选择将其安装到新的虚拟驱动器中,以便在其中安装不同版本的 wine。

虚拟驱动器

玩转Linux

答案2

查看葡萄酒常见问题这里告诉你这个。

你必须滚动到

2.6 我可以在我的系统上安装多个 Wine 版本吗?

修复环境变量你就可以得到它。

答案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

从剩余文件夹(提取但未重命名的文件夹)复制子文件夹optusr然后粘贴到重命名的文件夹中(您必须选择现在合并文件夹)。

清理/丢弃所有不需要的东西。

其中nemoopen 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

相关内容