![如何检查我的 Wine 前缀是 32 位还是 64 位?](https://linux22.com/image/858636/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E6%88%91%E7%9A%84%20Wine%20%E5%89%8D%E7%BC%80%E6%98%AF%2032%20%E4%BD%8D%E8%BF%98%E6%98%AF%2064%20%E4%BD%8D%EF%BC%9F.png)
我看到很多帖子解释如何创建 32 位前缀,但我想检查我使用的前缀是 32 位还是 64 位。我问这个问题的原因是我正在使用 PlayOnLinux,并且我创建了一个 32 位虚拟驱动器(例如 X)。现在,当我在文件夹 ~/.PlayOnLinux/wineprefix 中打开 winetricks 时,wineprefix 会给我以下消息
您正在使用 64 位 WINEPREFIX。如果遇到问题,请在报告错误之前在干净的 32 位 WINEPREFIX 中重新测试。
但是,当我在 ~/.PlayOnLinux/wineprefix/X 中打开 wineprefix 时,该消息没有出现。
如何检查前缀是 32 位还是 64 位?
答案1
您所要做的就是浏览 PlayonLinux 的虚拟驱动器。转到 WINEPREFIX/drive_c/ 文件夹并查找 Program Files 文件夹。
如果您只看到 Program Files 而没有看到 ProgramFiles(x86),则表示您使用的是 32 位 Wine Prefix。如果您同时看到两者,则表示您使用的是 64 位 Wine Prefix。希望这能有所帮助!!
答案2
我在脚本中需要一些类似的内容,因此根据@wilf 的回答制作了这个脚本:
#!/bin/bash
## Wine can spam stderr
ERRLOG=/tmp/dllerrlog.log
WINESYSDIR=$( winepath -u c:\\windows\\system32 2> $ERRLOG )
if [[ ${WINESYSDIR} == *"/system32" ]]; then
echo "Prefix is 32 bit"
# do 32 bit stuff here...
elif [[ ${WINESYSDIR} == *"/syswow64"* ]]; then
echo "Prefix is 64 bit"
# do 64 bit stuff here...
else
echo "Unknown wine architecture"
fi
以下是一些输出:
$ ./winearch.sh
Prefix is 64 bit
在 32 位 Wine 前缀上我有:
$ WINEPREFIX=~/.wine32 ./winearch.sh
Prefix is 32 bit
答案3
感谢@wilf'WINEPREFIX/drive_c/windows/syswow64'(它有效)..
但我一直在编辑葡萄酒登记处查找任何显示
系统正在使用 winearch 的条目(win32 或 win64),我已经在以下位置找到了它:
cat /root/.wine/system.reg | grep -m 1 '#arch' | cut -d '=' -f2
此命令显示:win32(32 位)或win64(64 位)
下面是一个如何在脚本中使用此功能的示例:
#!/bin/sh
HkLm=$(cat /root/.wine/system.reg | grep -m 1 '#arch' | cut -d '=' -f2) > /dev/null 2>&1 # winearch (regedit)
if [ "$HkLm" = "win64" ]; then
echo "[x] winearch config: $HkLm (64 bits)"
echo "[i] Please run:$IPATH/bin/enable_x32bits_wine.sh"
exit
fi
最后说明:我已经在 kali linux 上测试过了..
如果WINEPREFIX=/root/.wine32然后猫命令必须包含该目录
才能读取文件夹内部的 regedit winearch 设置。
答案4
您可以安装 winetricks,然后在终端中输入以下内容:
sudo apt-get install winetricks
然后运行 winetricks,然后您就可以在首选项中看到它。