Files
local_machine/docs/games/WINE_APPS_LAUNCH_RUNBOOK.md
ahauimix 1938b7c743 Expand local_machine docs and automation for connectivity, games, and ops.
Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs;
document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game
scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 08:12:19 +03:00

226 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Runbook: запуск Windows-приложений в Wine (Whisky)
**Главный документ по пуску** любых `.exe` в bottle на Mac. Подготовка bottle, шрифты, GOG/сеть — [WINE_MAC_RUNBOOK.md](./WINE_MAC_RUNBOOK.md). Сбои — [TROUBLESHOOTING.md](./TROUBLESHOOTING.md). **Шрифты / пустой UI:** [TROUBLESHOOTING § шрифты](./TROUBLESHOOTING.md#шрифты-антипаттерны-сводка) (`dwrite` для Steam, `gdiplus=n,b` для GOG stub).
- **Скрипты:** [`../../scripts/games`](../../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](../../scripts/games/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](JA3_RUNBOOK.md) | **CrossOver:** `run-ja3-crossover.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](JA3_RUNBOOK.md). См. [TROUBLESHOOTING.md § Setup](./TROUBLESHOOTING.md).
Подробная подготовка по типам: [WINE_MAC_RUNBOOK.md §3](./WINE_MAC_RUNBOOK.md).
---
## 2. Запуск (любая программа)
### 2.1 Универсально: `run-wine-exe.sh`
```bash
# Справка
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
bash …/run-wine-exe.sh --background --log /tmp/my-app.log --profile plain 'C:\app\foo.exe'
```
### 2.2 Через Whisky GUI
1. Открыть bottle → **Run** → выбрать `.exe` из `drive_c` **или** с Mac (Whisky скопирует).
2. Окно: **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-crossover.sh` — [JA3_RUNBOOK.md](JA3_RUNBOOK.md) |
Полный список: `bash …/start.sh` без аргументов.
### 2.4 Вручную (если нет скрипта)
```bash
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](./WINE_MAC_RUNBOOK.md).
---
## 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. Шаблон: добавить программу в репозиторий
1. **Имя и bottle** — зафиксировать UUID в `config.sh` или `gog/bottle.env`.
2. **Скрипт установки** (если повторяемо) — `scripts/games/install-<app>.sh` или секция в `gog/`.
3. **Скрипт запуска** — команда в `start.sh` *или* документированный `run-wine-exe.sh --profile …`.
4. **Строка в §6** ниже — тип, bottle, команда запуска, путь к exe.
5. **Сбои** — краткий симптом в [TROUBLESHOOTING.md](./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 + CrossOver **JA3-GOG** | `gog/run-ja3-crossover.sh` | Установка: Whisky `install-ja3-innoextract.sh` ([runbook](JA3_RUNBOOK.md)) |
| **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 (ежедневно)
Краткая выжимка; детали сейвов/графики — прежние §45 методички.
### Однократно
```bash
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
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. Шпаргалка
```bash
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"
```