Skip to content

Adding true MSI support#606

Merged
caesay merged 124 commits intodevelopfrom
kdb/msi
Feb 22, 2026
Merged

Adding true MSI support#606
caesay merged 124 commits intodevelopfrom
kdb/msi

Conversation

@Keboo
Copy link
Member

@Keboo Keboo commented Apr 8, 2025

This is a major update to the msi files that Velopack can create for Windows.
This is a breaking change for the vpk CLI. The only MSI deployment tool is replaced with this new --msi option.
There is a sample branch under kdb/msi-example showing the usage with the Avalonia sample application. The updates are under the dev-scripts.
Unlike the previous MSI deployment tool that was modeled after the Clowd.Squirrel (and parent Squirrel project) that just injects a registry key to run on the startup of each user and perform a per-user install, this MSI is a true installer that can be used as a replacement for the Setup.exe.

The MSI currently has the following behavior:

  • It will always display a UI
  • It leverages the previous --msiVersionOverride <Version> option to allow setting the MSI version as it is more restrictive than the normal version number.
  • It will default to a per machine level install, giving the user the option to select per user. The assumption here is that by using the MSI rather than the Setup.exe that the intent is either to support a sys admin or GPO install. Optionally the developer can remove this screen my specifying --instLocation perUser or --instLocation perMachine when running vpk pack to specify the location ahead of time. In these cases, the installation location dialog will not be shown to the user.
  • An optional license can be specified with --instLicense <License Markdown File>.
  • It offers very limited customization for the text content. It supports --instWelcome <Welcome Markdown File>, --instReadMe <Readme Markdown File>, and --instConclusion <Conclusion Markdown File>. Be aware that though these are markdown files, the MSI really only supports plain text in these fields so nearly all formatting is stripped out.
  • It does not currently expose the ability to leverage any localization parameter (this is expected to be handled with Support localization of installer/update dialogs #60)
  • It supports setting the header and background bitmaps via the --msiBanner <Banner Bitmap> and --msiLogo <Background Bitmap> respectively. More discussion is needed on appropriate defaults for these.
  • It does not do the same bootstrapping of dependencies that the Setup.exe does.

Fixes #389

caesay and others added 30 commits April 5, 2025 22:11
bat scripting to work around Rust CLI argument parsing on windows
Fixing output logging
Updating to use it to manually pack
Adding temp directory for when packages directory cannot be created.
And removing shortcuts
Adding check for writable directory
Adding launch after install
Fixing file loading parameters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rust spawn sets bInheritHandles to true

5 participants