exchanger/docs/operations/WINDOWS_EXPORT.md

5.2 KiB
Raw Permalink Blame History

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 -NoProfile -ExecutionPolicy Bypass -File .\tools\export-windows.ps1

Эта команда равнозначна явной Release-сборке:

.\tools\export-windows.ps1 -Configuration Release

Отладочная сборка:

.\tools\export-windows.ps1 -Configuration Debug

Другой путь к Godot передаётся явно:

.\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 без открытия окна:

$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 каталога релиза и совместимую версию конфигурации контроллера.