Tips & tricks — Настройка приложений в WINE при некорректной установке
Чтобы правильно установить программу/игру в Wine надо полностью повторить процедуру установки и запуска, предусмотренную для Windows. Но это часто не получается. Ну например многие просто переносят готовую инсталляцию с винды. Иногда у репаков не хочет запускаться инсталлятор. Чаще просто нужно сделать кнопку запуска или элемент меню вместо созданной при установке иконки. И вот тут я уже давно замечал разные баги в некоторых играх, которые удалось окончательно побороть только сегодня.
А баги были самые разные, но всегда напоминающие косяк самой игры, что вынуждало курить winehq и гугль, бессмысленно и беспощадно. И ситуация часто получается непростая, т.к. инсталлятор создает в меню DE (у меня гном) пункты с таким адресом:
env WINEPREFIX="/home/zed/.wine" wine "start" /Unix "/home/zed/.wine/dosdevices/c:/users/zed/Главное меню/Программы/Black Isle/Fallout 2/Fallout2.lnk"
или
env WINEPREFIX="/home/zed/.wine" wine C:\\windows\\command\\start.exe /Unix /home/zed/.wine/dosdevices/c:/users/Public/Главное\ меню/Программы/Medieval\ II\ Total\ War/Medieval\ II\ Total\ War\ -\ Stainless\ Steel\ 6.1.lnk
А при этом настройки приложений wine игнорируются. Приходится создавать новую кнопку запуска, пункт в меню, да хоть из терминала запускать в классическом виде:
env WINEPREFIX="/home/zed/.wine" wine "C:\Program Files\Fallout2\fallout2.exe"
И получается облом - приложение попросту не запускается. В каком то мануале вычитал, что помогает такой запуск:
bash -c "cd /home/zed/.wine/drive_c/Program\ Files/The\ Black\ Mirror && env WINEPREFIX="/home/zed/.wine" wine AGDS.EXE"
То есть это аналогично тому что мы вызовем терминал в директории с исполняемым файлом и запустим программу без указания пути. И такой способ работал, пока сегодня не решил поставить Medieval II Total War с модом Stainless Steel 6.1. Я очень удивился тому, что игра запускается только с кнопки на рабочем столе, созданным при инсталляции. Тот же путь в терминале, а также указанный выше финт приводил к краху игры.
Оказалось, что в /home/user/.local/share/applications все кнопки, пункты меню, представленны в виде desktop файлов с определенным содержимым и содержимое этих файлов, созданных при правильной установке приложения отличается от ручного создания новой кнопки или пункта меню. Вот так выглядит файл, созданный при чистой инсталляции:
[Desktop Entry]
Exec=env WINEPREFIX="/home/zed/.wine" wine C:\\\\Program\\ Files\\\\Medieval\\ II\\ Total\\ War\\\\kingdoms.exe @mods\\\\Stainless_Steel_6\\\\Stainless_Steel_Kingdoms.cfg
Hidden=true
Icon=/home/zed/.local/share/icons/edf1_kingdoms.0.png
Name=Stainless Steel 6.1
Path=/home/zed/.wine/dosdevices/c:/Program Files/Medieval II Total War/
StartupNotify=true
Type=Application
При этом Path=/home/zed/.wine/dosdevices/c:/Program Files/Medieval II Total War/ - это та самая ключевая строчка, отсутствующая при ручном создании. И тут я как раз вспомнил, что некоторые windows приложения ультимативно требовали указание рабочей директории, которая по умолчанию прописывается в проводнике автоматом как директория, содержащая исполняемый файл. Правкой desktop файла и внесением нужного пути рабочей директории можно того же добиться в wine.
Игры, которые подвержены данному эффекту:
Black Mirror
Arcanum
Imperium Galactica 2
Medieval II Total War Stainless Steel 6.1
Я не нашел подтверждений того, что описанный эффект специфичен для какого-то дистрибутива, ядра или версии wine. Также это относится только к играм, т.к. неигровой софт всегда ставится начисто (ввиду использования им реестра).
А баги были самые разные, но всегда напоминающие косяк самой игры, что вынуждало курить winehq и гугль, бессмысленно и беспощадно. И ситуация часто получается непростая, т.к. инсталлятор создает в меню DE (у меня гном) пункты с таким адресом:
env WINEPREFIX="/home/zed/.wine" wine "start" /Unix "/home/zed/.wine/dosdevices/c:/users/zed/Главное меню/Программы/Black Isle/Fallout 2/Fallout2.lnk"
или
env WINEPREFIX="/home/zed/.wine" wine C:\\windows\\command\\start.exe /Unix /home/zed/.wine/dosdevices/c:/users/Public/Главное\ меню/Программы/Medieval\ II\ Total\ War/Medieval\ II\ Total\ War\ -\ Stainless\ Steel\ 6.1.lnk
А при этом настройки приложений wine игнорируются. Приходится создавать новую кнопку запуска, пункт в меню, да хоть из терминала запускать в классическом виде:
env WINEPREFIX="/home/zed/.wine" wine "C:\Program Files\Fallout2\fallout2.exe"
И получается облом - приложение попросту не запускается. В каком то мануале вычитал, что помогает такой запуск:
bash -c "cd /home/zed/.wine/drive_c/Program\ Files/The\ Black\ Mirror && env WINEPREFIX="/home/zed/.wine" wine AGDS.EXE"
То есть это аналогично тому что мы вызовем терминал в директории с исполняемым файлом и запустим программу без указания пути. И такой способ работал, пока сегодня не решил поставить Medieval II Total War с модом Stainless Steel 6.1. Я очень удивился тому, что игра запускается только с кнопки на рабочем столе, созданным при инсталляции. Тот же путь в терминале, а также указанный выше финт приводил к краху игры.
Оказалось, что в /home/user/.local/share/applications все кнопки, пункты меню, представленны в виде desktop файлов с определенным содержимым и содержимое этих файлов, созданных при правильной установке приложения отличается от ручного создания новой кнопки или пункта меню. Вот так выглядит файл, созданный при чистой инсталляции:
[Desktop Entry]
Exec=env WINEPREFIX="/home/zed/.wine" wine C:\\\\Program\\ Files\\\\Medieval\\ II\\ Total\\ War\\\\kingdoms.exe @mods\\\\Stainless_Steel_6\\\\Stainless_Steel_Kingdoms.cfg
Hidden=true
Icon=/home/zed/.local/share/icons/edf1_kingdoms.0.png
Name=Stainless Steel 6.1
Path=/home/zed/.wine/dosdevices/c:/Program Files/Medieval II Total War/
StartupNotify=true
Type=Application
При этом Path=/home/zed/.wine/dosdevices/c:/Program Files/Medieval II Total War/ - это та самая ключевая строчка, отсутствующая при ручном создании. И тут я как раз вспомнил, что некоторые windows приложения ультимативно требовали указание рабочей директории, которая по умолчанию прописывается в проводнике автоматом как директория, содержащая исполняемый файл. Правкой desktop файла и внесением нужного пути рабочей директории можно того же добиться в wine.
Игры, которые подвержены данному эффекту:
Black Mirror
Arcanum
Imperium Galactica 2
Medieval II Total War Stainless Steel 6.1
Я не нашел подтверждений того, что описанный эффект специфичен для какого-то дистрибутива, ядра или версии wine. Также это относится только к играм, т.к. неигровой софт всегда ставится начисто (ввиду использования им реестра).