Skip to content

feat: add msi support#1097

Open
djgilcrease wants to merge 6 commits into
mainfrom
msi-builder
Open

feat: add msi support#1097
djgilcrease wants to merge 6 commits into
mainfrom
msi-builder

Conversation

@djgilcrease

@djgilcrease djgilcrease commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

@pull-request-size pull-request-size Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Jun 13, 2026
@codecov

codecov Bot commented Jun 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 76.29870% with 73 lines in your changes missing coverage. Please review.
✅ Project coverage is 74.18%. Comparing base (886e929) to head (e6ed5ff).

Files with missing lines Patch % Lines
msi/msi.go 76.33% 41 Missing and 30 partials ⚠️
nfpm.go 60.00% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1097      +/-   ##
==========================================
+ Coverage   73.96%   74.18%   +0.21%     
==========================================
  Files          22       23       +1     
  Lines        2777     3083     +306     
==========================================
+ Hits         2054     2287     +233     
- Misses        497      539      +42     
- Partials      226      257      +31     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 13, 2026

Copy link
Copy Markdown

Deploying nfpm with  Cloudflare Pages  Cloudflare Pages

Latest commit: e6ed5ff
Status: ✅  Deploy successful!
Preview URL: https://8b3e6666.nfpm.pages.dev
Branch Preview URL: https://msi-builder.nfpm.pages.dev

View logs

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new msi packager to nfpm, enabling generation of Windows Installer .msi packages (and associated config/schema/docs) using the pure-Go go-msi library, plus CI/acceptance coverage for MSI structure and Windows install verification.

Changes:

  • Introduces a new msi packager implementation and unit tests (msi/).
  • Extends nfpm configuration (nfpm.go), schema (www/static/schema.json), and docs (www/content/docs/configuration.md) with MSI-specific fields.
  • Adds MSI acceptance test configs/scripts and wires them into Taskfile and GitHub Actions.

Reviewed changes

Copilot reviewed 15 out of 16 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
www/static/schema.json Adds JSON schema definitions and references for the new msi config block.
www/content/docs/configuration.md Documents MSI-specific configuration and conventions (Windows destinations, services, registry, signing).
testdata/acceptance/msi.install.yaml Adds Windows install-test MSI config used by Taskfile/CI.
testdata/acceptance/msi.basic.yaml Adds MSI acceptance config used by TestMSIStructure.
testdata/acceptance/install-msi.ps1 Adds PowerShell script to install/uninstall MSI and verify installed binary.
Taskfile.yml Adds Windows MSI packaging/install tasks for acceptance coverage.
nfpm.go Adds MSI config structs and env-var expansion for MSI signing/manufacturer.
msi/msi.go Implements the MSI packager (contents mapping, shortcuts, services, registry, signing).
msi/msi_test.go Adds unit tests validating MSI structure, ICE checks, defaults, GUID derivation, and signing.
internal/cmd/root.go Registers the MSI packager in the CLI via blank import.
go.mod Adds dependencies for MSI generation and PKCS#12 support.
go.sum Records checksums for newly added MSI-related dependencies.
files/files.go Fixes an infinite loop when walking parent dirs for Windows drive-letter destinations.
files/files_test.go Adds regression test for drive-letter destination termination.
acceptance_test.go Adds an MSI acceptance test validating MSI CFB header and ICE findings.
.github/workflows/build.yml Adds CI jobs for MSI structure validation (Linux) and install verification (Windows).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread msi/msi.go
Comment thread Taskfile.yml
Comment thread .github/workflows/build.yml
Comment thread .github/workflows/build.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants