Skip to content

Latest commit

 

History

History
67 lines (45 loc) · 10.4 KB

installer.ru.md

File metadata and controls

67 lines (45 loc) · 10.4 KB

Проверка установщика Windows

Английская версия | Сборка установщика | Указатель проверок

Выполняйте проверки из корня репозитория в Windows с Python 3.12 x86 и Git. Автоматические проверки используют синтетические файлы игры и изолированные папки. Steam и запуск игровых бинарных файлов не требуются. Для проверки установки нативных модулей используйте отдельную процедуру проверки установки и NitroApi.

Модульные проверки

python -m unittest discover -s installer/tests -t .

Команда должна завершиться без ошибок тестов. Отдельно запишите пропуски, зависящие от платформы. Проверяется следующее поведение:

Область Ожидаемый результат
Установка и обновление Создается новая копия; существующие установки из ZIP и через установщик допускают повторное обновление.
Проверка игры и пакета Неподдерживаемые или поврежденные файлы игры и измененные файлы пакета отклоняются с сообщением об ошибке.
Настройки и удаление Обновление сохраняет настройки; удаление с сохранением файлов оставляет пользовательские данные; полное удаление удаляет выбранную копию.
Отмена и восстановление После отмены или ошибки обновления восстанавливаются прежние файлы; прерванное восстановление можно повторить без потери посторонних данных.
Пути и независимые копии Пересекающиеся пути отклоняются; изменение регистра имени папки не приводит к потере пользовательских файлов; изменение одной копии не затрагивает другую.
Скрипт сборки Справка и поддерживаемые имена параметров работают под доступными версиями PowerShell; ошибочные параметры и сбои команд останавливают сборку.

Проверка собранного установщика

Подготовьте закрепленные зависимости и компилятор, затем запустите проверку на синтетических файлах:

python -m pip install -r installer/requirements-build.txt
.\tools\installer\install_inno.ps1 -Destination build\installer-tools\inno-6.7.3
python tools/installer/smoke_installer.py --python (Get-Command python).Source `
  --iscc build/installer-tools/inno-6.7.3/ISCC.exe --work-dir build/installer-smoke/manual

Выберите рабочую папку, которая еще не существует. Утилита создает синтетический источник, собирает средства установки и проверочные установщики, затем выполняет установку и удаление в этой папке. Она также создает и проверяет отдельные записи удаления и ярлыки меню «Пуск» текущего пользователя.

Команда должна завершиться успешно и записать result.json со значением state, равным passed. Проверяются новая установка, независимые копии, обновление, повторное обновление, установка из ZIP, отмена и оба режима удаления. Источник должен остаться без изменений. Обновленные файлы должны соответствовать пакету, настройки и пользовательские файлы должны сохраниться, а удаление одной копии должно оставить ярлык другой. В проверку входят пути с пробелами, завершающим разделителем и именами, которые могли бы дать одинаковые ярлыки.

Неизмененную служебную программу установки из того же проверенного состояния исходников можно передать через --helper <абсолютный-путь-к-программе>. Для проверки обновления более ранней синтетической установки используйте --previous-installer <абсолютный-путь-к-инсталлеру>. Сохраните журналы установки и удаления и result.json из выбранной рабочей папки.

Для проверки упаковки готовой папки Release вместе с синтетическим установщиком используйте скрипт сборки с параметром -SmokeTest. Храните артефакты выпуска отдельно от синтетических проверочных установщиков.

Проверка интерактивного мастера

Используйте источник и установщик, созданные синтетической проверкой. Для рабочей папки из примера выше:

.\build\installer-smoke\manual\output\NextClient-0.0.2-smoke-setup.exe `
  /GAMEDIR="$PWD\build\installer-smoke\manual\source with spaces"

Выберите новую папку назначения внутри рабочей папки проверки. Для проверки места на диске и отмены копирования подготовьте синтетический источник объемом свыше 1024 МБ.

  1. В режиме новой установки убедитесь, что обе кнопки Browse открывают системное окно выбора папки Windows с адресной строкой. При выборе родительской папки назначения к пути должно добавляться Counter Strike 1.6 NextClient. Введенный вручную путь должен использоваться целиком.
  2. Проверьте папку по умолчанию: C:\Games\Counter Strike 1.6 NextClient. Перед установкой выберите изолированную папку проверки. Требуемое место должно учитывать копируемый источник и пакет; объем свыше 1024 МБ должен отображаться в ГБ.
  3. Отмените операцию во время копирования. Установщик должен дождаться восстановления и не оставить завершенную новую установку. При отмене обновления должны восстановиться прежние файлы и настройки.
  4. Завершите новую установку. На последней странице должна быть галочка Create a desktop shortcut. Проверьте путь ярлыка и наличие unins000.exe в корне игры.
  5. Обновите проверочную копию. Browse должен использовать выбранную папку без добавления имени и предупреждения о существующей папке. Галочка ярлыка на рабочем столе не должна предлагаться.
  6. Удалите проверочную копию. Проверьте выбранный режим удаления и убедитесь, что удалены ярлыки только этой копии.

Не используйте рабочую игру разработчика для проверки восстановления или полного удаления. При ошибке восстановления сохраните журналы и .nextclient/transaction для диагностики.

Проверка workflow и сохранение результатов

При изменении workflow выполните actionlint .github/workflows/build.yml .github/workflows/release.yml. Убедитесь, что задача установщика получает NextClient-${{ github.sha }} после успешной сборки нативных модулей, а публикация ожидает проверки установщика. EXE, контрольная сумма и манифест должны включаться в файлы выпуска и подтверждение происхождения сборки.

Сохраните ревизию исходников, снимок относящихся к проверке файлов, версии инструментов, команды, коды завершения, пропуски, хеши артефактов и пути журналов в отчете сессии под .superpowers/. Разделяйте автоматические проверки и наблюдения интерфейса. Используйте успешные результаты повторно для неизмененных исходников и конфигурации. Локальная проверка не подтверждает запуск GitHub Actions или публикацию выпуска.