11 KiB
Runbook: запуск Windows-приложений в Wine (Whisky)
Главный документ по пуску любых .exe в bottle на Mac. Подготовка bottle, шрифты, GOG/сеть — WINE_MAC_RUNBOOK.md. Сбои — TROUBLESHOOTING.md. Шрифты / пустой UI: TROUBLESHOOTING § шрифты (dwrite для Steam, gdiplus=n,b для GOG stub).
- Скрипты:
../../scripts/games - Универсальный запуск:
bash …/scripts/games/run-wine-exe.sh(см. §2)
1. Новая программа — пройти по порядку
Скопируйте чеклист; для каждого пункта есть команда ниже.
| # | Вопрос | Действие |
|---|---|---|
| 1 | Какой тип? | Таблица §1.1 → профиль Wine |
| 2 | Свой bottle? | Steam/Unity/много игр → часто да; GOG web-stub → отдельный GOG-Install; один офлайн-setup → можно общий |
| 3 | Место на диске | bash …/start.sh disk → ≥20 GB для установщиков/игр, ≥3 GB для лаунчера |
| 4 | Один раз: bottle | Whisky → Windows 10 64-bit → Sync MSync; Wine: install-whiskywine-manual.sh |
| 5 | Один раз: шрифты/сеть | bash …/setup-wine-bottle.sh (HoMM/Steam bottle) или gog/setup-bottle.sh (GOG bottle) |
| 6 | Установка | Steam/GOG/офлайн .exe — §1.1; не два установщика GOG одновременно |
| 7 | Запуск | §2 — run-wine-exe.sh, start.sh …, или Whisky → Run |
| 8 | Зафиксировать | Добавить строку в §6 и при необходимости обёртку в scripts/games/ |
1.1 Тип приложения → установка и профиль
| Тип | Примеры | Установка (один раз) | Профиль запуска (run-wine-exe.sh) |
|---|---|---|---|
| Steam + игра | HoMM Olden Era | install-steam-extract.sh, игра из Steam |
steam → UI; game → exe + DXVK |
| GOG Galaxy (лаунчер) | Galaxy 2.0 | start.sh gog-install или gog/install-galaxy-extract.sh |
gog |
| GOG web-stub | GOG_Galaxy_*.exe |
Только bottle gog/ — gog/README.md |
gog |
| Офлайн setup .exe | backup с gog.com | Скопировать в drive_c/, запустить установщик |
plain или gog |
| GOG multipart + innoextract | JA3 offline backup | gog/install-ja3-innoextract.sh — JA3 runbook |
gog/run-ja3.sh |
| .NET WinForms installer | web-stub, мастера GOG | gog/install-gdiplus.sh + corefonts |
gog |
| CEF (Steam/GOG UI) | Steam.exe, GalaxyClient | CEF-флаги в config.sh / gog/config.sh |
steam / gog |
| DX11 игра (Unity и т.д.) | Olden Era | install-dxvk-macos.sh |
game |
| Прочий Win32 .exe | утилиты, старые игры | Обычно только setup bottle + шрифты | plain |
Inno Setup + botva2 (GOG GalaxySetup.exe, JA3 offline setup): в Wine часто gdi32 — не полагаться на /VERYSILENT. Galaxy — innoextract; JA3 multipart — gog/install-ja3-innoextract.sh. Запуск JA3 — JA3_RUNBOOK.md. См. TROUBLESHOOTING.md § Setup.
Подробная подготовка по типам: WINE_MAC_RUNBOOK.md §3.
2. Запуск (любая программа)
2.1 Универсально: run-wine-exe.sh
# Справка
bash ~/code/local_machine/scripts/games/run-wine-exe.sh --help
# Программа уже в drive_c (путь Wine)
bash ~/code/local_machine/scripts/games/run-wine-exe.sh \
--bottle HoMM-OldenEra \
--profile game \
'C:\Program Files (x86)\Steam\steamapps\common\My Game\game.exe'
# Установщик с Mac (копируется в C:\)
bash ~/code/local_machine/scripts/games/run-wine-exe.sh \
--bottle GOG-Install \
--profile gog \
~/Downloads/Setup_Game.exe
# Bottle GOG из gog/bottle.env (без --bottle)
bash ~/code/local_machine/scripts/games/run-wine-exe.sh --profile gog 'C:\Program Files (x86)\GOG Galaxy\GalaxyClient.exe'
--profile |
WINEDLLOVERRIDES / env |
Когда |
|---|---|---|
plain |
по умолчанию Wine | утилиты, простые exe |
steam |
dwrite=n,b |
Steam.exe, VGUI |
gog |
gdiplus=n,b |
GOG Galaxy, .NET installers |
game |
DXVK + d3d11=n,b |
DX11/Unity после install-dxvk-macos.sh |
Переменные bottle: WINE_BOTTLE_ID=<UUID> или WINE_BOTTLE_NAME=HoMM-OldenEra. GOG-bottle: GOG_BOTTLE=1 (читает gog/bottle.env).
Фон + лог:
bash …/run-wine-exe.sh --background --log /tmp/my-app.log --profile plain 'C:\app\foo.exe'
2.2 Через Whisky GUI
- Открыть bottle → Run → выбрать
.exeизdrive_cили с Mac (Whisky скопирует). - Окно: Cmd+Tab →
wine64/ имя процесса, не только окно Whisky.
2.3 Готовые обёртки (start.sh)
| Задача | Команда |
|---|---|
| Steam UI | bash …/start.sh steam-ui |
| HoMM (игра + сейвы) | bash …/start.sh play |
| GOG Galaxy | bash …/start.sh gog |
| Сброс процессов bottle | bash …/start.sh reset |
| Место на диске | bash …/start.sh disk |
| GOG bottle: клиент | bash …/gog/launch-galaxy.sh |
| GOG bottle: JA3 установка | bash …/gog/install-ja3-innoextract.sh |
| GOG bottle: JA3 запуск | bash …/gog/run-ja3.sh — JA3_RUNBOOK.md |
Полный список: bash …/start.sh без аргументов.
2.4 Вручную (если нет скрипта)
export WINEPREFIX="$HOME/Library/Containers/com.franke.Whisky/Bottles/<UUID>"
WINE64="$HOME/Library/Application Support/com.franke.Whisky/Libraries/Wine/bin/wine64"
export DYLD_LIBRARY_PATH="$HOME/Library/Application Support/com.franke.Whisky/Libraries/Wine/lib"
export WINEMSYNC=1 WINEESYNC=1
"$WINE64" 'C:\path\app.exe'
Профили overrides — WINE_MAC_RUNBOOK.md §4.
3. Инфраструктура (один раз на машину)
| Компонент | Путь |
|---|---|
| Whisky 3 | brew install --cask frankea/whisky/whisky |
| Wine | bash …/install-whiskywine-manual.sh |
| Bottle | ~/Library/Containers/com.franke.Whisky/Bottles/<UUID>/ |
| Кэш установщиков | scripts/games/cache/ |
Проверка места: bash …/start.sh disk.
Создание bottle: Whisky + → Windows 10 → имя; для GOG: bash …/gog/create-bottle.sh GOG-Install.
4. Шаблон: добавить программу в репозиторий
- Имя и bottle — зафиксировать UUID в
config.shилиgog/bottle.env. - Скрипт установки (если повторяемо) —
scripts/games/install-<app>.shили секция вgog/. - Скрипт запуска — команда в
start.shили документированныйrun-wine-exe.sh --profile …. - Строка в §6 ниже — тип, bottle, команда запуска, путь к exe.
- Сбои — краткий симптом в TROUBLESHOOTING.md.
5. Уже настроенные приложения
| Приложение | Bottle | Запуск | Примечание |
|---|---|---|---|
| Steam | HoMM-OldenEra | start.sh steam-ui |
Не параллельно с Steam.app |
| HoMM Olden Era | HoMM-OldenEra | start.sh play |
Не Play в Steam UI; нужен DXVK — §7 |
| GOG Galaxy 2.0 | HoMM-OldenEra | start.sh gog |
Логин в Wine — best effort |
| Jagged Alliance 3 | GOG-Install (Whisky) | gog/run-ja3.sh |
Установка: install-ja3-innoextract.sh (runbook) |
| GOG Galaxy 2.0 | GOG-Install | gog/launch-galaxy.sh |
Best effort; JA3 — не через Galaxy на этом Mac |
| Любой новый .exe | свой / общий | run-wine-exe.sh |
§2.1 |
6. Справочник скриптов
| Файл | Назначение |
|---|---|
| run-wine-exe.sh | Универсальный пуск exe в выбранном bottle |
| start.sh | Steam / HoMM / GOG / reset / disk / dxvk |
| setup-wine-bottle.sh | Шрифты + реестр + сеть (HoMM bottle) |
| config.sh | UUID HoMM, export_wine_env_* |
| gog/ | Отдельный bottle, gdiplus, web-stub |
| install-dxvk-macos.sh | DX11 для Unity |
7. HoMM Olden Era (ежедневно)
Краткая выжимка; детали сейвов/графики — прежние §4–5 методички.
Однократно
brew install p7zip
bash ~/code/local_machine/scripts/games/install-whiskywine-manual.sh
bash ~/code/local_machine/scripts/games/install-steam-extract.sh
bash ~/code/local_machine/scripts/games/install-dxvk-macos.sh
bash ~/code/local_machine/scripts/games/setup-wine-bottle.sh
Bottle HoMM-OldenEra, Sync MSync.
Каждый запуск
Steam Logged On → затем:
bash ~/code/local_machine/scripts/games/start.sh play
Не Play у Olden Era в окне Steam (нет DXVK).
Альтернатива: start.sh game; сейвы: start.sh saves; диагностика: start.sh diagnose-saves.
Переменные (start.sh game)
| Переменная | По умолчанию | Назначение |
|---|---|---|
HOMM_VDESKTOP |
1920x1080 |
Виртуальный стол Wine |
HOMM_USE_WINEVDESKTOP |
1 |
0 — без explorer /desktop |
HOMM_UNITY_WINDOWED |
1 |
Оконный режим Unity |
HOMM_UNITY_EXTRA |
(пусто) | напр. -popupwindow |
Сейвы (singleplayer 1/2/3)
~/Library/Containers/com.franke.Whisky/Bottles/38412122-AAE1-4831-9F2E-6A0EB364B3F9/drive_c/users/eternal/AppData/LocalLow/Unfrozen/HeroesOldenEra/users/Steam_<ID>/saves/singleplayer/
Bottle ID: 38412122-AAE1-4831-9F2E-6A0EB364B3F9 · Whisky 3 · WhiskyWine 3
8. Шпаргалка
G=~/code/local_machine/scripts/games
bash "$G/run-wine-exe.sh" --help
bash "$G/start.sh" disk
bash "$G/setup-wine-bottle.sh"
bash "$G/start.sh" play
bash "$G/gog/launch-galaxy.sh"