Freigeben über


Veröffentlichen einer verpackten .NET MAUI-App für Windows mit der CLI

Wenn Sie Ihre .NET Multi-Platform App UI(.NET MAUI)-App für Windows verteilen, können Sie die App und deren Abhängigkeiten in einem Ordner für die Bereitstellung in einem anderen System veröffentlichen. Sie können die App auch in ein MSIX-Paket packen, was für die Benutzer*innen, die Ihre App installieren, zahlreiche Vorteile hat. Weitere Informationen zu den Vorteilen der Verwendung von MSIX für die Verpackung finden Sie unter Was ist MSIX?.

Erstellen eines Signaturzertifikats.

Sie müssen ein Signaturzertifikat für die Veröffentlichung Ihrer App verwenden. Dieses Zertifikat wird verwendet, um das MSIX-Paket zu signieren. In den folgenden Schritten wird das Erstellen eines selbstsignierten Stammzertifikats mit PowerShell unter Windows 10 beschrieben.

Hinweis

Wenn Sie ein selbstsigniertes Zertifikat erstellen und verwenden, können nur Benutzer*innen, die Ihr Zertifikat installieren und ihm vertrauen, Ihre App ausführen. Dies ist zu Testzwecken einfach zu implementieren, kann aber verhindern, dass weitere Benutzer Ihre App installieren. Wenn Sie bereit sind, Ihre App zu veröffentlichen, empfehlen wir Ihnen, ein von einer vertrauenswürdigen Quelle ausgestelltes Zertifikat zu verwenden. Dieses System des zentralen Vertrauens trägt dazu bei, dass das App-Ökosystem über Verifizierungsebenen verfügt, um die Nutzer vor böswilligen Akteuren zu schützen.

  1. Öffnen Sie ein PowerShell-Terminal und navigieren Sie zu dem Verzeichnis mit Ihrem Projekt.

  2. Verwenden Sie den Befehl New-SelfSignedCertificate, um ein selbstsigniertes Zertifikat zu erzeugen.

    Der <PublisherName>-Wert wird dem/der Benutzer*in angezeigt, wenn er/sie Ihre App installiert. Geben Sie Ihren eigenen Wert ein und lassen Sie die < >-Zeichen weg. Sie können den Parameter FriendlyName auf eine beliebige Zeichenfolge setzen, die Sie wünschen.

    New-SelfSignedCertificate -Type Custom `
                              -Subject "CN=<PublisherName>" `
                              -KeyUsage DigitalSignature `
                              -FriendlyName "My temp dev cert" `
                              -CertStoreLocation "Cert:\CurrentUser\My" `
                              -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
    
  3. Verwenden Sie den folgenden PowerShell-Befehl, um den Zertifikatspeicher nach dem erstellten Zertifikat abzufragen:

    Get-ChildItem "Cert:\CurrentUser\My" | Format-Table Thumbprint, Subject, FriendlyName
    

    Die Ergebnisse sollten in etwa wie in der folgenden Ausgabe aussehen:

    Thumbprint                               Subject                                  FriendlyName
    ----------                               -------                                  ------------
    DE8B962E7BF797CB48CCF66C8BCACE65C6585E2F CN=1f23fa36-2a2f-475e-a69e-3a14fe56ed4
    A6CA34FD0BA6B439787391F51C87B1AD0C9E7FAE CN=someone@microsoft.com
    94D93DBC97D4F7E4364A215F15C6ACFEFC71E569 CN=localhost                             ASP.NET Core HTTPS development certificate
    F14211566DACE867DA0BF9C2F9C47C01E3CF1D9B CN=john
    568027317BE8EE5E6AACDE5079D2DE76EC46EB88 CN=e1f823e2-4674-03d2-aaad-21ab23ad84ae
    DC602EE83C95FEDF280835980E22306067EFCA96 CN=John Smith, OU=MSE, OU=Users, DC=com
    07AD38F3B646F5AAC16F2F2570CAE40F4842BBE0 CN=Contoso                               My temp dev cert
    
  4. Der Fingerabdruck Ihres Zertifikats wird später verwendet, kopieren Sie ihn also in Ihre Zwischenablage. Es ist der Wert Fingerabdruck, dessen Eintrag mit dem Betreff und FriendlyName Ihres Zertifikats übereinstimmt.

Weitere Informationen finden Sie unter Erstellen eines Zertifikats zum Signaturen von Paketen.

Konfigurieren Sie die Einstellungen für die Projekterstellung

Die Projektdatei ist ein guter Ort, um Windows-spezifische Build-Einstellungen zu speichern. Einige Einstellungen, wie etwa Kennwörter, möchten Sie vielleicht nicht in die Projektdatei aufnehmen. Die in diesem Abschnitt beschriebenen Einstellungen können in der Befehlszeile im Format -p:name=value übergeben werden. Wenn die Einstellung bereits in der Projektdatei definiert ist, hat eine auf der Befehlszeile übergebene Einstellung Vorrang vor der Projekteinstellung.

Fügen Sie den folgenden <PropertyGroup>-Knoten Ihrer Projektdatei hinzu. Diese Eigenschaftsgruppe wird nur verarbeitet, wenn das Ziel-Framework Windows ist und die Konfiguration auf Release eingestellt ist. Dieser Konfigurationsabschnitt wird immer dann ausgeführt, wenn ein Build oder eine Veröffentlichung im Release-Modus erfolgt.

<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(Configuration)' == 'Release'">
    <AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
    <PackageCertificateThumbprint>A10612AF095FD8F8255F4C6691D88F79EF2B135E</PackageCertificateThumbprint>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
    <RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>

Ersetzen Sie den <PackageCertificateThumbprint>-Eigenschaftswert durch den zuvor generierten Zertifikatfingerabdruck. Alternativ können Sie diese Einstellung auch aus der Projektdatei entfernen und in der Befehlszeile angeben. Beispiel: -p:PackageCertificateThumbprint=A10612AF095FD8F8255F4C6691D88F79EF2B135E

Das zweite <PropertyGroup> im Beispiel ist erforderlich, um einen Fehler im Windows-SDK zu umgehen. Weitere Informationen zu diesem Fehler finden Sie unter WindowsAppSDK Issue #3337.

Veröffentlichen

Um Ihre App zu veröffentlichen, öffnen Sie die Entwickler-Eingabeaufforderung für VS 2022 und navigieren Sie zu dem Ordner für Ihr .NET MAUI-Appsprojekt. Führen Sie den Befehl dotnet publish mit den folgenden Parametern aus:

Parameter Wert
-f Das Zielframework ist net8.0-windows{version}. Dieser Wert ist ein Windows-TFM, wie etwa net8.0-windows10.0.19041.0. Stellen Sie sicher, dass dieser Wert mit dem Wert im <TargetFrameworks>-Knoten in Ihrer .csproj-Datei identisch ist.
-c Die Buildkonfiguration ist Release.
-p:RuntimeIdentifierOverride=win10-x64
– oder –
-p:RuntimeIdentifierOverride=win10-x86
Vermeidet den in WindowsAppSDK Issue #3337 beschriebenen Fehler. Wählen Sie je nach Zielplattform die -x64- oder -x86-Version des Parameters aus.

Warnung

Der Versuch, eine .NET MAUI-Lösung zu veröffentlichen, führt dazu, dass der Befehl dotnet publish versucht, jedes Projekt in der Lösung einzeln zu veröffentlichen, was zu Problemen führen kann, wenn Sie andere Projekttypen zu Ihrer Lösung hinzugefügt haben. Daher sollte der Befehl dotnet publish auf Ihr .NET MAUI-Appsprojekt beschränkt sein.

Beispiel:

dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64

Hinweis

In .NET 8 wird für den Befehl dotnet publish standardmäßig die Konfiguration Release verwendet. Daher kann die Buildkonfiguration von der Befehlszeile weggelassen werden.

Die Veröffentlichung erstellt und verpackt die App und kopiert das signierte Paket in den Ordner bin\Release\net8.0-windows10.0.19041.0\win10-x64\AppPackages\<Appsname>\. <Appsname> ist ein Ordner, der sowohl nach Ihrem Projekt als auch nach Ihrer Version benannt ist. In diesem Ordner gibt es eine msix-Datei, und das ist das Appspaket.

Weitere Informationen über den Befehl dotnet publish finden Sie unter dotnet publish.

Installieren der App

Um die App zu installieren, muss sie mit einem Zertifikat signiert sein, dem Sie bereits vertrauen. Ist dies nicht der Fall, lässt Windows Sie die App nicht installieren. Es wird ein Dialogfeld ähnlich dem folgenden angezeigt, wobei die Schaltfläche Installieren deaktiviert ist:

Installing an untrusted app.

Beachten Sie, dass im vorherigen Bild der Herausgeber „unbekannt“ war.

Führen Sie die folgenden Schritte aus, um dem Zertifikat des Appspakets zu vertrauen:

  1. Klicken Sie mit der rechten Maustaste auf die Datei .msix und wählen Sie Eigenschaften aus.

  2. Wählen Sie die Registerkarte Digitale Signaturen aus.

  3. Wählen Sie das Zertifikat aus und drücken Sie auf Details.

    Properties pane of an MSIX file with the digital signatures tab selected.

  4. Wählen Sie Zertifikat anzeigen aus.

  5. Wählen Sie Zertifikat installieren … aus.

  6. Wählen Sie Lokaler Rechner aus und wählen Sie anschließend Weiter aus.

    Wenn Sie von der Benutzerkontensteuerung gefragt werden, Möchten Sie dieser App erlauben, Änderungen an Ihrem Gerät vorzunehmen?, wählen Sie Ja aus.

  7. Wählen Sie im Fenster Zertifikatsimport-Assistent die Option Alle Zertifikate in den folgenden Speicher legen aus.

  8. Wählen Sie Durchsuchen … aus, und wählen Sie anschließend den Speicher für Vertrauenswürdige Personen aus. Wählen Sie OK aus, um das Dialogfeld zu schließen.

    Certificate import wizard window is shown while selecting the Trusted People store.

  9. Wählen Sie Weiter und anschließend Fertig stellen aus. Sie sollten ein Dialogfeld sehen, in dem steht: Der Import war erfolgreich.

    Certificate import wizard window with a successful import message.

  10. Wählen Sie OK in jedem Fenster aus, das im Rahmen dieses Vorgangs geöffnet wurde, um alle zu schließen.

Versuchen Sie nun, die Paketdatei erneut zu öffnen, um die App zu installieren. Sie sollten ein ähnliches Dialogfeld wie das folgende sehen, in dem der Publisher korrekt angezeigt wird:

Installing a trusted app.

Wählen Sie die Schaltfläche Installieren aus, wenn Sie die App installieren möchten.

Aktuelle Einschränkungen

Die folgende Liste beschreibt die derzeitigen Einschränkungen bei der Veröffentlichung und Verpackung:

  • Die veröffentlichte App funktioniert nicht, wenn Sie versuchen, sie direkt mit der ausführbaren Datei aus dem Veröffentlichungsordner auszuführen.
  • Um die App zu starten, muss sie zunächst über die gepackte MSIX-Datei installiert werden.