發佈 Mac Catalyst 應用程式以進行臨機操作散發
在 Mac App Store 外部發布 Mac Catalyst 應用程式時,您也可以選擇將應用程式散發給已註冊裝置上的少數使用者。 這稱為 臨機操作 散發,主要用於測試一組人員內的應用程式。 不過,它每年限製為100個裝置,且裝置必須新增至您的Apple開發人員帳戶。 Apple Developer Program 和 Apple Developer Enterprise 計畫的成員可以使用此散發方法。
散發 Mac Catalyst 應用程式需要使用 佈建配置檔佈建應用程式。 佈建配置檔是包含程式代碼簽署資訊的檔案,以及應用程式的身分識別及其預定散發機制。
若要在 Mac App Store 外部發布 .NET 多平臺應用程式 UI (.NET MAUI) Mac Catalyst 應用程式,並搭配臨機操作散發,您必須建置 專屬的開發佈建配置檔 。 此設定檔可讓應用程式以數位方式簽署發行,以便安裝在 Mac 上。 臨機操作開發佈建配置檔包含應用程式標識碼、開發憑證,以及可安裝應用程式的裝置清單。 如果您還沒有開發憑證,您必須建立開發憑證來識別自己或您的組織。
佈建 .NET MAUI Mac Catalyst 應用程式以進行臨機操作散發的程式如下:
- 建立憑證簽署要求。 如需詳細資訊,請參閱 建立憑證簽署要求。
- 建立開發憑證。 如需詳細資訊,請參閱建立開發憑證。
- 建立應用程式識別碼。 如需詳細資訊,請參閱 建立應用程式識別符。
- 將裝置新增至您的Apple開發人員帳戶。 如需詳細資訊,請參閱 新增裝置。
- 建立布建配置檔。 如需詳細資訊,請參閱 建立布建配置檔。
- 下載您的布建配置檔。 如需詳細資訊,請參閱 在 Xcode 中下載布建配置檔。
重要
本文說明使用屬於Apple Developer Program 一部分的Apple Developer Account進行臨機操作散發的布建。 它也可用於屬於Apple Developer Enterprise計劃的Apple開發人員帳戶,因為所需的步驟基本上完全相同。
然後,布建完成後,您應該準備應用程式以進行發佈,然後使用下列程式發佈它:
- 選擇性地將權利新增至您的應用程式。 如需詳細資訊,請參閱 新增權利。
- 更新應用程式的 Info.plist 檔案。 如需詳細資訊,請參閱 更新 Info.plist。
- 使用命令行發佈您的應用程式。 如需詳細資訊,請參閱 使用命令行發佈。
建立憑證簽署要求
建立散發憑證之前,您必須先在 Mac 上的 Keychain Access 中建立憑證簽署要求 (CSR):
在您的 Mac 上,啟動 Keychain Access。
在 [金鑰鏈存取] 中,選取 [金鑰鏈存取 > 憑證助理 > ] 從 [證書頒發機構單位... ] 功能表項要求憑證。
在 [ 憑證助理 ] 對話框中,於 [用戶電子郵件位址 ] 字段中輸入電子郵件位址。
在 [ 憑證小幫手 ] 對話框中,於 [一般名稱] 字段中輸入密鑰 的名稱 。
在 [憑證助理] 對話框中,將 [CA 電子郵件位址] 字段保留空白。
在 [ 憑證小幫手 ] 對話框中,選擇 [ 儲存至磁碟 ] 單選按鈕,然後選取 [ 繼續]:
將憑證簽署要求儲存至已知位置。
在 [ 憑證小幫手] 對話框中,選取 [ 完成] 按鈕。
關閉 Keychain 存取。
建立開發憑證
CSR 可讓您產生開發憑證,以確認您的身分識別。 開發憑證必須使用Apple開發人員帳戶的AppleID來建立:
在網頁瀏覽器中,登入您的 Apple開發人員帳戶。
在您的 Apple 開發人員帳戶中,選取 [ 憑證]、[標識符和配置檔] 索引標籤 。
在 [ 憑證]、[標識符與配置檔] 頁面上,選取 + 按鈕以建立新的憑證。
在 [ 建立新憑證 ] 頁面上,選取 [Apple Development ] 單選按鈕,再選取 [ 繼續] 按鈕:
在 [ 建立新的憑證 ] 頁面上,選取 [ 選擇檔案]:
在 [ 選擇要上傳 的檔案] 對話框中,選取您先前建立的憑證要求檔案(擴展名為
.certSigningRequest
的檔案),然後選取 [ 上傳]。在 [ 建立新憑證 ] 頁面上,選取 [ 繼續] 按鈕:
在 [ 下載您的憑證] 頁面上,選取 [ 下載 ] 按鈕:
憑證檔案(擴展名為
.cer
的檔案)將會下載到您選擇的位置。在 Mac 上,按兩下下載的憑證檔案,將憑證安裝到您的密鑰鏈。 憑證會出現在 Keychain Access 的 [我的憑證] 類別中,然後從 Apple Development 開始:
注意
記下 Keychain Access 中的完整憑證名稱。 簽署您的應用程式時需要用到它。
建立開發配置檔
臨機操作開發佈建配置檔可讓您的 .NET MAUI Mac Catalyst 應用程式進行數字簽署,使其可以安裝在特定的 Mac 上。 臨機操作開發佈建配置檔包含應用程式標識碼、開發憑證,以及可安裝應用程式的裝置清單。
建立應用程式識別碼
需要應用程式識別碼,才能識別您要散發的應用程式。 應用程式標識碼類似於反向 DNS 字串,可唯一識別應用程式,且應該與應用程式的套件組合識別符相同。 您可以使用將應用程式部署至裝置以進行測試時所使用的相同應用程式識別碼。
應用程式識別碼有兩種類型:
- 萬用字元。 通配符應用程式識別碼可讓您使用單一應用程式識別碼來比對多個應用程式,而且通常會採用 格式
com.domainname.*
。 通配符應用程式識別碼可用來散發多個應用程式,而且應該用於未啟用應用程式特定功能的應用程式。 - 明確。 明確的應用程式識別碼對單一應用程式而言是唯一的,而且通常會採用 格式
com.domainname.myid
。 明確的應用程式識別碼允許散發一個應用程式,並具有相符的套件組合標識符。 明確應用程式識別碼通常用於啟用App特定功能的應用程式,例如Apple Pay或Game Center。 如需功能的詳細資訊,請參閱 功能。
若要建立新的應用程式識別碼:
在您的 Apple 開發人員帳戶中,流覽至 [憑證]、[標識符和配置檔]。
在 [ 憑證]、[標識符和配置檔] 頁面上,選取 [ 標識符] 索引卷標 。
在 [ 標識符] 頁面上,選取 + 按鈕以建立新的應用程式識別碼。
在 [註冊新的標識符] 頁面上,選取 [應用程式標識符] 單選按鈕,再選取 [繼續] 按鈕:
在 [ 註冊新的標識符 ] 頁面上,選取 [應用程式 ],再選取 [ 繼續] 按鈕:
在 [註冊應用程式標識符] 頁面上,輸入描述,然後選取 [明確] 或 [通配符套件組合標識符] 單選按鈕。 然後,以反向 DS 格式輸入應用程式的套件組合識別碼:
重要
您輸入的套件組合識別碼必須對應至應用程式專案中 Info.plist 檔案中的套件組合識別碼。
.NET MAUI 應用程式的套件組合識別符會儲存在專案檔中作為 應用程式識別符 屬性。 在 Visual Studio 中,於 方案總管 以滑鼠右鍵按鍵按下 .NET MAUI 應用程式專案,然後選取 [屬性]。 然後,流覽至 [MAUI 共用一般] 索引標籤>。[應用程式識別碼] 欄位會列出套件組合識別碼。
更新 [應用程式識別符] 字段的值時,Info.plist 中 [套件組合標識符] 的值將會自動更新。
在 [ 註冊應用程式識別符 ] 頁面上,選取應用程式使用的任何功能。 您必須在此頁面和 App 專案中的 Entitlements.plist 檔案中設定任何功能。 如需詳細資訊,請參閱功能和權利。
在 [ 註冊應用程式識別符 ] 頁面上,選取 [ 繼續] 按鈕。
在 [ 確認您的應用程式識別符 ] 頁面上,選取 [ 註冊] 按鈕。
新增裝置
建立臨機操作散發的佈建配置檔時,配置檔必須包含哪些裝置可以執行應用程式。 選取要新增至布建配置檔的裝置之前,您必須先將裝置新增至 Apple 開發人員帳戶。 您可以使用下列步驟來達成此目的:
選取 Apple > About this Mac 功能表項。
在 [概觀] 索引標籤中,選取 [系統報表...] 按鈕。
在 [ 系統報告] 中,選取 [硬體 展開器] 以查看硬體概觀。 報表會將通用唯一標識碼 (UUID) 顯示為 macOS 10.15和更早版本中的硬體 UUID ,或在 macOS 11.0和更新版本中布建 UDID 。
選取 [硬體 UUID] 或 [布建 UDID] 值,並將其複製到剪貼簿。
在網頁瀏覽器中,移至 Apple 開發人員帳戶的 [裝置 ] 區段,然後按兩下 + 按鈕。
在 [ 註冊新裝置 ] 頁面中,將 [平臺 ] 設定為 macOS ,並提供新裝置的名稱。 然後將剪貼簿中的標識碼貼到 [裝置標識符 ](UUID) 欄位中,然後按兩下 [ 繼續] 按鈕:
在 [ 註冊新裝置 ] 頁面中,檢閱資訊,然後按兩下 [ 註冊] 按鈕。
針對您想要使用臨機操作散發部署 .NET MAUI Mac Catalyst 應用程式的任何 Mac 重複上述步驟。
建立布建配置檔
建立應用程式識別碼之後,您應該建立開發佈建配置檔。 此設定檔可讓應用程式進行數字簽署,以便安裝在特定的 Mac 上。
若要建立臨機操作散發的佈建配置檔:
在 Apple Developer Account 的 [憑證、標識碼和設定檔] 頁面中,選取 [ 配置檔] 索引標籤。
在 [ 配置檔] 索引標籤中 + ,按下按鈕以建立新的設定檔。
在 [ 註冊新的布建配置檔 ] 頁面中,選取 macOS 應用程式開發 單選按鈕,再按兩下 [ 繼續 ] 按鈕:
在 [ 產生布建配置檔 ] 頁面中,選取 [ Mac Catalyst ] 單選按鈕。 然後,在 [ 應用程式標識符 ] 下拉式清單中,選取您先前建立的應用程式識別碼,再按兩下 [ 繼續] 按鈕:
在 [ 產生布建配置檔 ] 頁面中,選取對應至開發憑證的複選框,再按兩下 [ 繼續] 按鈕:
在 [ 產生布建配置檔 ] 頁面中,選取將安裝應用程式的裝置,然後按兩下 [ 繼續] 按鈕。
在 [ 產生布建配置檔 ] 頁面中,輸入布建配置檔的名稱,再按兩下 [ 產生 ] 按鈕:
注意
請記下布建配置檔名稱,因為簽署應用程式時需要此名稱。
在 [ 產生布建配置檔 ] 頁面中,選擇性地按兩下 [下載 ] 按鈕以下載布建配置檔。
注意
您現在不需要下載布建設定檔。 相反地,您會在 Xcode 中執行此動作。
在 Xcode 中下載布建配置檔
在 Apple 開發人員帳戶中建立布建設定檔之後,Xcode 可以下載它,以便簽署您的應用程式:
在您的 Mac 上,啟動 Xcode。
在 Xcode 中 ,選取 [Xcode > 喜好設定... ] 功能表項。
在 [ 喜好設定 ] 對話框中,選取 [ 帳戶] 索引卷 標。
在 [ 帳戶] 索引標籤中 + ,按兩下按鈕,將您的 Apple 開發人員帳戶新增至 Xcode:
在帳戶類型彈出視窗中,選取 [Apple ID ],然後按兩下 [ 繼續] 按鈕:
在登入彈出視窗中,輸入您的 Apple ID,然後按下 一步] 按鈕。
在登入彈出視窗中,輸入您的 Apple ID 密碼,然後按下 一步] 按鈕:
在 [ 帳戶] 索引標籤中,按兩下 [ 管理憑證... ] 按鈕,以確保已下載您的散發憑證。
在 [ 帳戶] 索引標籤中,按兩下 [ 下載手動設定檔 ] 按鈕以下載布建設定檔:
等候下載完成,然後關閉 Xcode。
新增權利
Apple 的應用程式沙箱會限制存取 Mac 應用程式中的系統資源和用戶數據,以在應用程式遭到入侵時包含損毀。 它必須針對透過 Mac App Store 散發的 Mac Catalyst 應用程式啟用,而且可以選擇性地針對在 Mac App Store 外部散發的 Mac Catalyst 應用程式啟用。
這可以藉由將 Entitlements.plist 檔案新增至 .NET MAUI 應用程式專案的 Platform/MacCatalyst 資料夾來完成:
<?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>
應用程式沙盒權利是使用 com.apple.security.app-sandbox
類型的 boolean
索引鍵來定義。 如需應用程式沙盒的相關信息,請參閱 在 developer.apple.com 上使用應用程式沙箱 保護用戶數據。 如需應用程式沙盒權利的相關信息,請參閱 應用程式沙盒權利。
如果您的應用程式開啟連出網路連線,您也必須將 類型boolean
為 的密鑰新增com.apple.security.network.client
至您的 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>
如需連出網路連線權利的相關信息,請參閱 com.apple.security.network.client on developer.apple.com。
更新 Info.plist
散發應用程式之前,您應該使用其他資訊來更新其 Info.plist 檔案。
注意
雖然發佈應用程式以供測試時不需要更新您 app 的 Info.plist 檔案,但發布應用程式最終測試版本時,需要這些更新。 因此,最佳做法是執行這些更新。
指定使用者介面語式
Mac Catalyst 應用程式可以在 iPad 或 Mac 使用者介面成語中執行:
- iPad 使用者介面成語會告訴 macOS 調整應用程式的使用者介面,以符合 Mac 顯示環境,同時保留類似 iPad 的外觀。
- Mac 使用者介面成語不會調整應用程式的使用者介面,以符合 Mac 顯示環境。 某些控制項會變更其大小和外觀,並與控件互動的感覺與控件的互動
AppKit
方式相同。
根據預設,.NET MAUI Mac Catalyst 應用程式會使用 iPad 使用者介面語式。 如果這是您所需的行為,請確定應用程式的 Info.plist 檔案只會指定 2 作為索引鍵的值 UIDeviceFamily
:
<key>UIDeviceFamily</key>
<array>
<integer>2</integer>
</array>
若要採用 Mac 使用者介面語式,請更新應用程式的 Info.plist 檔案,將 6 指定為機碼的值 UIDeviceFamily
:
<key>UIDeviceFamily</key>
<array>
<integer>6</integer>
</array>
如需 Mac Catalyst 使用者介面慣用語的詳細資訊,請參閱 指定 Mac Catalyst 應用程式的 UI 慣用語。
設定應用程式的預設語言和區域
CFBundleDevelopmentRegion
將應用程式 Info.plist 中的索引鍵設定為 string
,代表當地語系化原生開發區域:
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
索引鍵的值應該是具有選擇性區域指示項的語言指示項。 如需詳細資訊,請參閱 cfBundleDevelopmentRegion on developer.apple.com。
設定著作權金鑰
NSHumanReadableCopyright
將應用程式 Info.plist 中的金鑰設定為 string
,代表您應用程式的人類可讀著作權聲明:
<key>NSHumanReadableCopyright</key>
<string>MyMauiApp © 2023</string>
如需詳細資訊,請參閱 developer.apple.com 上的 NSHumanReadableCopyright 。
宣告您的應用程式使用加密
如果您的應用程式使用加密,且您計劃將其散發到 美國 或加拿大以外,則其受限於美國導出合規性需求。 您可以在應用程式 Info.plist 檔案中使用加密的相關信息。
這可藉由將 ITSAppUsesNonExemptEncryption
金鑰新增至您應用程式的 Info.plist ,並具有 boolean
指出您的應用程式是否使用加密的值來完成:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
如需詳細資訊,請參閱 遵守 developer.apple.com 加密導出法規 。
使用命令行發佈
若要從 Mac 上的命令行發佈 Mac Catalyst 應用程式,請開啟終端機並流覽至 .NET MAUI 應用程式項目的資料夾。 dotnet publish
執行 命令,並提供下列參數:
參數 | 值 |
---|---|
-f 或 --framework |
目標架構,也就是 net8.0-maccatalyst 。 |
-c 或 --configuration |
組建組態,也就是 Release 。 |
-p:MtouchLink |
項目的連結模式,可以是 None 、 SdkOnly 或 Full 。 |
-p:CreatePackage |
設定為 true ,以便在建置結束時為應用程式建立套件 (.pkg)。 |
-p:EnableCodeSigning |
設定為 true ,以便啟用程式代碼簽署。 |
-p:CodesignKey |
程式代碼簽署金鑰的名稱。 設定為散發憑證的名稱,如 Keychain Access 中所顯示。 |
-p:CodesignProvision |
簽署應用程式套件組合時要使用的布建配置檔。 |
-p:CodesignEntitlements |
權利檔案的路徑,指定應用程式所需的權利。 設定為 Platforms\MacCatalyst\Entitlements.plist 。 |
-p:RuntimeIdentifier |
專案的執行時間識別碼 (RID) 。 發行 .NET MAUI Mac Catalyst 應用程式的組建預設為使用 maccatalyst-x64 和 maccatalyst-arm64 作為運行時間標識碼,以支援通用應用程式。 若要只支援單一架構,請指定 maccatalyst-x64 或 maccatalyst-arm64 。 |
-p:UseHardenedRuntime |
設定為 true 以啟用強化運行時間,這是 Mac Catalyst 應用程式在 Mac App Store 外部散發的必要專案。 |
警告
嘗試發佈 .NET MAUI 解決方案會導致 dotnet publish
命令嘗試個別發佈方案中的每個專案,這可能會導致將其他項目類型新增至方案時發生問題。 因此, dotnet publish
命令的範圍應設定為 .NET MAUI 應用程式專案。
如果在項目檔中未提供其他建置參數,則可以在命令行上 <PropertyGroup>
指定其他建置參數。 下表列出一些常見的參數:
參數 | 值 |
---|---|
-p:ApplicationTitle |
應用程式的用戶可見名稱。 |
-p:ApplicationId |
應用程式的唯一識別碼,例如 com.companyname.mymauiapp 。 |
-p:ApplicationVersion |
識別應用程式反覆項目的組建版本。 |
-p:ApplicationDisplayVersion |
應用程式的版本號碼。 |
-p:RuntimeIdentifier |
專案的執行時間識別碼 (RID) 。 發行 .NET MAUI Mac Catalyst 應用程式的組建預設為使用 maccatalyst-x64 和 maccatalyst-arm64 作為運行時間標識碼,以支援通用應用程式。 若要只支援單一架構,請指定 maccatalyst-x64 或 maccatalyst-arm64 。 |
如需組建屬性的完整清單,請參閱 專案檔屬性。
重要
所有這些參數的值都不需要在命令行上提供。 您也可以在項目檔中提供它們。 當在命令行和項目檔中提供參數時,命令行參數會優先使用。 如需在項目檔中提供建置屬性的詳細資訊,請參閱 在專案檔中定義組建屬性。
例如,使用下列命令在 Mac 上建置和簽署 .pkg ,以便對已註冊裝置上的用戶進行臨機操作散發:
dotnet publish -f net8.0-maccatalyst -c Release -p:MtouchLink=SdkOnly -p:CreatePackage=true -p:EnableCodeSigning=true -p:CodesignKey="Apple Development: John Smith (AY2GDE9QM7)" -p:CodesignProvision="MyMauiApp (Ad-hoc)" -p:CodesignEntitlements="Platforms\MacCatalyst\Entitlements.plist" -p:UseHardenedRuntime=true
注意
在 .NET 8 中 dotnet publish
,命令預設為組 Release
態。 因此,您可以從命令行省略組建組態。
發佈組建、簽署和封裝應用程式,然後將.pkg複製到 bin/Release/net8.0-maccatalyst/publish/ 資料夾。 如果您只使用單一架構發佈應用程式,則會發佈至 bin/Release/net8.0-maccatalyst/{architecture}/publish/ 資料夾。
在簽署過程中,可能需要輸入您的登入密碼,並允許 codesign
執行:
如需命令的詳細資訊 dotnet publish
,請參閱 dotnet publish。
在項目檔中定義組建屬性
在命令行上指定建置參數的替代方法是在 中的項目檔中 <PropertyGroup>
指定它們。 下表列出一些常見的組建屬性:
屬性 | 值 |
---|---|
<ApplicationTitle> |
應用程式的用戶可見名稱。 |
<ApplicationId> |
應用程式的唯一識別碼,例如 com.companyname.mymauiapp 。 |
<ApplicationVersion> |
識別應用程式反覆項目的組建版本。 |
<ApplicationDisplayVersion> |
應用程式的版本號碼。 |
<CodesignKey> |
程式代碼簽署金鑰的名稱。 設定為散發憑證的名稱,如 Keychain Access 中所顯示。 |
<CodesignEntitlements> |
權利檔案的路徑,指定應用程式所需的權利。 設定為 Platforms\MacCatalyst\Entitlements.plist 。 |
<CodesignProvision> |
簽署應用程式套件組合時要使用的布建配置檔。 |
<CreatePackage> |
設定為 true ,以便在建置結束時為應用程式建立套件 (.pkg)。 |
<EnableCodeSigning> |
設定為 true ,以便啟用程式代碼簽署。 |
<MtouchLink> |
項目的連結模式,可以是 None 、 SdkOnly 或 Full 。 |
<RuntimeIdentifier> |
專案的執行時間識別碼 (RID) 。 發行 .NET MAUI Mac Catalyst 應用程式的組建預設為使用 maccatalyst-x64 和 maccatalyst-arm64 作為運行時間標識碼,以支援通用應用程式。 若要只支援單一架構,請指定 maccatalyst-x64 或 maccatalyst-arm64 。 |
<UseHardenedRuntime> |
設定為 true 以啟用強化運行時間,這是 Mac Catalyst 應用程式在 Mac App Store 外部散發的必要專案。 |
如需組建屬性的完整清單,請參閱 專案檔屬性。
重要
這些項目檔中不需要提供這些組建屬性的值。 當您發佈應用程式時,您也可以在命令行上提供它們。 這可讓您省略項目檔中的特定值。
下列範例示範建置和簽署 Mac Catalyst 應用程式的一般屬性群組,以便對已註冊裝置上的用戶進行臨機操作散發:
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-maccatalyst|AnyCPU'">
<MtouchLink>SdkOnly</MtouchLink>
<EnableCodeSigning>True</EnableCodeSigning>
<CreatePackage>true</CreatePackage>
<CodesignKey>Apple Development: John Smith (AY2GDE9QM7)</CodesignKey>
<CodesignProvision>MyMauiApp (Ad-hoc)</CodesignProvision>
<CodesignEntitlements>Platforms\MacCatalyst\Entitlements.plist</CodesignEntitlements>
<UseHardenedRuntime>true</UseHardenedRuntime>
</PropertyGroup>
本範例 <PropertyGroup>
會新增條件檢查,除非條件檢查通過,否則無法處理設定。 條件檢查會尋找兩個專案:
- 組建組態會設定為
Release
。 - 目標架構會設定為包含文字
net8.0-maccatalyst
的內容。 - 平台會設定為
AnyCPU
。
如果上述任一條件失敗,則不會處理設定。 更重要的是, <CodesignKey>
不會設定 和 <CodesignProvision>
設定,以防止應用程式簽署。
新增上述屬性群組之後,應用程式可以從 Mac 上的命令行發佈,方法是開啟終端機並流覽至 .NET MAUI 應用程式項目的資料夾。 然後,執行下列命令:
dotnet build -f net8.0-maccatalyst -c Release
發佈組建、簽署和封裝應用程式,然後將.pkg複製到 bin/Release/net8.0-maccatalyst/publish/ 資料夾。
散發您的應用程式以進行測試
.pkg可以散發給已註冊裝置上的使用者,您可以在其中按兩下.pkg檔案來安裝應用程式。
如需在 Mac 上安全地開啟應用程式的資訊,請參閱 在 mac 上安全地開啟應用程式 support.apple.com。