Udostępnij za pośrednictwem


Publikowanie spakowanej aplikacji MAUI platformy .NET dla systemu Windows przy użyciu interfejsu wiersza polecenia

Podczas dystrybucji aplikacji interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI) dla systemu Windows można opublikować aplikację i jej zależności w folderze na potrzeby wdrożenia w innym systemie. Możesz również spakować aplikację do pakietu MSIX, który ma wiele korzyści dla użytkowników instalujących aplikację. Aby uzyskać więcej informacji na temat zalet msiX, zobacz Co to jest MSIX?

Tworzenie certyfikatu podpisywania

Należy użyć certyfikatu podpisywania do użycia w publikowaniu aplikacji. Ten certyfikat służy do podpisywania pakietu MSIX. W poniższych krokach pokazano, jak utworzyć i zainstalować certyfikat z podpisem własnym przy użyciu programu PowerShell:

Uwaga

Podczas tworzenia i używania certyfikatu z podpisem własnym tylko użytkownicy, którzy instalują i ufają certyfikatowi, mogą uruchomić aplikację. Jest to łatwe do zaimplementowania na potrzeby testowania, ale może uniemożliwić instalowanie aplikacji przez dodatkowych użytkowników. Gdy wszystko będzie gotowe do opublikowania aplikacji, zalecamy użycie certyfikatu wystawionego przez zaufane źródło. Ten system scentralizowanego zaufania pomaga zapewnić, że ekosystem aplikacji ma poziomy weryfikacji, aby chronić użytkowników przed złośliwymi podmiotami.

  1. Otwórz terminal programu PowerShell i przejdź do katalogu przy użyciu projektu.

  2. Użyj polecenia , New-SelfSignedCertificate aby wygenerować certyfikat z podpisem własnym.

    Wartość jest wyświetlana <PublisherName> użytkownikowi podczas instalowania aplikacji, podaj własną wartość i pomiń < > znaki. Możesz ustawić parametr na FriendlyName dowolny ciąg tekstu.

    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. Użyj następującego polecenia programu PowerShell, aby wysłać zapytanie do magazynu certyfikatów dla utworzonego certyfikatu:

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

    Powinny zostać wyświetlone wyniki podobne do następujących danych wyjściowych:

    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. Odcisk palca certyfikatu zostanie użyty później, więc skopiuj go do schowka. Jest to wartość odcisku palca, której wpis odpowiada wartości Subject i FriendlyName certyfikatu.

Aby uzyskać więcej informacji, zobacz Tworzenie certyfikatu na potrzeby podpisywania pakietów.

Konfigurowanie ustawień kompilacji projektu

Plik projektu jest dobrym miejscem do umieszczenia ustawień kompilacji specyficznych dla systemu Windows. Możesz nie chcieć umieścić niektórych ustawień w pliku projektu, takich jak hasła. Ustawienia opisane w tej sekcji można przekazać w wierszu polecenia w -p:name=value formacie . Jeśli ustawienie jest już zdefiniowane w pliku projektu, ustawienie przekazane w wierszu polecenia zastępuje ustawienie projektu.

Dodaj następujący <PropertyGroup> węzeł do pliku projektu. Ta grupa właściwości jest przetwarzana tylko wtedy, gdy platforma docelowa to Windows, a konfiguracja jest ustawiona na Releasewartość . Ta sekcja konfiguracji jest uruchamiana za każdym razem, gdy kompilacja lub publikowanie w Release trybie.

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

Zastąp <PackageCertificateThumbprint> wartość właściwości wcześniej wygenerowaną odciskiem palca certyfikatu. Alternatywnie możesz usunąć to ustawienie z pliku projektu i podać je w wierszu polecenia. Na przykład: -p:PackageCertificateThumbprint=A10612AF095FD8F8255F4C6691D88F79EF2B135E.

Drugi <PropertyGroup> w przykładzie jest wymagany do obejścia usterki w zestawie Windows SDK. Aby uzyskać więcej informacji na temat usterki, zobacz Problem z zestawem WindowsAppSDK #3337.

Publikowanie

Aby opublikować aplikację, otwórz terminal developer command prompt for VS 2022 (Wiersz polecenia dla deweloperów dla programu VS 2022 ) i przejdź do folderu projektu aplikacji .NET MAUI. dotnet publish Uruchom polecenie , podając następujące parametry:

