Verpacken einer ausführbaren CLI-Datei als MSIX

Dieser Leitfaden führt Sie durch das Verpacken einer vorhandenen ausführbaren Befehlszeile als MSIX-Paket für die Verteilung über Windows Paket-Manager (Winget), den Microsoft Store oder die direkte Verteilung.

Voraussetzungen

  • Eine vorhandene ausführbare CLI -Datei (.exe), die Sie packen möchten
  • Windows 10 Version 1809 oder höher

Schritte

1. Organisieren Ihrer CLI-Anwendung

Platzieren Sie Ihr CLI-Programm und alle Abhängigkeiten in einem eigenen Ordner. Dieser Ordner enthält alle Dateien, die in Ihrem MSIX-Paket enthalten sein sollten.

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

2. Installieren der winapp CLI

Installieren Sie die winapp CLI über Windows Paket-Manager, oder aktualisieren Sie sie auf die neueste Version, wenn Sie sie bereits haben:

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

3. Generieren Sie die Datei Package.appxmanifest

Generieren Sie ein Basis-Package.appxmanifest und erforderliche Ressourcen für Ihr CLI-Executable.

winapp manifest generate --executable .\yourcli.exe

Mit diesem Befehl wird eine Package.appxmanifest Datei im aktuellen Verzeichnis erstellt, in der Standardwerte aus der ausführbaren Datei ausgefüllt sind.

4. Konfigurieren des Manifests

Bearbeiten Sie die generierte Package.appxmanifest Datei, um Ihr Paket anzupassen. In den folgenden Unterschritten wird erläutert, was geändert werden soll und warum.

4.1 Hinzufügen des erforderlichen Namespaces

Fügen Sie den uap5 Namespace dem Package Element hinzu, wenn er noch nicht vorhanden ist. Dies ist für den Ausführungsalias in Schritt 4.3 erforderlich:

<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 Konfigurieren des Anwendungselements

Fügen Sie <uap:VisualElements> im AppListEntry="none" Element hinzu, um die App aus dem Startmenü auszublenden. CLI-Tools werden über das Terminal aufgerufen, daher benötigen sie keinen Startmenüeintrag:

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

4.3 Hinzufügen der Ausführungsaliaserweiterung

Fügen Sie einen Ausführungsalias hinzu, damit Benutzer Ihre CLI über ein beliebiges Terminalfenster ausführen können. Fügen Sie dies innerhalb des <Application> Elements hinzu (nach <uap:VisualElements>):

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

Ersetzen Sie yourcli.exe durch den gewünschten Befehlsnamen für Ihre CLI. Sobald ein Benutzer msIX installiert hat, kann er ihre CLI mit diesem Befehl aufrufen.

4.4 Anwendungsmetadaten aktualisieren

Aktualisieren Sie die folgenden Felder so, dass sie Ihrer CLI-Anwendung entsprechen.

Von Bedeutung

Der Wert Publisher in Ihrem Manifest muss mit dem Herausgeber in Ihrem Signaturzertifikat übereinstimmen. Wenn Sie ein Zertifikat später generieren (Schritt 5), verwendet es den Herausgeber aus Ihrem Manifest. Wenn Sie den Herausgeber nach dem Generieren eines Zertifikats ändern, müssen Sie das Zertifikat neu generieren, damit es übereinstimmt.

  • Identity: Aktualisieren Name, Publisher und Version

    <Identity
      Name="YourCompany.YourCLI"
      Publisher="CN=Your Company"
      Version="1.0.0.0" />
    
  • Eigenschaften: Anzeigename aktualisieren, Herausgeberanzeigename und Beschreibung

    <Properties>
      <DisplayName>Your CLI Tool</DisplayName>
      <PublisherDisplayName>Your Company</PublisherDisplayName>
      <Description>Description of your CLI tool</Description>
      <Logo>Assets\StoreLogo.png</Logo>
    </Properties>
    
  • VisualElements: Aktualisieren von Anzeigenamen und Objektbezügen

    <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>
    

Hinweis: Außerdem sollten Sie einem Assets Ordner im Paketverzeichnis die richtigen Symbolressourcen hinzufügen. Während die App nicht im Startmenü angezeigt wird, sind symbole für die Store-Übermittlung noch erforderlich und können in anderen Kontexten angezeigt werden.

5. (Optional) Generieren eines Entwicklungszertifikats

Für lokale Tests und Verteilungen außerhalb der Microsoft Store müssen Sie Ihr MSIX-Paket mit einem Zertifikat signieren.

Generieren Sie ein Entwicklungszertifikat. Bewahren Sie ihn außerhalb Ihres CLI-Ordners auf, um versehentlich das Einschließen in das Paket zu vermeiden:

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

Dadurch wird eine devcert.pfx Datei in Ihrem Startverzeichnis erstellt (z. B. C:\Users\yourname\devcert.pfx).

Um diesem Zertifikat auf Ihrem Entwicklungscomputer zu vertrauen, installieren Sie es (erfordert Administratorrechte):

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

6. Packen Sie Ihre CLI

Jetzt können Sie das MSIX-Paket erstellen:

# 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

Dadurch wird eine .msix Datei im aktuellen Verzeichnis erstellt.

7. Installieren und Überprüfen

Installieren Sie das MSIX-Paket, um sicherzustellen, dass alles funktioniert:

Add-AppxPackage .\MyCliPackage.msix

Wenn Sie in Schritt 4.3 einen Ausführungsalias hinzugefügt haben, können Sie ihre CLI jetzt über ein beliebiges Terminal ausführen:

yourcli --help

So deinstallieren Sie später:

Get-AppxPackage *YourCLI* | Remove-AppxPackage

Tipps

  1. Nachdem Sie bereit für die Verteilung sind, können Sie Ihr MSIX mit einem Codesignaturzertifikat von einer Zertifizierungsstelle signieren, damit Ihre Benutzer kein selbstsigniertes Zertifikat installieren müssen.
  2. Der Microsoft Store signiert das MSIX für Sie, Sie müssen das Paket nicht vor der Übermittlung signieren.
  3. Möglicherweise müssen Sie mehrere MSIX-Pakete erstellen, eine für jede architektur, die Sie unterstützen (x64, Arm64)

Nächste Schritte

  • Distribute via winget: Übermitteln Sie Ihren MSIX an das Windows Paket-Manager Community-Repository
  • Publish to the Microsoft Store: Verwenden Sie winapp store, um Ihr Paket zu übermitteln.
  • Set up CI/CD: Verwenden Sie die GitHub Action setup-WinAppCli, um das Verpacken in Ihrer Pipeline zu automatisieren.