Publikowanie aplikacji Mac Catalyst do dystrybucji poza sklepem Mac App Store
Alternatywą do dystrybucji aplikacji Mac Catalyst za pośrednictwem sklepu Mac App Store jest rozpowszechnianie ich poza sklepem Mac App Store. Dzięki temu podejściu aplikacja Mac Catalyst może być hostowana w lokalizacji wybranej do pobrania. Członkowie programu Apple Developer Program i programu Apple Developer Enterprise Program mogą korzystać z tej metody dystrybucji.
Dystrybucja aplikacji Mac Catalyst wymaga aprowizacji aplikacji przy użyciu profilu aprowizacji. Profile aprowizacji to pliki zawierające informacje o podpisywaniu kodu, a także tożsamość aplikacji i jej zamierzony mechanizm dystrybucji.
Aby dystrybuować aplikację Mac Catalyst interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI) poza sklepem Mac App Store, należy utworzyć profil aprowizacji dystrybucji specyficzny dla niego. Ten profil umożliwia cyfrowe podpisanie aplikacji na potrzeby wydania, dzięki czemu można ją zainstalować na komputerach Mac. Profil aprowizacji dystrybucji zawiera identyfikator aplikacji i certyfikat aplikacji identyfikatora dewelopera. Aby zidentyfikować siebie lub organizację, musisz utworzyć certyfikat aplikacji identyfikatora dewelopera, jeśli jeszcze go nie masz. Ponadto należy utworzyć certyfikat instalatora identyfikatora dewelopera, aby podpisać pakiet instalatora aplikacji.
Proces aprowizacji aplikacji .NET MAUI Mac Catalyst do dystrybucji poza sklepem Mac App Store jest następujący:
- Utwórz dwa żądania podpisania certyfikatu. Aby uzyskać więcej informacji, zobacz Tworzenie żądania podpisania certyfikatu.
- Utwórz certyfikat aplikacji identyfikatora dewelopera. Aby uzyskać więcej informacji, zobacz Tworzenie certyfikatu aplikacji identyfikatora dewelopera.
- Utwórz certyfikat instalatora identyfikatora dewelopera. Aby uzyskać więcej informacji, zobacz Tworzenie certyfikatu instalatora identyfikatora dewelopera.
- Utwórz identyfikator aplikacji. Aby uzyskać więcej informacji, zobacz Tworzenie identyfikatora aplikacji.
- Utwórz profil aprowizacji. Aby uzyskać więcej informacji, zobacz Tworzenie profilu aprowizacji.
- Pobierz profil aprowizacji. Aby uzyskać więcej informacji, zobacz Pobieranie profilu aprowizacji w środowisku Xcode.
Ważne
W tym artykule przedstawiono aprowizowanie dystrybucji poza sklepem Mac App Store przy użyciu konta dewelopera firmy Apple będącego częścią programu Apple Developer Program. Można go również użyć dla konta dewelopera Apple, które jest częścią programu Apple Developer Enterprise Program, ponieważ wymagane kroki są w dużej mierze identyczne.
Następnie po zakończeniu aprowizacji należy przygotować aplikację do publikowania, publikowania jej i notaryzować ją przy użyciu następującego procesu:
- Opcjonalnie dodaj uprawnienia do aplikacji. Aby uzyskać więcej informacji, zobacz Dodawanie uprawnień.
- Zaktualizuj plik Info.plist aplikacji. Aby uzyskać więcej informacji, zobacz Update Info.plist (Aktualizowanie pliku Info.plist).
- Wyłącz weryfikację podpisu kodu dla aplikacji. Aby uzyskać więcej informacji, zobacz Wyłączanie weryfikacji podpisu kodu.
- Opublikuj aplikację przy użyciu wiersza polecenia. Aby uzyskać więcej informacji, zobacz Publikowanie przy użyciu wiersza polecenia.
- Zasylaruj aplikację. Aby uzyskać więcej informacji, zobacz Notarize your app (Notarize your app).
Tworzenie żądania podpisania certyfikatu
Przed utworzeniem certyfikatu dystrybucji należy najpierw utworzyć żądanie podpisania certyfikatu (CSR) w programie Keychain Access na komputerze Mac:
Na komputerze Mac uruchom program Keychain Access.
W obszarze Dostęp do pęku kluczy wybierz asystenta > certyfikatów dostępu > łańcucha kluczy zażądać certyfikatu z poziomu elementu menu Urząd certyfikacji... .
W oknie dialogowym Asystent certyfikatów wprowadź adres e-mail w polu Adres e-mail użytkownika.
W oknie dialogowym Asystent certyfikatów wprowadź nazwę klucza w polu Nazwa pospolita.
W oknie dialogowym Asystent certyfikatów pozostaw puste pole Adres e-mail urzędu certyfikacji.
W oknie dialogowym Asystent certyfikatów wybierz przycisk radiowy Zapisane na dysku i wybierz pozycję Kontynuuj:
Zapisz żądanie podpisania certyfikatu w znanej lokalizacji.
W oknie dialogowym Asystent certyfikatów wybierz przycisk Gotowe.
Zamknij pozycję Dostęp pęku kluczy.
Powtórz ten proces, aby utworzyć drugie żądanie podpisania certyfikatu. Pierwszy csr będzie używany do tworzenia certyfikatu aplikacji identyfikatora dewelopera. Drugi zostanie użyty do utworzenia certyfikatu instalatora identyfikatora dewelopera.
Ważne
Nie można użyć tego samego żądania podpisania certyfikatu, aby utworzyć certyfikat aplikacji identyfikatora dewelopera i certyfikat instalatora identyfikatora dewelopera.
Tworzenie certyfikatu aplikacji identyfikatora dewelopera
Csr umożliwia wygenerowanie certyfikatu identyfikatora dewelopera, który potwierdza twoją tożsamość. Certyfikat identyfikatora dewelopera należy utworzyć przy użyciu identyfikatora Apple ID dla konta dewelopera firmy Apple:
W przeglądarce internetowej zaloguj się do konta dewelopera firmy Apple.
Na koncie dewelopera firmy Apple wybierz kartę Certyfikaty, Identyfikatory i profile .
Na stronie Certyfikaty, identyfikatory i profile wybierz + przycisk, aby utworzyć nowy certyfikat.
Na stronie Tworzenie nowego certyfikatu wybierz przycisk radiowy Aplikacja identyfikatora dewelopera przed wybraniem przycisku Kontynuuj:
Na stronie Tworzenie nowego certyfikatu wybierz przycisk radiowy G2 Sub-CA, a następnie wybierz pozycję Wybierz plik:
W oknie dialogowym Wybieranie plików do przekazania wybierz wcześniej utworzony plik żądania pierwszego certyfikatu (plik z
.certSigningRequest
rozszerzeniem pliku), a następnie wybierz pozycję Przekaż.Na stronie Tworzenie nowego certyfikatu wybierz przycisk Kontynuuj:
Na stronie Pobierz certyfikat wybierz przycisk Pobierz:
Plik certyfikatu (plik z rozszerzeniem) zostanie pobrany do wybranej
.cer
lokalizacji.Na komputerze Mac kliknij dwukrotnie pobrany plik certyfikatu, aby zainstalować certyfikat w pęku kluczy. Certyfikat zostanie wyświetlony w kategorii Moje certyfikaty w obszarze Dostęp do łańcucha kluczy i zaczyna się od aplikacji identyfikatora dewelopera:
Uwaga
Zanotuj pełną nazwę certyfikatu w programie Keychain Access. Będzie to wymagane podczas podpisywania aplikacji.
Tworzenie certyfikatu instalatora identyfikatora dewelopera
Csr umożliwia wygenerowanie certyfikatu instalatora identyfikatora dewelopera, który jest wymagany do podpisania pakietu instalatora aplikacji. Certyfikat instalatora należy utworzyć przy użyciu identyfikatora Apple ID dla konta dewelopera firmy Apple:
Na koncie dewelopera firmy Apple wybierz kartę Certyfikaty, Identyfikatory i profile .
Na stronie Certyfikaty, identyfikatory i profile wybierz + przycisk, aby utworzyć nowy certyfikat.
Na stronie Tworzenie nowego certyfikatu wybierz przycisk radiowy Instalator identyfikatora dewelopera przed wybraniem przycisku Kontynuuj:
Na stronie Tworzenie nowego certyfikatu wybierz przycisk radiowy G2 Sub-CA, a następnie wybierz pozycję Wybierz plik:
W oknie dialogowym Wybieranie plików do przekazania wybierz utworzony wcześniej drugi plik żądania certyfikatu (plik z
.certSigningRequest
rozszerzeniem pliku), a następnie wybierz pozycję Przekaż.Na stronie Tworzenie nowego certyfikatu wybierz przycisk Kontynuuj:
Na stronie Pobierz certyfikat wybierz przycisk Pobierz:
Plik certyfikatu (plik z rozszerzeniem) zostanie pobrany do wybranej
.cer
lokalizacji.Na komputerze Mac kliknij dwukrotnie pobrany plik certyfikatu, aby zainstalować certyfikat w pęku kluczy. Certyfikat jest wyświetlany w kategorii Moje certyfikaty w obszarze Dostęp do łańcucha kluczy i rozpoczyna się od Instalatora identyfikatora dewelopera:
Uwaga
Zanotuj pełną nazwę certyfikatu w programie Keychain Access. Będzie to wymagane podczas podpisywania aplikacji.
Tworzenie profilu dystrybucji
Profil aprowizacji dystrybucji umożliwia cyfrowe podpisanie aplikacji .NET MAUI Mac Catalyst na potrzeby wydania, dzięki czemu można ją zainstalować na innym komputerze Mac. Profil aprowizacji dystrybucji poza sklepem Mac App Store zawiera identyfikator aplikacji i certyfikat aplikacji identyfikatora dewelopera.
Tworzenie identyfikatora aplikacji
Identyfikator aplikacji jest wymagany do zidentyfikowania dystrybuowanych aplikacji. Identyfikator aplikacji jest podobny do ciągu odwrotnego DNS, który jednoznacznie identyfikuje aplikację i powinien być identyczny z identyfikatorem pakietu aplikacji. Na potrzeby testowania możesz użyć tego samego identyfikatora aplikacji, który został użyty podczas wdrażania aplikacji na urządzeniu.
Istnieją dwa typy identyfikatorów aplikacji:
- Symbol wieloznaczny. Identyfikator aplikacji z symbolami wieloznacznymi umożliwia używanie jednego identyfikatora aplikacji do dopasowania wielu aplikacji i zazwyczaj ma postać
com.domainname.*
. Identyfikator aplikacji z symbolami wieloznacznymi może służyć do dystrybucji wielu aplikacji i powinien być używany w przypadku aplikacji, które nie umożliwiają obsługi funkcji specyficznych dla aplikacji. - Wyraźny. Jawny identyfikator aplikacji jest unikatowy dla pojedynczej aplikacji i zazwyczaj ma postać
com.domainname.myid
. Jawny identyfikator aplikacji umożliwia dystrybucję jednej aplikacji z pasującym identyfikatorem pakietu. Jawne identyfikatory aplikacji są zwykle używane w przypadku aplikacji, które umożliwiają korzystanie z funkcji specyficznych dla aplikacji, takich jak Apple Pay lub Game Center. Aby uzyskać więcej informacji na temat możliwości, zobacz Możliwości.
Aby utworzyć nowy identyfikator aplikacji:
Na koncie dewelopera firmy Apple przejdź do pozycji Certyfikaty, identyfikatory i profile.
Na stronie Certyfikaty, Identyfikatory i profile wybierz kartę Identyfikatory .
Na stronie Identyfikatory wybierz + przycisk , aby utworzyć nowy identyfikator aplikacji.
Na stronie Rejestrowanie nowego identyfikatora wybierz przycisk radiowy Identyfikatory aplikacji przed wybraniem przycisku Kontynuuj:
Na stronie Rejestrowanie nowego identyfikatora wybierz pozycję Aplikacja przed wybraniem przycisku Kontynuuj:
Na stronie Rejestrowanie identyfikatora aplikacji wprowadź opis i wybierz przycisk radiowy Jawny lub Wieloznaczny identyfikator pakietu. Następnie wprowadź identyfikator pakietu dla aplikacji w odwrotnym formacie DS:
Ważne
Wprowadzony identyfikator pakietu musi odpowiadać identyfikatorowi pakietu w pliku Info.plist w projekcie aplikacji.
Identyfikator pakietu dla aplikacji MAUI platformy .NET jest przechowywany w pliku projektu jako właściwość Identyfikator aplikacji. W programie Visual Studio w Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt aplikacji .NET MAUI i wybierz pozycję Właściwości. Następnie przejdź do karty Ogólne udostępnione > usługi MAUI. Pole Identyfikator aplikacji zawiera listę identyfikatora pakietu.
Po zaktualizowaniu wartości pola Identyfikator aplikacji wartość identyfikatora pakietu w pliku Info.plist zostanie automatycznie zaktualizowana.
Na stronie Rejestrowanie identyfikatora aplikacji wybierz wszystkie możliwości używane przez aplikację. Wszystkie możliwości należy skonfigurować zarówno na tej stronie, jak i w pliku Entitlements.plist w projekcie aplikacji. Aby uzyskać więcej informacji, zobacz Możliwości i uprawnienia.
Na stronie Rejestrowanie identyfikatora aplikacji wybierz przycisk Kontynuuj.
Na stronie Potwierdzanie identyfikatora aplikacji wybierz przycisk Zarejestruj.
Tworzenie profilu aprowizacji
Po utworzeniu identyfikatora aplikacji należy utworzyć profil aprowizacji dystrybucji. Ten profil umożliwia cyfrowe podpisanie aplikacji na potrzeby wydania, dzięki czemu można ją zainstalować na komputerach Mac.
Aby utworzyć profil aprowizacji dystrybucji poza sklepem Mac App Store:
Na stronie Certyfikaty, identyfikatory i profile konta dewelopera firmy Apple wybierz kartę Profile .
Na karcie Profile kliknij + przycisk , aby utworzyć nowy profil.
Na stronie Rejestrowanie nowego profilu aprowizacji wybierz przycisk radiowy Identyfikator dewelopera przed kliknięciem przycisku Kontynuuj:
Na stronie Generowanie profilu aprowizacji wybierz przycisk radiowy Mac Catalyst. Następnie z listy rozwijanej Identyfikator aplikacji wybierz wcześniej utworzony identyfikator aplikacji przed kliknięciem przycisku Kontynuuj :
Na stronie Generowanie profilu aprowizacji wybierz przycisk radiowy odpowiadający certyfikatowi dystrybucji przed kliknięciem przycisku Kontynuuj :
Na stronie Generowanie profilu aprowizacji wprowadź nazwę profilu aprowizacji przed kliknięciem przycisku Generuj:
Uwaga
Zanotuj nazwę profilu aprowizacji, ponieważ będzie ona wymagana podczas podpisywania aplikacji.
Na stronie Generowanie profilu aprowizacji opcjonalnie kliknij przycisk Pobierz, aby pobrać profil aprowizacji.
Uwaga
Teraz nie trzeba pobierać profilu aprowizacji. Zamiast tego zrobisz to w środowisku Xcode.
Pobieranie profilu aprowizacji w środowisku Xcode
Po utworzeniu profilu aprowizacji na koncie dewelopera firmy Apple program Xcode może go pobrać, aby był dostępny do podpisywania aplikacji:
Na komputerze Mac uruchom program Xcode.
W programie Xcode wybierz element menu Preferencje programu Xcode > ... .
W oknie dialogowym Preferencje wybierz kartę Konta.
Na karcie Konta kliknij + przycisk , aby dodać konto dewelopera Apple do programu Xcode:
W oknie podręcznym typ konta wybierz pozycję Apple ID , a następnie kliknij przycisk Kontynuuj :
W oknie podręcznym logowania wprowadź swój identyfikator Apple ID i kliknij przycisk Dalej .
W oknie podręcznym logowania wprowadź hasło identyfikatora Apple ID i kliknij przycisk Dalej :
Na karcie Konta kliknij przycisk Zarządzaj certyfikatami... , aby upewnić się, że certyfikat dystrybucji został pobrany.
Na karcie Konta kliknij przycisk Pobierz profile ręczne, aby pobrać profile aprowizacji:
Poczekaj na zakończenie pobierania, a następnie zamknij program Xcode.
Dodawanie uprawnień
Piaskownica aplikacji firmy Apple ogranicza dostęp do zasobów systemowych i danych użytkownika w aplikacjach dla komputerów Mac, aby zawierać uszkodzenia w przypadku naruszenia zabezpieczeń aplikacji. Opcjonalnie można ją włączyć dla aplikacji Mac Catalyst, które są dystrybuowane poza sklepem Mac App Store.
Można to osiągnąć, dodając plik Entitlements.plist do folderu Platforms/MacCatalyst projektu aplikacji .NET MAUI:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
Uprawnienie piaskownicy aplikacji jest definiowane przy użyciu com.apple.security.app-sandbox
klucza typu boolean
. Aby uzyskać informacje na temat piaskownicy aplikacji, zobacz Ochrona danych użytkownika za pomocą piaskownicy aplikacji w developer.apple.com. Aby uzyskać informacje o uprawnieniach piaskownicy aplikacji, zobacz Uprawnienia piaskownicy aplikacji.
Jeśli aplikacja otworzy wychodzące połączenia sieciowe, musisz również dodać com.apple.security.network.client
klucz typu boolean
, do pliku Entitlements.plist :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>
Aby uzyskać informacje o upoważnieniu wychodzących połączeń sieciowych, zobacz com.apple.security.network.client w developer.apple.com.
Aktualizowanie pliku Info.plist
Przed opublikowaniem aplikacji należy zaktualizować jego plik Info.plist o dodatkowe informacje.
Określanie idiomu interfejsu użytkownika
Aplikacja Mac Catalyst może działać w idiom interfejsu użytkownika iPad lub Mac:
- Idiom interfejsu użytkownika tabletu iPad nakazuje systemowi macOS skalowanie interfejsu użytkownika aplikacji w celu dopasowania środowiska wyświetlania komputerów Mac przy jednoczesnym zachowaniu wyglądu przypominającego tablet iPad.
- Idiom interfejsu użytkownika dla komputerów Mac nie skaluje interfejsu użytkownika aplikacji w celu dopasowania go do środowiska wyświetlania komputerów Mac. Niektóre kontrolki zmieniają swój rozmiar i wygląd i współdziałają z nimi tak samo, jak w przypadku interakcji z kontrolkami
AppKit
.
Domyślnie aplikacje .NET MAUI Mac Catalyst używają idiomu interfejsu użytkownika tabletu iPad. Jeśli jest to żądane zachowanie, upewnij się, że plik Info.plist aplikacji określa tylko 2 jako wartość UIDeviceFamily
klucza:
<key>UIDeviceFamily</key>
<array>
<integer>2</integer>
</array>
Aby wdrożyć idiom interfejsu użytkownika dla komputerów Mac, zaktualizuj plik Info.plist aplikacji, aby określić wartość 6 jako wartość UIDeviceFamily
klucza:
<key>UIDeviceFamily</key>
<array>
<integer>6</integer>
</array>
Aby uzyskać więcej informacji na temat idiomów interfejsu użytkownika Narzędzia Mac Catalyst, zobacz Określanie idiom interfejsu użytkownika dla aplikacji Mac Catalyst.
Ustawianie domyślnego języka i regionu dla aplikacji
CFBundleDevelopmentRegion
Ustaw klucz w pliku Info.plist aplikacji na wartość string
, która reprezentuje region programowania natywnego lokalizacji:
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
Wartość klucza powinna być projektantem języka z opcjonalnym projektantem regionu. Aby uzyskać więcej informacji, zobacz CFBundleDevelopmentRegion w developer.apple.com.
Ustawianie klucza praw autorskich
NSHumanReadableCopyright
Ustaw klucz w pliku Info.plist aplikacji na wartość string
reprezentującą czytelne dla człowieka powiadomienie o prawach autorskich dla aplikacji:
<key>NSHumanReadableCopyright</key>
<string>MyMauiApp © 2023</string>
Aby uzyskać więcej informacji, zobacz NSHumanReadableCopyright w developer.apple.com.
Deklarowanie użycia szyfrowania aplikacji
Jeśli aplikacja korzysta z szyfrowania i planujesz rozpowszechnić ją poza Stany Zjednoczone lub Kanadą, będzie ona objęta wymaganiami dotyczącymi zgodności eksportu w STANACH Zjednoczonych. Informacje o użyciu szyfrowania w pliku Info.plist można podać w aplikacji.
Jest to realizowane przez dodanie ITSAppUsesNonExemptEncryption
klucza do pliku Info.plist aplikacji z wartością wskazującąboolean
, czy aplikacja używa szyfrowania:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
Aby uzyskać więcej informacji, zobacz Zgodność z przepisami dotyczącymi eksportu szyfrowania w developer.apple.com.
Wyłączanie weryfikacji podpisu kodu
Obecnie podczas próby opublikowania aplikacji .NET MAUI Mac Catalyst do dystrybucji poza sklepem Mac App Store, pod warunkiem spełnienia wymagań dotyczących aprowizacji, zostanie wyświetlony błąd dotyczący codesign
zakończenia pracy z kodem 3:
/usr/local/share/dotnet/packs/Microsoft.MacCatalyst.Sdk/16.2.1040/tools/msbuild/iOS/Xamarin.Shared.targets(1930,3): error MSB6006: "codesign" exited with code 3. [/Users/davidbritch/Projects/MyMauiApp/MyMauiApp/MyMauiApp.csproj::TargetFramework=net8.0-maccatalyst]
Po codesign
pomyślnym zalogowaniu aplikacji _CodesignVerify
element docelowy nie może zweryfikować podpisu kodu:
test-requirement: code failed to satisfy specified code requirement(s)
Z powodu tego błędu plik .pkg nie jest generowany.
W związku z tym obecnie należy dodać następujący element docelowy kompilacji na końcu pliku projektu, aby wyłączyć weryfikację podpisu kodu:
<Project Sdk="Microsoft.NET.Sdk">
...
<Target Name="_SkipCodesignVerify" BeforeTargets="_CodesignVerify" AfterTargets="_CodesignAppBundle">
<PropertyGroup>
<_RequireCodeSigning>false</_RequireCodeSigning>
</PropertyGroup>
</Target>
</Project>
Publikowanie przy użyciu wiersza polecenia
Aby opublikować aplikację Mac Catalyst z poziomu wiersza polecenia na komputerze Mac, otwórz terminal i przejdź do folderu dla projektu aplikacji .NET MAUI. dotnet publish
Uruchom polecenie , podając następujące parametry:
Parametr | Wartość |
---|---|
-f lub --framework |
Struktura docelowa, czyli net8.0-maccatalyst . |
-c lub --configuration |
Konfiguracja kompilacji, czyli Release . |
-p:MtouchLink |
Tryb linku dla projektu, który może być None , SdkOnly lub Full . |
-p:CreatePackage |
Ustaw wartość na true , aby pakiet (.pkg) został utworzony dla aplikacji na końcu kompilacji. |
-p:EnableCodeSigning |
Ustaw wartość na true , aby włączono podpisywanie kodu. |
-p:EnablePackageSigning |
Ustaw wartość na true , aby utworzony pakiet został podpisany. |
-p:CodesignKey |
Nazwa klucza podpisywania kodu. Ustaw nazwę certyfikatu dystrybucji, jak pokazano w sekcji Dostęp do pęku kluczy. |
-p:CodesignProvision |
Profil aprowizacji do użycia podczas podpisywania pakietu aplikacji. |
-p:CodesignEntitlements |
Ścieżka do pliku uprawnień, który określa uprawnienia wymagane przez aplikację. Ustaw wartość Platforms\MacCatalyst\Entitlements.plist . |
-p:PackageSigningKey |
Klucz podpisywania pakietu do użycia podczas podpisywania pakietu. Ustaw nazwę certyfikatu instalatora, jak pokazano w sekcji Dostęp pęku kluczy. |
-p:RuntimeIdentifier |
Identyfikator środowiska uruchomieniowego (RID) dla projektu. Wersje kompilacji aplikacji .NET MAUI Mac Catalyst domyślnie używają maccatalyst-x64 identyfikatorów środowiska uruchomieniowego i maccatalyst-arm64 jako identyfikatorów środowiska uruchomieniowego do obsługi uniwersalnych aplikacji. Aby obsługiwać tylko jedną architekturę, określ maccatalyst-x64 wartość lub maccatalyst-arm64 . |
-p:UseHardenedRuntime |
Ustaw wartość na wartość , aby true włączyć środowisko uruchomieniowe ze wzmocnionym zabezpieczeniami, które jest wymagane w przypadku aplikacji Katalizator dla komputerów Mac, które są dystrybuowane poza sklepem Mac App Store. |
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.
Dodatkowe parametry kompilacji można określić w wierszu polecenia, jeśli nie są one podane w <PropertyGroup>
pliku projektu. W poniższej tabeli wymieniono niektóre typowe parametry:
Parametr | Wartość |
---|---|
-p:ApplicationTitle |
Nazwa widoczna dla użytkownika dla aplikacji. |
-p:ApplicationId |
Unikatowy identyfikator aplikacji, taki jak com.companyname.mymauiapp . |
-p:ApplicationVersion |
Wersja kompilacji identyfikującej iterację aplikacji. |
-p:ApplicationDisplayVersion |
Numer wersji aplikacji. |
-p:RuntimeIdentifier |
Identyfikator środowiska uruchomieniowego (RID) dla projektu. Wersje kompilacji aplikacji .NET MAUI Mac Catalyst domyślnie używają maccatalyst-x64 identyfikatorów środowiska uruchomieniowego i maccatalyst-arm64 jako identyfikatorów środowiska uruchomieniowego do obsługi uniwersalnych aplikacji. Aby obsługiwać tylko jedną architekturę, określ maccatalyst-x64 wartość lub maccatalyst-arm64 . |
Aby uzyskać pełną listę właściwości kompilacji, zobacz Właściwości pliku projektu.
Ważne
Wartości dla wszystkich tych parametrów nie muszą być podane w wierszu polecenia. Można je również udostępnić w pliku projektu. Jeśli parametr jest udostępniany w wierszu polecenia i w pliku projektu, parametr wiersza polecenia ma pierwszeństwo. Aby uzyskać więcej informacji na temat udostępniania właściwości kompilacji w pliku projektu, zobacz Definiowanie właściwości kompilacji w pliku projektu.
Na przykład użyj następującego polecenia, aby skompilować i podpisać .pkg na komputerze Mac w celu dystrybucji poza sklepem Mac App Store:
dotnet publish -f net8.0-maccatalyst -c Release -p:MtouchLink=SdkOnly -p:CreatePackage=true -p:EnableCodeSigning=true -p:EnablePackageSigning=true -p:CodesignKey="Developer ID Application: John Smith (AY2GDE9QM7)" -p:CodesignProvision="MyMauiApp (Non-App Store)" -p:CodesignEntitlements="Platforms\MacCatalyst\Entitlements.plist" -p:PackageSigningKey="Developer ID Installer: John Smith (AY2GDE9QM7)" -p:UseHardenedRuntime=true
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, znaków i pakietów aplikacji, a następnie kopiuje .pkg do folderu bin/Release/net8.0-maccatalyst/publish/ . Jeśli opublikujesz aplikację przy użyciu tylko jednej architektury, zostanie ona opublikowana w folderze bin/Release/net8.0-maccatalyst/{architecture}/publish/ .
Podczas procesu podpisywania może być konieczne wprowadzenie hasła logowania i zezwolenie codesign
na productbuild
jego uruchomienie:
Aby uzyskać więcej informacji o poleceniu dotnet publish
, zobacz dotnet publish (Publikowanie dotnet).
Definiowanie właściwości kompilacji w pliku projektu
Alternatywą do określenia parametrów kompilacji w wierszu polecenia jest określenie ich w pliku projektu w pliku <PropertyGroup>
. W poniższej tabeli wymieniono niektóre typowe właściwości kompilacji:
Właściwości | Wartość |
---|---|
<ApplicationTitle> |
Nazwa widoczna dla użytkownika dla aplikacji. |
<ApplicationId> |
Unikatowy identyfikator aplikacji, taki jak com.companyname.mymauiapp . |
<ApplicationVersion> |
Wersja kompilacji identyfikującej iterację aplikacji. |
<ApplicationDisplayVersion> |
Numer wersji aplikacji. |
<CodesignKey> |
Nazwa klucza podpisywania kodu. Ustaw nazwę certyfikatu dystrybucji, jak pokazano w sekcji Dostęp do pęku kluczy. |
<CodesignEntitlements> |
Ścieżka do pliku uprawnień, który określa uprawnienia wymagane przez aplikację. Ustaw wartość Platforms\MacCatalyst\Entitlements.plist . |
<CodesignProvision> |
Profil aprowizacji do użycia podczas podpisywania pakietu aplikacji. |
<CreatePackage> |
Ustaw wartość na true , aby pakiet (.pkg) został utworzony dla aplikacji na końcu kompilacji. |
<EnableCodeSigning> |
Ustaw wartość na true , aby włączono podpisywanie kodu. |
<EnablePackageSigning> |
Ustaw wartość na true , aby utworzony pakiet został podpisany. |
<MtouchLink> |
Tryb linku dla projektu, który może być None , SdkOnly lub Full . |
<PackageSigningKey> |
Klucz podpisywania pakietu do użycia podczas podpisywania pakietu. Ustaw nazwę certyfikatu instalatora, jak pokazano w sekcji Dostęp pęku kluczy. |
<RuntimeIdentifier> |
Identyfikator środowiska uruchomieniowego (RID) dla projektu. Wersje kompilacji aplikacji .NET MAUI Mac Catalyst domyślnie używają maccatalyst-x64 identyfikatorów środowiska uruchomieniowego i maccatalyst-arm64 jako identyfikatorów środowiska uruchomieniowego do obsługi uniwersalnych aplikacji. Aby obsługiwać tylko jedną architekturę, określ maccatalyst-x64 wartość lub maccatalyst-arm64 . |
<UseHardenedRuntime> |
Ustaw wartość na wartość , aby true włączyć środowisko uruchomieniowe ze wzmocnionym zabezpieczeniami, które jest wymagane w przypadku aplikacji Katalizator dla komputerów Mac, które są dystrybuowane poza sklepem Mac App Store. |
Aby uzyskać pełną listę właściwości kompilacji, zobacz Właściwości pliku projektu.
Ważne
Wartości tych właściwości kompilacji nie muszą być podane w pliku projektu. Można je również udostępnić w wierszu polecenia podczas publikowania aplikacji. Dzięki temu można pominąć określone wartości z pliku projektu.
W poniższym przykładzie przedstawiono typową grupę właściwości do kompilowania i podpisywania aplikacji Mac Catalyst do dystrybucji poza sklepem Mac App Store:
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-maccatalyst|AnyCPU'">
<MtouchLink>SdkOnly</MtouchLink>
<EnableCodeSigning>True</EnableCodeSigning>
<EnablePackageSigning>true</EnablePackageSigning>
<CreatePackage>true</CreatePackage>
<CodesignKey>Developer ID Application: John Smith (AY2GDE9QM7)</CodesignKey>
<CodesignProvision>MyMauiApp (Non-App Store)</CodesignProvision>
<CodesignEntitlements>Platforms\MacCatalyst\Entitlements.plist</CodesignEntitlements>
<PackageSigningKey>Developer ID Installer: John Smith (AY2GDE9QM7)</PackageSigningKey>
<UseHardenedRuntime>true</UseHardenedRuntime>
</PropertyGroup>
W tym przykładzie <PropertyGroup>
dodano sprawdzanie warunku, co uniemożliwia przetworzenie ustawień, chyba że sprawdzanie warunku zostanie pomyślnie zrealizowane. Sprawdzanie warunku wyszukuje dwa elementy:
- Konfiguracja kompilacji jest ustawiona na
Release
wartość . - Platforma docelowa jest ustawiona na wartość zawierającą tekst
net8.0-maccatalyst
. - Platforma jest ustawiona na
AnyCPU
wartość .
Jeśli którykolwiek z tych warunków nie powiedzie się, ustawienia nie są przetwarzane. Co ważniejsze, <CodesignKey>
ustawienia , <CodesignProvision>
i <PackageSigningKey>
nie są ustawione, uniemożliwiając podpisanie aplikacji.
Po dodaniu powyższej grupy właściwości aplikację można opublikować z poziomu wiersza polecenia na komputerze Mac, otwierając terminal i przechodząc do folderu projektu aplikacji .NET MAUI. Następnie uruchom następujące polecenie:
dotnet build -f net8.0-maccatalyst -c Release
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, znaków i pakietów aplikacji, a następnie kopiuje .pkg do folderu bin/Release/net8.0-maccatalyst/publish/ .
Notarize your app
System macOS zawiera technologię o nazwie Gatekeeper, która pomaga zapewnić, że na komputerze Mac działa tylko zaufane oprogramowanie. Gdy użytkownik pobiera i otwiera pakiet instalatora lub aplikację, program Gatekeeper sprawdza, czy oprogramowanie pochodzi od zidentyfikowanego dewelopera. Robi to, sprawdzając certyfikat identyfikatora dewelopera i sprawdzając, czy oprogramowanie jest notarized przez firmę Apple, aby było wolne od znanej złośliwej zawartości i nie zostało zmienione. W związku z tym po aprowizacji i publikowaniu aplikacji należy przesłać ją do firmy Apple, aby była notaryzowana. Usługa notaryjna firmy Apple automatycznie skanuje aplikację podpisaną przez dewelopera i przeprowadza kontrole zabezpieczeń. Gdy notaryzacja zakończy się pomyślnie, twoje oprogramowanie ma przypisany bilet, aby poinformować strażnika, że został notarized.
Aplikacje można przesyłać do usługi notaryjnej firmy Apple za notarytool
pomocą narzędzia wiersza polecenia:
xcrun notarytool submit {my_package_filename} --wait --apple-id {my_apple_id} --password {my_app_specific_password} --team-id {my_team_id}
Poniżej przedstawiono przykład użycia notarytool
narzędzia do podpisania pliku .pkg narzędzia .NET MAUI Mac Catalyst:
xcrun notarytool submit MyMauiApp-1.0.pkg --wait --apple-id johm.smith@provider.com --password fqtk-cprr-gqdt-bvyo --team-id AY2GDE9QM7
Flaga wait
informuje notarytool
o wyjściu dopiero po zakończeniu przetwarzania przesłania przez usługę notary, co powoduje usunięcie konieczności sondowania usługi pod kątem jego stanu. Argumenty apple-id
, password
i team-id
służą do podawania poświadczeń programu App Store Connect. Ponieważ program App Store Connect wymaga uwierzytelniania dwuskładnikowego, należy utworzyć hasło specyficzne dla aplikacji dla programu notarytool
. Aby uzyskać informacje na temat tworzenia hasła specyficznego dla aplikacji, zobacz Logowanie się do aplikacji przy użyciu identyfikatora Apple ID przy użyciu haseł specyficznych dla aplikacji w developer.apple.com.
Po przesłaniu aplikacji do firmy Apple proces notaryzacji zwykle trwa mniej niż godzinę.
Uwaga
Notaryzacja jest ukończona przez większość aplikacji w ciągu 5 minut. Aby uzyskać informacje na temat unikania długich czasów odpowiedzi z usługi notary, zobacz Unikanie długich czasów odpowiedzi notaryzacji i limitów rozmiaru w developer.apple.com.
Pod warunkiem, że notaryzacja powiedzie się, usługa notaryjna generuje bilet dla podpisanego pakietu instalatora i pakietu aplikacji w nim.
Aby uzyskać więcej informacji na temat notaryzacji, zobacz Notarizing macOS software before distribution (Notarizing macOS software before distribution). Aby uzyskać inne podejścia do przesyłania aplikacji do usługi notarnej firmy Apple, zobacz Przekazywanie aplikacji do usługi notaryzacji w developer.apple.com. Aby uzyskać informacje na temat rozwiązywania typowych problemów z notaryzacji, zobacz Rozwiązywanie typowych problemów z notaryzacji.
Zszywka biletu do aplikacji
Notarization tworzy bilet dla podpisanego pakietu instalatora i pakietu aplikacji w nim, który informuje gatekeeper, że aplikacja jest notarized. Po zakończeniu notaryzacji, gdy użytkownicy próbują uruchomić aplikację w systemie macOS 10.14 lub nowszym, program Gatekeeper lokalizuje bilet online.
Po pomyślnych zapisach należy dołączyć bilet do aplikacji przy użyciu stapler
narzędzia . Dzięki temu usługa Gatekeeper może znaleźć bilet nawet wtedy, gdy połączenie sieciowe nie jest dostępne. Uruchom następujące polecenie, aby dołączyć bilet do .pkg:
xcrun stapler staple {filename}.pkg
Narzędzie stapler
pobiera bilet i dołącza go do pakietu instalatora. Zostanie wyświetlony komunikat informujący o tym, że akcja zszywka i walidacja zadziałała, pod warunkiem, że zszycie zakończy się powodzeniem.
Weryfikowanie notaryzacji
Jeśli chcesz zweryfikować notaryzacja, możesz to zrobić za pomocą następującego polecenia:
xcrun stapler validate mypackage.pkg
Rozpowszechniaj swoją aplikację
Podpisany i notarizowany .pkg można bezpiecznie dystrybuować poza sklepem Mac App Store w wybranej lokalizacji, takiej jak serwer internetowy.
Aby uzyskać informacje na temat bezpiecznego otwierania aplikacji na komputerze Mac, zobacz Bezpieczne otwieranie aplikacji na komputerze Mac na support.apple.com.
Zobacz też
- Przygotowywanie aplikacji do dystrybucji w developer.apple.com
- Środowisko uruchomieniowe ze wzmocnionym zabezpieczeniami w developer.apple.com
- Dostosowywanie przepływu pracy notaryzacji w developer.apple.com