105 lines
5.2 KiB
Markdown
105 lines
5.2 KiB
Markdown
# Debug и Release export для Windows x64
|
||
|
||
## Требования
|
||
|
||
- официальный Godot 4.7.1 Mono;
|
||
- export templates той же версии;
|
||
- .NET SDK 8;
|
||
- PowerShell 5.1 или новее.
|
||
|
||
## Native Video
|
||
|
||
`addons/native_video` — runtime GDExtension, а не editor-addon: его манифест и Windows DLL
|
||
автоматически входят в оба export-пресета. Для MP4/MOV/M4V проект работает с рендерером Mobile
|
||
(Vulkan); Compatibility для этого расширения не подходит. После каждого export нужно проверить
|
||
воспроизведение реального ролика на целевом GPU, потому что headless smoke не создаёт RenderingDevice.
|
||
|
||
## Пресеты
|
||
|
||
В проекте есть два самостоятельных Windows-пресета:
|
||
|
||
- `Windows x64 Release` — production-фича, без debug symbols и консольного wrapper;
|
||
- `Windows x64 Debug` — development-фича, с debug symbols, исходниками C# и консольным wrapper.
|
||
|
||
В Godot режим шаблона всё равно определяется действием экспорта. Для гарантированного результата
|
||
используйте скрипт ниже: он вызывает `--export-release` или `--export-debug` в соответствии с
|
||
выбранной конфигурацией.
|
||
|
||
## Сборка
|
||
|
||
Из корня проекта:
|
||
|
||
```powershell
|
||
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\export-windows.ps1
|
||
```
|
||
|
||
Эта команда равнозначна явной Release-сборке:
|
||
|
||
```powershell
|
||
.\tools\export-windows.ps1 -Configuration Release
|
||
```
|
||
|
||
Отладочная сборка:
|
||
|
||
```powershell
|
||
.\tools\export-windows.ps1 -Configuration Debug
|
||
```
|
||
|
||
Другой путь к Godot передаётся явно:
|
||
|
||
```powershell
|
||
.\tools\export-windows.ps1 -Configuration Release -GodotPath "D:\Godot\Godot_v4.7.1-stable_mono_win64.exe"
|
||
```
|
||
|
||
Результат создаётся в новом каталоге
|
||
`artifacts/windows/Exchanger-0.6.0-<Release|Debug>-YYYYMMDD-HHMMSS/`; существующие сборки не
|
||
перезаписываются. Release-файл называется `Exchanger.exe`. Debug создаёт основной
|
||
`Exchanger.Debug.exe` и консольный wrapper `Exchanger.Debug.console.exe`.
|
||
|
||
## Изоляция production-проекта
|
||
|
||
Скрипт создаёт временную staging-копию внутри `artifacts/export-staging`, проверяет абсолютный
|
||
путь перед каждым рекурсивным удалением и очищает staging в `finally`.
|
||
|
||
В staging и PCK не попадают:
|
||
|
||
- `.git`, `.godot`, `.agents`, `.vscode`;
|
||
- `references/`, `tests/`, `tools/`, `docs/`, `artifacts/`;
|
||
- все editor/development addons.
|
||
|
||
Из staging-версии `project.godot` удаляются editor plugins и два development-autoload:
|
||
`GodotxToast` и `_mcp_game_helper`. Исходный проект при этом не меняется, поэтому редакторская
|
||
автоматизация продолжает работать после экспорта.
|
||
|
||
## Состав и проверка
|
||
|
||
Оба пресета встраивают PCK и .NET outputs в EXE. Release не включает debug symbols и C#-исходники;
|
||
Debug включает их и использует консольный wrapper. Тестовые сборки и editor-addon файлы не входят
|
||
ни в один вариант.
|
||
|
||
Контрольный экспорт 2026-09-02:
|
||
|
||
- Debug: `Exchanger.Debug.exe` — 185175952 байта, console wrapper — 91136 байт;
|
||
- Release: один `Exchanger.exe` — 190151408 байт;
|
||
- оба основных EXE завершили headless smoke с mock-оборудованием и exit code 0;
|
||
- эти контрольные файлы не подписаны Authenticode; подпись остаётся отдельным release-шагом.
|
||
|
||
Короткий автоматический smoke-run без открытия окна:
|
||
|
||
```powershell
|
||
$exe = ".\artifacts\windows\<build>\Exchanger.exe"
|
||
Start-Process $exe -ArgumentList "--headless", "--quit-after", "180", "--no-theme-dlc" -Wait
|
||
```
|
||
|
||
Первый проверенный export 0.6.0 содержал 189 файлов и занимал 180,8 МиБ; headless smoke завершился
|
||
с exit code 0. Эти числа являются диагностическими и могут меняться вместе с Godot/.NET.
|
||
|
||
## Перед релизом
|
||
|
||
- выполнить `dotnet test Exchanger.sln`;
|
||
- установить актуальный `active_theme.pck` либо отдельно проверить fallback;
|
||
- проверить реальный COM-порт и аппаратную приёмку;
|
||
- выполнить чистую установку на отдельном Windows-устройстве;
|
||
- при необходимости подписать EXE и DLL;
|
||
- сохранить checksum каталога релиза и совместимую версию конфигурации контроллера.
|