Я видел множество потоков, объясняющих, как создать 32-битный префикс, но я хочу проверить, является ли префикс, который я использую, 32-битный или 64-битный. Причина, по которой я спрашиваю, заключается в том, что я использую PlayOnLinux и создал 32-битный виртуальный диск (например, X). Теперь, когда я открываю winetricks в папке ~ / .PlayOnLinux / wineprefix, wineprefix выдает мне сообщение
Вы используете 64-битный WINEPREFIX. Если у вас возникли проблемы, пожалуйста, протестируйте чистый 32-битный WINEPREFIX перед тем, как сообщить об ошибке.
Но когда я открыл wineprefix в ~ / .PlayOnLinux / wineprefix / X, сообщение не появилось.
Как я могу проверить, является ли префикс 32 против 64 бит?
При использовании PlayOnLinux можно проверить, какая версия с помощью GUI - открывают PlayOnLinux, нажмите 'Configure' на соответствующую программу и посмотрите на область слева:
, С другой стороны, можно сделать то, что winetricks делает (в версии 20140817
, приблизительно строка 3600) , который является проверкой wineprefix для присутствия каталога WINEPREFIX/drive_c/windows/syswow64
, который должен быть найден в 64 битах windows/wineprefix, но не версии на 32 бита. Это должно работать на обычный wineprefixes и тех под PlayOnLinux.
Вы могли установить winetricks и ввести это в терминале:
sudo apt-get install winetricks
и затем выполненный winetricks, и затем Вы видите его в предпочтении.
Все, что необходимо сделать, Обзор Виртуальные диски PlayonLinux. Перейдите к папке WINEPREFIX/drive_c/и ищите папку Program Files.
, Если Вы только видите Программные файлы и никакой ProgramFiles (x86) Затем, Вы используете Винный Префикс на 32 бита. Если Вы видите обоих затем, что Вы используете Винный Префикс на 64 бита. Надежда это помогает!!
Мне было нужно что-то подобное в сценарии, таким образом, сделал этот сценарий на основе ответа @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 бита я имею:
$ WINEPREFIX=~/.wine32 ./winearch.sh
Prefix is 32 bit
Благодаря @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 настройки.