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
@@ -259,17 +259,19 @@ to submitting for certification — is written up in
# One-off: draw the logos and the exe icon (already committed, rerun after edits)
powershell -File Packaging\New-Assets.ps1
# A check on your own machine: your architecture alone
powershell -File Packaging\build-msix.ps1 -Architectures x64
# A check on your own machine
powershell -File Packaging\build-msix.ps1
# For Partner Center — the identity is the one reserved there
powershell -File Packaging\build-msix.ps1 -Version 1.0.1.0 `
-IdentityName 12345AleksandrNeichev.CursorLang -Publisher "CN=ABCD1234-..."
```
The result is `artifacts\packages\CursorLang-<version>.msixbundle` covering x64
and arm64; next to it lie the packages of single architectures. Upload the bundle
to Partner Center as it is.
The result is `artifacts\packages\CursorLang-<version>-x64.msix`. Upload it to
Partner Center as it is.
Only x64 is built. An arm64 build would double the size of every release for the
sake of machines that run the x64 one under emulation anyway.
Nothing here is signed: the Store signs the package itself, and for installing it
on this machine the layout is registered instead — see `-Install` below.
@@ -280,7 +282,7 @@ MSIX cannot install a runtime as a package dependency.
To see the package working on this machine, build it with `-Install`:
```powershell
pwsh -File Packaging\build-msix.ps1 -Architectures x64 -Install
pwsh -File Packaging\build-msix.ps1 -Install
```
The application then shows up in the Start menu like any installed one. What
@@ -296,3 +298,39 @@ To remove it by hand:
```powershell
Remove-AppxPackage (Get-AppxPackage -Name AleksandrNeichev.CursorLang).PackageFullName
```
## Building the installer
The same application also comes as an ordinary MSI, for handing round outside the
Store — to try it out before the Store has passed judgement, or if it never does.
Nothing has to be installed beyond the .NET SDK: WiX comes from a NuGet package,
the same way `makeappx` does.
```powershell
# Build it and run it afterwards, to see what a user sees
pwsh -File Packaging\build-installer.ps1 -Install
# Everything a release needs
pwsh -File Packaging\build-installer.ps1 -Version 1.0.1
```
The result is `artifacts\installers\CursorLang-<version>-x64.msi`. Everything
travels inside the .msi; there is no cabinet to send alongside it.
It installs for the current user alone, into `%LOCALAPPDATA%\Programs\CursorLang`,
and so asks for no administrator rights and no consent dialog. Uninstalling goes
through Apps in Settings like any other program and takes the startup entry with
it — otherwise Windows would go on listing an application that is no longer there.
Nobody signs the installer, so Windows warns about an unknown publisher and the
user has to insist. Buying a certificate would not silence it at once either:
SmartScreen goes by reputation, and a fresh certificate has none until enough
people have installed the application.
Two things about the WiX project are worth knowing before touching it. It pins
WiX 5 rather than the current 7: from version 6 the toolset asks every build to
accept the Open Source Maintenance Fee licence — free below $10,000 of yearly
revenue, but a decision for a person rather than for a build script. And it turns
off three ICE validation rules: MSI still assumes an installation for the whole
machine, and installing into the user's own profile trips rules that describe
exactly what was intended here.