added msi to release pipeline
Pull request / build (pull_request) Successful in 37s

This commit is contained in:
2026-08-13 16:13:49 +05:00
parent dd0bbdea42
commit 196a46f098
9 changed files with 337 additions and 86 deletions
+44 -6
View File
@@ -265,17 +265,19 @@ Identity берётся из переменных репозитория, а е
# Разово: отрисовать логотипы и иконку exe (уже в репозитории, повторить после правок)
powershell -File Packaging\New-Assets.ps1
# Проверка на своей машине: только своя архитектура
powershell -File Packaging\build-msix.ps1 -Architectures x64
# Проверка на своей машине
powershell -File Packaging\build-msix.ps1
# Для Partner Center — identity та, что зарезервирована там
powershell -File Packaging\build-msix.ps1 -Version 1.0.1.0 `
-IdentityName 12345AleksandrNeichev.CursorLang -Publisher "CN=ABCD1234-..."
```
Результат — `artifacts\packages\CursorLang-<версия>.msixbundle`, покрывающий x64
и arm64; рядом лежат пакеты отдельных архитектур. Bundle загружается в Partner
Center как есть.
Результат — `artifacts\packages\CursorLang-<версия>-x64.msix`. Он загружается в
Partner Center как есть.
Собирается только x64. Сборка под arm64 удвоила бы вес каждого релиза ради
машин, которые и так выполняют x64 через эмуляцию.
Здесь ничего не подписывается: подпись на пакет ставит сам Store, а для установки
на эту машину вместо пакета регистрируется layout — см. `-Install` ниже.
@@ -286,7 +288,7 @@ MSIX не может установить среду выполнения как
Чтобы посмотреть, как пакет работает на этой машине, соберите его с `-Install`:
```powershell
pwsh -File Packaging\build-msix.ps1 -Architectures x64 -Install
pwsh -File Packaging\build-msix.ps1 -Install
```
Приложение появится в меню «Пуск» как любое установленное. Регистрируется не сам
@@ -302,3 +304,39 @@ pwsh -File Packaging\build-msix.ps1 -Architectures x64 -Install
```powershell
Remove-AppxPackage (Get-AppxPackage -Name AleksandrNeichev.CursorLang).PackageFullName
```
## Сборка установщика
То же приложение собирается и обычным MSI — чтобы раздавать помимо Store: пока
Store не вынес решение или если так его и не вынесет. Ставить ничего, кроме .NET
SDK, не нужно: WiX приезжает пакетом NuGet, как и `makeappx`.
```powershell
# Собрать и запустить — посмотреть глазами пользователя
pwsh -File Packaging\build-installer.ps1 -Install
# Всё, что нужно релизу
pwsh -File Packaging\build-installer.ps1 -Version 1.0.1
```
Результат — `artifacts\installers\CursorLang-<версия>-x64.msi`. Всё лежит внутри
`.msi` — отдельного архива рядом с ним нет.
Устанавливается только для текущего пользователя, в
`%LOCALAPPDATA%\Programs\CursorLang`, поэтому не просит ни прав администратора,
ни подтверждения. Удаление идёт через «Параметры» — «Приложения», как у любой
программы, и уносит с собой запись автозапуска: иначе Windows продолжала бы
показывать в автозагрузке приложение, которого уже нет.
Установщик никто не подписывает, поэтому Windows предупреждает о неизвестном
издателе и пользователю приходится настоять. Покупка сертификата это сразу не
снимет: SmartScreen смотрит на репутацию, а у нового сертификата её нет, пока
приложение не наберёт установок.
Про проект WiX стоит знать две вещи, прежде чем его править. Он закреплён на WiX
5, а не на нынешней 7: начиная с шестой версии инструмент требует принимать
лицензию Open Source Maintenance Fee — бесплатную при доходе меньше $10 000 в
год, но принимать её должен человек, а не сборочный скрипт. И он отключает три
проверки ICE: MSI по-прежнему исходит из установки на всю машину, а установка в
профиль пользователя нарушает правила, которые описывают ровно то, что здесь и
задумано.