Help us improve
Share bugs, ideas, or general feedback.
From winui
Packages WinUI 3 apps into MSIX installers, handles certificate generation/trust, code signing, self-contained deployment, and CI/CD. Use for release preparation or Store submission.
npx claudepluginhub microsoft/win-dev-skills --plugin winuiHow this skill is triggered — by the user, by Claude, or both
Slash command
/winui:winui-packagingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
| Task | Command |
Packaging MSIX apps. Creation, signing, Store submission, App Installer sideload, auto-update.
Builds and runs WinUI 3 apps with project creation, package installation, and error diagnosis. Use when building, running, or fixing build errors in a WinUI 3 project.
Packages Makepad apps for desktop (.deb/.dmg/.nsis), Android APK, iOS IPA, and WASM. Guides cargo-packager, cargo-makepad, and GitHub Actions CI/CD workflows.
Share bugs, ideas, or general feedback.
| Task | Command |
|---|---|
| Build for release | .\BuildAndRun.ps1 /p:Configuration=Release |
| Package + sign | winapp package <dir> --cert devcert.pfx |
| Generate + sign + package | winapp package <dir> --generate-cert --install-cert |
| Generate dev certificate | winapp cert generate |
| Trust certificate (admin) | winapp cert install ./devcert.pfx |
| Sign existing file | winapp sign ./app.msix ./devcert.pfx |
| Self-contained deployment | winapp package <dir> --cert devcert.pfx --self-contained |
Use the BuildAndRun.ps1 script from the winui-dev-workflow skill to build your app in Release configuration without launching it:
.\BuildAndRun.ps1 /p:Configuration=Release -SkipRun
winapp cert generate --manifest .
Creates devcert.pfx (default password: password). The --manifest flag auto-matches the Publisher field in Package.appxmanifest.
winapp cert install ./devcert.pfx
Adds cert to machine Trusted Root store. Persists across reboots.
winapp package <build-output-dir> --cert ./devcert.pfx
This locates appxmanifest.xml, stages the layout, generates resources.pri, creates .msix, and signs it.
# Local install
Add-AppxPackage ./MyApp.msix
# Or double-click the .msix file
Identity.Publisher — use winapp cert generate --manifest to auto-matchwinapp package --cert over separate winapp sign — one step instead of twocert install requires admin — run terminal as Administratorpassword — override with --password--timestamp is critical for production — without it, signatures expire with the cert:
winapp package <dir> --cert prod.pfx --timestamp http://timestamp.digicert.com
--self-contained bundles Windows App SDK runtime — larger but no runtime dependencyname: Build and Package
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: microsoft/setup-WinAppCli@v0.1
- name: Build
run: dotnet build -c Release -p:Platform=x64
- name: Package
run: |
winapp cert generate --if-exists skip --quiet
winapp package ./bin/x64/Release/ --cert ./devcert.pfx --quiet
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: msix-package
path: "*.msix"
CI/CD tips:
--quiet for clean output--if-exists skip with cert generate to avoid failures on re-runs.msix / .msixbundle produced by winapp package via Microsoft Partner Center — Apps and games → your app → Packages. Microsoft Store submission is browser-based; there is no first-party CLI submit command yet.| Error | Solution |
|---|---|
| "Publisher mismatch" | Run winapp cert generate --manifest to re-generate |
| "Certificate not trusted" | Run winapp cert install ./devcert.pfx as admin |
| "Access denied" | cert install needs admin elevation |
| "Certificate file already exists" | Use --if-exists overwrite or --if-exists skip |
| "appxmanifest.xml not found" | Run winapp init or pass --manifest <path> |
| "Package installation failed" | Trust cert first; remove stale: Get-AppxPackage <name> | Remove-AppxPackage |
| Signature invalid after time | Re-sign with --timestamp |
| File | Read when... |
|---|---|
references/sourcegen-patterns.md | Setting up AOT/trimming, JSON source generators, NativeAOT readiness, CsWin32 |