Parametr Wartość
-f Struktura docelowa, czyli net8.0-windows{version}. Ta wartość jest programem TFM systemu Windows, takim jak net8.0-windows10.0.19041.0. Upewnij się, że ta wartość jest identyczna z wartością <TargetFrameworks> w węźle w pliku csproj .
-c Konfiguracja kompilacji, czyli Release.
-p:RuntimeIdentifierOverride=win10-x64
- lub -
-p:RuntimeIdentifierOverride=win10-x86
Unika usterki szczegółowo opisanej w temacie Problem z zestawem WindowsAppSDK #3337. -x64 Wybierz wersję lub -x86 parametru na podstawie platformy docelowej.

Ostrzeżenie

Próba opublikowania rozwiązania MAUI platformy .NET spowoduje dotnet publish , że polecenie podejmie próbę opublikowania każdego projektu w rozwiązaniu osobno, co może powodować problemy podczas dodawania innych typów projektów do rozwiązania. W związku z dotnet publish tym polecenie powinno być ograniczone do projektu aplikacji .NET MAUI.

Na przykład:

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

Uwaga

W programie .NET 8 dotnet publish polecenie jest domyślnie ustawione na konfigurację Release . W związku z tym konfigurację kompilacji można pominąć z wiersza polecenia.

Publikowanie kompilacji i pakietów aplikacji, kopiowanie podpisanego pakietu do folderu bin\Release\net8.0-windows10.0.19041.0\win10-x64\AppPackages\<appname>\ . <appname> to folder o nazwie po projekcie i wersji. W tym folderze znajduje się plik msix , który jest pakietem aplikacji.

Aby uzyskać więcej informacji o poleceniu dotnet publish , zobacz dotnet publish (Publikowanie dotnet).

Instalowanie aplikacji

Aby zainstalować aplikację, musi być podpisana przy użyciu certyfikatu, któremu już ufasz. Jeśli tak nie jest, system Windows nie pozwoli zainstalować aplikacji. Zostanie wyświetlone okno dialogowe podobne do poniższego z wyłączonym przyciskiem Zainstaluj:

Installing an untrusted app.

Zwróć uwagę, że na poprzedniej ilustracji wydawca był "nieznany".

Aby ufać certyfikatowi pakietu aplikacji, wykonaj następujące kroki:

  1. Kliknij prawym przyciskiem myszy plik msix i wybierz polecenie Właściwości.

  2. Wybierz kartę Podpisy cyfrowe.

  3. Wybierz certyfikat, a następnie naciśnij pozycję Szczegóły.

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

  4. Wybierz pozycję Wyświetl certyfikat.

  5. Wybierz pozycję Zainstaluj certyfikat....

  6. Wybierz pozycję Maszyna lokalna , a następnie wybierz pozycję Dalej.

    Jeśli zostanie wyświetlony monit z kontrolką konta użytkownika: Czy chcesz zezwolić tej aplikacji na wprowadzanie zmian na urządzeniu?, wybierz pozycję Tak.

  7. W oknie Kreator importu certyfikatów wybierz pozycję Umieść wszystkie certyfikaty w następującym magazynie.

  8. Wybierz pozycję Przeglądaj..., a następnie wybierz magazyn Zaufane Osoby. Wybierz OK, aby zamknąć okno dialogowe.

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

  9. Wybierz przycisk Dalej , a następnie pozycję Zakończ. Powinno zostać wyświetlone okno dialogowe z informacją: Importowanie zakończyło się pomyślnie.

    Certificate import wizard window with a successful import message.

  10. Wybierz przycisk OK w dowolnym oknie otwartym w ramach tego procesu, aby zamknąć je wszystkie.

Teraz spróbuj ponownie otworzyć plik pakietu, aby zainstalować aplikację. Powinno zostać wyświetlone okno dialogowe podobne do następującego z wyświetlonym poprawnie programem Publisher:

Installing a trusted app.

Wybierz przycisk Zainstaluj, jeśli chcesz zainstalować aplikację.

Bieżące ograniczenia

Poniższa lista zawiera opis bieżących ograniczeń dotyczących publikowania i pakowania:

  • Opublikowana aplikacja nie działa, jeśli spróbujesz uruchomić ją bezpośrednio z pliku wykonywalnego z folderu publikowania.
  • Sposobem uruchomienia aplikacji jest najpierw zainstalowanie jej za pośrednictwem spakowanego pliku MSIX .