選用套件及相關集合的製作
選用套件包含了可與主要套件整合的內容。 這些適用於可下載的內容 (DLC)、分割大型應用程式的大小限制,或傳送與原始應用程式分開的任何其他內容。 如需選用套件的詳細資訊,請參閱 部落格文章:使用選擇性套件擴充您的應用程式。
相關集合是選擇性套件的延伸模組。 相關集合可讓您跨主要和選擇性套件強制執行一組嚴格的版本。 如果相關集合部署在市集外部,可能會有與主要應用程式不同的發行者。 如需相關集合的詳細資訊,請參閱 部落格文章:建立相關集合的工具。
選擇性套件和相關集合全都會在主要應用程式的 MSIX 容器內執行。
必要條件
- Visual Studio 2019 或 Visual Studio 2017 (15.1 版或更新版本)
- Windows 10 版本 1703 或更新版本
- Windows 10 版本 1703 SDK 或更新版本
若要取得所有最新的開發工具,請參閱 Windows 10 的下載和工具。
注意
若要將使用選用套件和/或相關集合的應用程式提交至 Microsoft Store,您需要許可權。 若未提交至市集,選擇性套件和相關集合可用於沒有合作夥伴中心許可權的企業營運或企業應用程式。 請參閱 Windows 開發人員支援 ,以取得提交使用選用套件和相關集合的應用程式的許可權。
程式碼範例
當您閱讀本文時,建議您遵循 GitHub 上的選擇性套件程式代碼範例 ,以實際了解選用套件和相關集合在 Visual Studio 中的運作方式。
選用套件
若要在 Visual Studio 中建立選擇性套件,您必須:
- 請確定您的應用程式 的目標平臺最低版本 已設定為:10.0.15063.0 或更高版本。
- 從您的 主要套件 專案中,開啟
Package.appxmanifest
檔案。 流覽至 [封裝] 索引標籤,並記下您的 套件系列名稱,也就是 “_” 字元之前的一切。 - 從您的 選用套件 專案中,以滑鼠右鍵按兩下 ,
Package.appxmanifest
然後選取[ 使用 > XML 開啟] [文字] 編輯器。 - 在檔案中找出
<Dependencies>
元素。 新增下列內容,並將 取代[MainPackageDependency]
為您 步驟 2 中的套件系列名稱 。 這會指定您的 選擇性套件 相 依於您的主要套件。<uap3:MainPackageDependency Name="[MainPackageDependency]"/>
注意
如果您想要從不同的發行者建立選擇性套件,則必須在主要應用程式的發行者不同時指定發行者。 就像 uap4 <:MainPackageDependency Name=“Main_app” Publisher=“CN=Contoso...” />. 如果您要發佈至市集,這將無法運作。
在從步驟 1 到 4 設定套件相依性之後,您可以像平常一樣繼續開發。 如需詳細資訊,請參閱 部落格文章:建置您的第一個選擇性套件。
Visual Studio 可以設定為每次部署選擇性套件時重新部署您的主要套件。 若要在 Visual Studio 中設定組建相依性,您應該:
- 以滑鼠右鍵按下選擇性套件專案,然後選取 [ 建置相依性專案相依性 > ...
- 檢查主要套件專案,然後選取 [確定]。
現在,每次輸入 F5 或建置選擇性套件專案時,Visual Studio 會先建置主要套件專案。 這可確保您的主要項目和選擇性專案會同步處理。
相關集合
相關集合包含主要套件和選擇性套件,這些套件會透過主要套件的 .appxbundle 或 .msixbundle 檔案中指定的元數據緊密結合。 此元數據會將主要套件連結至選擇性套件(使用 .appxbundle 檔案 + 版本的名稱),並將選擇性套件連結至主要套件(使用版本獨立名稱)。 Visual Studio 可協助您取得檔案中的正確元數據。
在安裝所有相關集合中版本之前,相關集合中的套件版本控制會以不允許使用最新版的任何套件的方式進行同步處理。 套件是獨立服務,但在更新所有套件之前,可能無法使用集合中指定的套件。 如需相關集合的詳細資訊,請參閱 部落格文章:建立相關集合的工具。
若要為相關集合設定應用程式的解決方案,請使用下列步驟:
- 以滑鼠右鍵按兩下主要套件項目,選取[ 新增 > 專案...
- 從視窗中,搜尋已安裝的範本以尋找 「.txt」,然後新增文字檔。
重要
新的文字文件必須命名為:
Bundle.Mapping.txt
。 - 在檔案中
Bundle.Mapping.txt
,輸入字串串 “[OptionalProjects]”,後面接著您選用套件專案的相對路徑。 以下是範例Bundle.Mapping.txt
檔案:[OptionalProjects] "..\ActivatableOptionalPackage1\ActivatableOptionalPackage1.vcxproj" "..\ActivatableOptionalPackage2\ActivatableOptionalPackage2.vcxproj"
以這種方式設定解決方案時,Visual Studio 會為主要套件建立 名為 AppxBundleManifest.xml 的套件組合指令清單 ,其中包含相關集合所需的所有元數據。
請注意,如同選用套件, Bundle.Mapping.txt
相關集合的檔案只能在 Windows 10 版本 1703 或更高版本上運作。 此外,您的應用程式的目標平臺最小版本應該設定為 10.0.15063.0 或更高版本。
拿掉選擇性套件
用戶可以進入其 設定 應用程式,並移除選用套件。 同樣地,開發人員可以使用 RemoveOptionalPackageAsync 來移除選用套件的清單。
PackageCatalog catalog = PackageCatalog.OpenForCurrentPackage();
List<string> optionalList = new List<string>();
optionalList.Add("FabrikamAgeAnalysis_kwpnjs8c36mz0");
// Warn user that application will be restarted.
var result = await catalog.RemoveOptionalPackagesAsync(optionalList);
if (result.ExtendedError != null)
{
throw removalResult.ExtendedError;
}
注意
在相關設定的情況下,平台必須重新啟動主要應用程式,才能完成移除,以避免應用程式有從正在移除的套件載入內容的情況。 應用程式必須通知使用者,應用程式必須在應用程式呼叫 API 之前重新啟動。
如果選擇性套件只是內容,開發人員應該明確地告訴平臺,即將移除的套件在開發人員移除選擇性套件之前,應用程式「未使用中」。 這也可讓開發人員在不重新啟動的情況下移除套件。
已知問題
Visual Studio 目前不支援偵錯相關的集合選用專案。 若要解決此問題,您可以部署並啟動啟用 (Ctrl + F5),並手動將調試程式附加至進程。 若要附加調試程式,請移至 Visual Studio 中的 [偵錯] 功能表,選取 [附加至進程...],然後將調試程式附加至 主要應用程式進程。