mkmsi

command
v1.27.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 10, 2026 License: MIT Imports: 19 Imported by: 0

README

mkmsi

Converts a yeet-generated .zip file to an MSI using msitools.

It needs wixl, wixl-heat, msibuild and msiinfo from msitools 0.106 or later on PATH. Use Homebrew (brew install msitools) on both macOS and Linux.

Distribution packages are usually too old. Debian and Ubuntu also split the tools across two packages -- msibuild and msiinfo in msitools, wixl and wixl-heat in wixl -- and Ubuntu 24.04 ships 0.103, which aborts with unhandled child Component node Condition on the <Condition> element in run/windows/anubis.wxs.

[!NOTE] This code was generated using Claude Opus 5 as a correctness fuzzer to ensure that this output is valid, works on Windows systems, and generally behaves like a well-behaved Windows installer. Due to facts and circumstances beyond my control with how these tools and the MSI format works, it is not currently possible to make these MSI builds reproducible.

I tried.

This is intended to be run by yeet at package build time:

// Build MSI installers from the Windows zips that were just built.
packages
  .flat()
  .filter((pkg) => pkg.includes("windows"))
  .filter((pkg) => pkg.endsWith(".zip"))
  .forEach((zip) => {
    const msiPath = zip.replace(/\.zip$/, ".msi");
    $`go run ./internal/cmd/mkmsi --zip ${zip} --out ${msiPath}`;
  });

Documentation

Overview

Command mkmsi turns the Windows zip that yeet builds into an MSI installer.

It needs wixl, wixl-heat, msibuild and msiinfo from msitools on PATH.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL