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.
Otwórz terminal programu PowerShell i przejdź do katalogu przy użyciu projektu.
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 naFriendlyName
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}")
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
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 Release
wartość . 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:
Zwróć uwagę, że na poprzedniej ilustracji wydawca był "nieznany".
Aby ufać certyfikatowi pakietu aplikacji, wykonaj następujące kroki:
Kliknij prawym przyciskiem myszy plik msix i wybierz polecenie Właściwości.
Wybierz kartę Podpisy cyfrowe.
Wybierz certyfikat, a następnie naciśnij pozycję Szczegóły.
Wybierz pozycję Wyświetl certyfikat.
Wybierz pozycję Zainstaluj certyfikat....
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.
W oknie Kreator importu certyfikatów wybierz pozycję Umieść wszystkie certyfikaty w następującym magazynie.
Wybierz pozycję Przeglądaj..., a następnie wybierz magazyn Zaufane Osoby. Wybierz OK, aby zamknąć okno dialogowe.
Wybierz przycisk Dalej , a następnie pozycję Zakończ. Powinno zostać wyświetlone okno dialogowe z informacją: Importowanie zakończyło się pomyślnie.
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:
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 .