Repository navigation
Build the MSI with cimipkg instead of WiX - #16
Open
rodchristiansen wants to merge 1 commit into
Open
rodchristiansen wants to merge 1 commit into
rodchristiansen wants to merge 1 commit into
Conversation
The WiX MSI generated a new UpgradeCode for every release (.wix-upgrade-code is never committed) and had no MajorUpgrade, so each release installed beside the previous ones. build.ps1 -Msi now stages the publish output, scripts/ and build-info.yaml and runs cimipkg, which gives a stable UpgradeCode from the identifier and supersedes older builds; scripts/postinstall.ps1 already does the PATH entry, Start menu shortcut and ManagedNotifications ACLs the WiX source declared. The release workflow downloads cimipkg instead of installing WiX. deploy/Remove-WixCsharpDialog.ps1 uninstalls the side-by-side WiX installs (DisplayName csharpDialog, Publisher windowsadmins) and is meant to run before the first cimipkg release lands.
rodchristiansen
marked this pull request as ready for review
October 8, 2026 13:30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR stays a draft until a choice is made: move the MSI to cimipkg (this PR), or first fix the WiX build's UpgradeCode.
Why
Every WiX-built release gets a random UpgradeCode, because
.wix-upgrade-codeis never committed and CI generates a new one each time. There is noMajorUpgradeeither, so each release installs alongside the previous ones instead of replacing them. For example, v2026.10.07.1517 has{F93C3305-…}and v2026.10.07.1403 has{7FC5FA55-…}.What changed
build.ps1 -Msiuses cimipkg. It stages the publish output,scripts/andbuild-info.yaml(with${TIMESTAMP}andarchitecturefilled in), then runs cimipkg. cimipkg is found intools\(gitignored) or on PATH. cimipkg derives a stable UpgradeCode from the identifier ({0e959fd4-b21a-53e2-bc69-23eada0614ce}) and supersedes older builds. All the WiX authoring code is removed.scripts/postinstall.ps1already handled the PATH entry, the Start menu shortcut and the ManagedNotifications ACLs.scripts/uninstall.ps1already removes the shortcut and PATH entry.release.ymldownloads cimipkg instead of installing WiX.deploy/Remove-WixCsharpDialog.ps1uninstalls the side-by-side WiX installs, matching DisplayNamecsharpDialogand Publisherwindowsadmins. cimipkg builds are never touched, because their publisher isWindows Admins Open Source. Run it before the first cimipkg release lands: a WiX uninstall removes the files, PATH entry and shortcut that the cimipkg package also uses. sbin-installer already removes same-name products before it installs, in that order.Tested
build.ps1 -Build -Msion a Windows 11 x64 build host producedcsharpdialog-x64andcsharpdialog-arm64MSIs through cimipkg.{0e959fd4-b21a-53e2-bc69-23eada0614ce}and version 26.10.801.D:P(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;BU)Remove-WixCsharpDialog.ps1D:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;BU)D:PAI…D:P, andpostinstall.ps1writes it asD:PAI. The ACEs are identical, and both are protected (no inheritance from ProgramData).AIonly marks the DACL as auto-inherited for propagation to children.Not tested