Guide

Quickstart

From zero to a fixed, signed MSIX in three steps.

  1. Install from the PowerShell Gallery

    Install-Module -Name MSIXForcelets -Scope CurrentUser
    Import-Module MSIXForcelets
  2. Fetch the tooling (one-time)

    The published module stays lean — the Windows SDK packaging tools and the Package Support Framework binaries are downloaded on demand. Since v1.0.2 a single umbrella cmdlet pulls everything in one go:

    Install-MSIXForceletsAllRequirements   # MSIX tooling + Tim Mangan PSF + Microsoft PSF

    Re-run with -Force to update existing components (or -Confirm:$false for an entirely non-interactive run). The individual updaters are still there if you want to pick one:

    Update-MSIXTooling        # Windows SDK: makeappx, signtool, msixmgr
    Update-MSIXTMPSF          # Tim Mangan Package Support Framework
    Update-MSIXMicrosoftPSF   # Microsoft Package Support Framework

    The tooling is stored outside the module version folder, so module updates keep it — see Where the tooling lives.

  3. Open, fix, repack & sign

    $cert = New-MSIXSelfSigningCert -Subject 'CN=Contoso' -Password 'pw'
    $pkg  = Open-MSIXPackage -MsixFile 'C:\Apps\WinRAR.msix' -Force
    
    # apply a ready-made fix...
    Add-MSIXFixWinRAR -MSIXFolder $pkg.FullName
    
    Close-MSIXPackage -MSIXFolder $pkg.FullName -MSIXFile 'C:\Apps\WinRAR_fixed.msix'
    Set-MSIXSignature -MSIXFile 'C:\Apps\WinRAR_fixed.msix' -PfxCert $cert

Build your own fix → Cmdlet reference

Where the tooling lives

Since v1.0.6 the downloaded tooling sits in the module root next to the version folders — Update-Module no longer triggers a new download, and every installation (all users or current user) keeps its own tooling.

C:\Program Files\WindowsPowerShell\Modules\MSIXForcelets\
    1.0.5\
    1.0.7\
    Tooling\        # MSIXPSF\, Libs\MSIXPackaging\, Libs\MSIXCore\
InstallationTooling folder (example)
-Scope AllUsers C:\Program Files\WindowsPowerShell\Modules\MSIXForcelets\Tooling
C:\Program Files\PowerShell\Modules\MSIXForcelets\Tooling
downloads need an elevated PowerShell
-Scope CurrentUser Documents\WindowsPowerShell\Modules\MSIXForcelets\Tooling
Documents\PowerShell\Modules\MSIXForcelets\Tooling
Source checkout the src folder itself

Installed both for all users and for the current user? Each installation uses its own Tooling folder — an all-users installation never writes into a user profile.

How the module finds it

On import the first match wins — the banner shows the result in its Tooling line:

  1. $env:MSIXFORCELETS_TOOLING, if set — e.g. a shared team folder
  2. the module folder itself, if it already contains the tooling (source checkout, versions up to 1.0.5)
  3. <module root>\Tooling, when the module is loaded from a version folder
  4. %LOCALAPPDATA%\MSIXForceletsTooling otherwise (e.g. a source checkout without tooling)

Updating from 1.0.5 or older

Older versions downloaded the tooling into their own version folder. After Update-Module the import banner points this out. Take the tooling over without downloading it again, then remove the old versions — or simply run Install-MSIXForceletsAllRequirements to download it fresh.

Update-Module MSIXForcelets
Import-Module MSIXForcelets -Force   # load the new version; the banner shows the hint
Copy-MSIXTooling                     # no download; elevated for AllUsers
Import-Module MSIXForcelets -Force   # activate the copied tooling
Get-InstalledModule MSIXForcelets -AllVersions |
    Where-Object Version -ne (Get-Module MSIXForcelets).Version |
    Uninstall-Module