Een CLI-uitvoerbaar bestand verpakken als MSIX

Deze handleiding begeleidt u bij het verpakken van een bestaand uitvoerbaar opdrachtregelprogramma als EEN MSIX-pakket voor distributie via Windows Pakketbeheer (winget), de Microsoft Store of directe distributie.

Vereiste voorwaarden

  • Een bestaand uitvoerbaar CLI-bestand (.exe) dat u wilt verpakken
  • Windows 10 versie 1809 of hoger

Steps

1. Uw CLI-toepassing organiseren

Plaats het uitvoerbare CLI-bestand en eventuele afhankelijkheden in een toegewezen map. Deze map bevat alle bestanden die moeten worden opgenomen in uw MSIX-pakket.

mkdir MyCliPackage
cd MyCliPackage
# Copy your CLI executable and dependencies here

2. Winapp CLI installeren

Installeer de winapp CLI via Windows Pakketbeheer of werk deze bij naar de nieuwste versie als u deze al hebt:

# Install (or update if already installed)
winget install microsoft.winappcli --source winget

3. Genereer het Package.appxmanifest

Genereer een base Package.appxmanifest en vereiste assets voor het uitvoerbare CLI-bestand:

winapp manifest generate --executable .\yourcli.exe

Met deze opdracht maakt u een Package.appxmanifest bestand in de huidige map met standaardwaarden die zijn ingevuld op basis van het uitvoerbare bestand.

4. Het manifest configureren

Bewerk de gegenereerde Package.appxmanifest om uw pakket op maat te maken. In elke substap hieronder wordt uitgelegd wat u moet wijzigen en waarom.

4.1 Vereiste naamruimte toevoegen

Voeg de uap5 naamruimte toe aan het Package element als deze nog niet aanwezig is. Dit is nodig voor de uitvoeringsalias in stap 4.3:

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  ...
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap uap5 rescap">

4.2 Het toepassingselement configureren

Voeg in het <uap:VisualElements> element toe AppListEntry="none" om de app te verbergen in het menu Start. CLI-hulpprogramma's worden aangeroepen vanuit de terminal, dus ze hebben geen menu-item Start nodig:

<uap:VisualElements
    DisplayName="YourApp"
    Description="My Application"
    BackgroundColor="transparent"
    Square150x150Logo="Assets\Square150x150Logo.png"
    Square44x44Logo="Assets\Square44x44Logo.png"
    AppListEntry="none">
</uap:VisualElements>

4.3 Uitvoeringsaliasextensie toevoegen

Voeg een uitvoeringsalias toe zodat gebruikers uw CLI op naam kunnen uitvoeren vanuit een terminalvenster. Voeg dit toe binnen het <Application> element (na <uap:VisualElements>):

<Extensions>
  <uap5:Extension Category="windows.appExecutionAlias">
    <uap5:AppExecutionAlias>
      <uap5:ExecutionAlias Alias="yourcli.exe" />
    </uap5:AppExecutionAlias>
  </uap5:Extension>
</Extensions>

Vervang door yourcli.exe de gewenste opdrachtnaam voor uw CLI. Zodra een gebruiker de MSIX installeert, kan deze de CLI aanroepen met deze opdracht.

4.4 Metagegevens van toepassing bijwerken

Werk de volgende velden bij zodat deze overeenkomen met uw CLI-toepassing.

Belangrijk

De waarde Publisher in uw manifest moet overeenkomen met de uitgever in uw handtekeningcertificaat. Als u later een certificaat genereert (stap 5), wordt de uitgever uit uw manifest gebruikt. Als u de uitgever wijzigt nadat u een certificaat hebt gegenereerd, moet u het certificaat opnieuw genereren om overeen te komen.

  • Identity: Update Name, Publisher en Version

    <Identity
      Name="YourCompany.YourCLI"
      Publisher="CN=Your Company"
      Version="1.0.0.0" />
    
  • Eigenschappen: Weergavenaam, weergavenaam van uitgever en beschrijving bijwerken

    <Properties>
      <DisplayName>Your CLI Tool</DisplayName>
      <PublisherDisplayName>Your Company</PublisherDisplayName>
      <Description>Description of your CLI tool</Description>
      <Logo>Assets\StoreLogo.png</Logo>
    </Properties>
    
  • VisualElements: weergavenaam en assetverwijzingen bijwerken

    <uap:VisualElements
      DisplayName="Your CLI Tool"
      Description="Description of your CLI tool"
      BackgroundColor="transparent"
      Square150x150Logo="Assets\Square150x150Logo.png"
      Square44x44Logo="Assets\Square44x44Logo.png">
      <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" />
      <uap:SplashScreen Image="Assets\SplashScreen.png" />
    </uap:VisualElements>
    

Opmerking: U moet ook de juiste pictogrammenassets toevoegen aan een Assets map in uw pakketmap. Hoewel de app niet wordt weergegeven in het menu Start, zijn er nog steeds pictogrammen vereist voor het indienen van de Store en kunnen ze worden weergegeven in andere contexten.

5. (Optioneel) Een ontwikkelingscertificaat genereren

Voor lokale tests en distributie buiten de Microsoft Store moet u uw MSIX-pakket ondertekenen met een certificaat.

Genereer een ontwikkelingscertificaat. Bewaar deze buiten uw CLI-map om te voorkomen dat deze per ongeluk wordt opgenomen in het pakket:

# Navigate to a location outside your CLI folder (e.g., your home directory)
cd ~
winapp cert generate

Hiermee maakt u een devcert.pfx bestand in uw basismap (bijvoorbeeld C:\Users\yourname\devcert.pfx).

Als u dit certificaat op uw ontwikkelcomputer wilt vertrouwen, installeert u het (hiervoor zijn beheerdersbevoegdheden vereist):

# Run PowerShell as Administrator
winapp cert install ~\devcert.pfx

6. Uw CLI verpakken

U kunt nu het MSIX-pakket maken:

# Navigate back outside of your project folder
# Package with dev certificate (for local testing/distribution)
winapp pack .\path\to\MyCliPackage --cert .\path\to\devcert.pfx

Hiermee maakt u een .msix bestand in de huidige map.

7. Installeren en verifiëren

Installeer het MSIX-pakket om te controleren of alles werkt:

Add-AppxPackage .\MyCliPackage.msix

Als u in stap 4.3 een uitvoeringsalias hebt toegevoegd, kunt u de CLI nu uitvoeren vanaf elke terminal:

yourcli --help

Later verwijderen:

Get-AppxPackage *YourCLI* | Remove-AppxPackage

Tips

  1. Zodra u klaar bent voor distributie, kunt u uw MSIX ondertekenen met een certificaat voor ondertekening van programmacode van een certificeringsinstantie, zodat uw gebruikers geen zelfondertekend certificaat hoeven te installeren
  2. De Microsoft Store zal de MSIX voor u ondertekenen, u hoeft deze niet te ondertekenen voordat u hem indient.
  3. Mogelijk moet u meerdere MSIX-pakketten maken, één voor elke architectuur die u ondersteunt (x64, Arm64)

Volgende stappen

  • Distribute via winget: Dien uw MSIX in bij de Windows Pakketbeheer Community-opslagplaats
  • Publiceren naar de Microsoft Store: gebruik winapp store om uw pakket in te dienen
  • Set up CI/CD: Gebruik de GitHub Actie setup-WinAppCli om automatisering van het verpakken in uw pijplijn te realiseren.