使用 DISM 預先安裝應用程式
注意
有興趣預先安裝 Microsoft Store 應用程式,但您不是 OEM 嗎? 如需為組織側載應用程式的相關資訊,請參閱 使用 DISM 側載應用程式。
本主題涵蓋如何預先安裝應用程式,使其包含在 Windows 映像中。
提示
硬體支援應用程式 (HSA) 為 Microsoft Store Apps,且適用下列指示。
使用應用程式套件
使用 DISM 將應用程式離線布建至映射。 您可以從命令提示字元使用 DISM,或在 Windows PowerShell 中使用 DISM Cmdlet。
在舊版Windows 10中,預先安裝的通用應用程式和 Microsoft Store 應用程式必須釘選到 [開始] 功能表。 Windows 會移除預先安裝但未釘選到 [開始] 功能表的應用程式。
從 Windows 10 1803 版開始,當您搭配 /region
選項使用 DISM /add-provisionedappxpackage
時,可以預先安裝應用程式而不釘選到 [開始] 功能表。 當您預先安裝應用程式時,您可以選擇將應用程式離開您的LayoutModification.xml,而應用程式將會成功安裝,而不會顯示為 [開始功能表] 圖格。 未指定區域清單時,只有當應用程式釘選為開始配置時,才會布建應用程式。
擷取套件檔案
流覽至您儲存從合作夥伴儀表板下載之應用程式套件的資料夾。
以滑鼠右鍵按一下每個包含應用程式套件檔案.zip資料夾。 按一下 [ 全部擷取 ],然後選取位置以儲存封裝檔案資料夾。
資料夾包含封裝的所有解壓縮檔案,包括主要套件、任何相依性套件和授權檔案。
重要
解壓縮封裝檔案之後,請勿修改資料夾。 如果您變更、新增或移除資料夾中的任何檔案,則應用程式會在安裝或啟動期間失敗。 即使流覽資料夾可能會造成問題。
您必須使用套件檔案中的授權檔案來測試布建的映射。 建立您自己的自訂資料檔案,將無法讓您精確地測試 OEM 預先安裝的應用程式。
若要將應用程式離線布建到映射中,您可以使用 Dism.exe 工具或 Windows PowerShell 中的 DISM Cmdlet,從解壓縮的檔案資料夾新增應用程式。
使用 DISM 預先安裝 Microsoft Store 簽署的應用程式
以系統管理員身分開啟命令提示字元。
掛接您想要服務的 Windows 映像:
Dism /Mount-Image /ImageFile:c:\images\myimage.wim /Index:1 /mountdir:c:\test\offline
將應用程式新增至掛接的映射。
/PackagePath
使用 和/DependencyPackagePath
選項。-
Packagepath
是 .appx 套件組合或套件檔案的路徑 -
DependencyPackagePath
是指定每個相依性套件的路徑。 每個命令可以有多個相依性。 -
Windows 10 1803 版的新功能:新增應用程式時請使用
Region
選項。Region
可讓您新增應用程式,而不需要將應用程式釘選到 [開始] 功能表。
Dism /Image:c:\test\offline /Add-ProvisionedAppxPackage /PackagePath:c:\downloads\package.appxbundle /DependencyPackagePath:c:\downloads\dependency1.appx /DependencyPackagePath:c:\downloads\dependency2.appx /LicensePath=c:\downloads\package_License1.xml /region=all"
如需使用應用程式套件的相關資訊,請參閱 DISM 應用程式套件服務命令列選項 ,包括新的 /region 選項。
-
將應用程式釘選到 [開始] 功能表。
如果您未指定
/region
預先安裝應用程式時,請使用 LayoutModification.xml將應用程式釘選到 [開始] 功能表。or
如果您指定
/region
了預先安裝應用程式時,而且想要將應用程式釘選到特定區域的 [開始] 功能表,請使用RequiredStartGroups Region="region1|region2"
LayoutModification.xml中的 元素來指定您想要顯示應用程式的區域。
儲存變更並取消掛接映射。 在命令提示字元中,輸入:
Dism /Unmount-Image /mountdir:c:\test\offline /commit
注意
Microsoft Store 應用程式不會以稽核模式執行。 若要測試您的部署,請執行 Windows 並建立新的使用者設定檔。 如需稽核模式的詳細資訊,請參閱 稽核模式概觀。
重要 如果您要預先安裝行動寬頻裝置應用程式,您必須先在電腦中插入 SIM 卡,才能執行 Sysprep 的特製化階段。 如需預先安裝行動寬頻裝置應用程式的詳細資訊,請參閱 預先安裝行動寬頻應用程式體驗的必要元件。
更新或移除套件
您可以使用 DISM.exe 工具或 Windows PowerShell 中的 DISM Cmdlet,從 Windows 映像中移除預先安裝的應用程式,包括授權和自訂資料檔案。 安裝新的應用程式之前,您應該先移除舊版的應用程式。
使用 DISM 移除預先安裝的應用程式
使用系統管理員許可權開啟隨 Windows ADK 一起安裝的部署工具命令提示字元。 從 [開始] 畫面中,輸入 [部署和映射工具環境],以滑鼠右鍵按一下圖示,然後選取 [ 以系統管理員身分執行]。
掛接離線映射以進行服務。 在命令提示字元中,輸入:
Dism /Mount-Image /ImageFile:c:\images\myimage.wim /Index:1 /mountdir:c:\test\offline
尋找您要移除之應用程式的完整套件名稱。 在命令提示字元中,輸入:
Dism /Image:C:\test\offline /Get-ProvisionedAppxPackages
從掛接的映射中移除應用程式。 例如,在命令提示字元之下,輸入:
Dism /Image:c:\test\offline /Remove-ProvisionedAppxPackage /PackageName:microsoft.devx.appx.app1_1.0.0.0_neutral_en-us_ac4zc6fex2zjp
如果您想要更新應用程式,您可以預先安裝已更新版本的 Microsoft Store 簽署應用程式。 在命令提示字元輸入:
Dism /Image:c:\test\offline /Add-ProvisionedAppxPackage/FolderPath:c:\downloads\appxpackage
儲存變更並取消掛接映射。 在命令提示字元中,輸入:
Dism /Unmount-Image /mountdir:c:\test\offline /commit
使用自訂資料檔案
預先安裝在電腦上的應用程式可以存取安裝特定的自訂資料。 此自訂資料會在預先安裝期間新增至應用程式,並在執行時間變成可用。 自訂資料可讓開發人員自訂應用程式的特色和功能,包括提供報告功能。
將自訂資料檔案新增至 Windows 映像
當您使用 DISM 工具預先安裝應用程式,以及透過使用Add-AppxProvisionedPackage Cmdlet Windows PowerShell時,您必須指定自訂資料檔案。 下列命令示範如何使用 DISM 工具來執行這項操作:
Dism /Image:C:\test\offline /Add-ProvisionedAppxPackage / FolderPath:f:\Apps\Fabrikam_KnowMyPC /CustomDataPath:f:\Contoso_Promotion.xml
例如,如果應用程式的資料存放區中已有自訂資料檔案,例如,如果套件已新增至映射,則會覆寫現有的檔案。 如果安裝失敗,則不會還原檔案。
注意 您可以透過 Microsoft Store 發行應用程式的更新,而不會遺失自訂資料檔案。 不過,如果使用者刪除應用程式,即使使用者重新安裝應用程式,自訂資料檔案也無法再使用。
測試預先安裝應用程式的自訂資料
預先安裝在電腦上的應用程式可以存取安裝特定的自訂資料。 此自訂資料會在預先安裝期間新增至應用程式,並在執行時間提供給應用程式使用。 自訂資料可讓開發人員自訂應用程式的特色和功能,包括提供報告功能。
Custom.data 檔案會出現在應用程式的安裝位置。 Custom.data 名稱是硬式編碼,無法修改。 您的應用程式可以檢查此檔案是否存在,以判斷是否已在電腦上預先安裝應用程式。 以下是如何存取 Custom.data 檔案的範例。
var outputDiv = document.getElementById("CustomData");
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync
("microsoft.system.package.metadata\\Custom.data").then(function (file) {
// Read the file
Windows.Storage.FileIO.readTextAsync(file).done(function (fileContent) {
outputDiv.innerHTML =
"App is preinstalled. CustomData contains:<br /><br />"
+ fileContent;
},
function (error) {
outputDiv.innerText = "Error reading CustomData " + error;
});
},
function (error) {
outputDiv.innerText = "CustomData was not available. App not preinstalled";
});
您的 Custom.data 檔案可以包含任何內容,且格式為您的應用程式所需的任何格式。 預先安裝程式只會提供給您的應用程式使用。 開發人員可以將資料檔案提供給預先安裝合作夥伴,或者您可以同意可讓合作夥伴產生內容的格式。
測試您的自訂資料
當您在 Microsoft Visual Studio 中建置和偵錯應用程式時,無法從應用程式的已安裝位置存取 Custom.data 檔案,因為尚未預先安裝應用程式。 您可以將測試 Custom.data 檔案放在應用程式本身,然後載入和測試應用程式本機檔案,以模擬您的 Custom.data 檔案。 若要這樣做,請修改下列程式碼範例:
("microsoft.system.package.metadata\\Custom.data").then(function (file) {
變更為:
("Custom.data").then(function (file) {
驗證檔案格式和內容之後,您可以將 Custom.data 檔案的位置變更為最終位置,如上述原始範例所示。
測試 Custom.data 檔案
使用系統管理員許可權開啟隨 Windows ADK 一起安裝的部署工具命令提示字元。 從 [開始] 畫面中,輸入 [部署和映射工具環境],以滑鼠右鍵按一下圖示,然後選取 [ 以系統管理員身分執行]。
使用自訂資料檔案新增應用程式:
dism /online /Add-ProvisionedAppxPackage /PackagePath:.\CustomData_1.0.0.1_AnyCPU_Debug.appx /CustomDataPath:.\Test.txt /SkipLicense
指向
/PackagePath:.\CustomData_1.0.0.1_AnyCPU_Debug.appx
本機應用程式測試套件的位置,以及指向 Custom.data 檔案的位置/CustomDataPath:.\Test.txt
。 請注意,您在應用程式中安裝資料之後,不會使用您在此處提供的檔案名。應用程式現在會在用來測試應用程式的 [ 開始 ] 畫面上顯示磚。 應用程式應該能夠存取 Custom.data 檔案。 如果需要其他偵錯,請在從 [ 開始 ] 畫面啟動應用程式之後附加偵錯工具。
注意 您可能需要登出並再次登入,才能在 [ 開始 ] 畫面上看到應用程式。
完成應用程式測試之後,您必須移除預先安裝的套件,才能繼續使用您的開發環境。 若要使用 Windows PowerShell 移除預先安裝的套件,您可以使用Get-AppxPackage Cmdlet 透過管線提供完整的應用程式套件名稱給Remove-ProvisionedAppxPackage Cmdlet:
Get-AppxPackage *CustomData* | Remove-ProvisionedAppxPackage
其中
*CustomData*
是應用程式名稱的已知部分
預先安裝 Microsoft Store 裝置應用程式或行動寬頻應用程式
您可以使用部署映像服務與管理 (DISM) 平臺,預先安裝 Microsoft Store 裝置應用程式或行動寬頻應用程式的必要元件。
注意 本文適用于將在其裝置上支援 Microsoft Store 裝置應用程式或行動寬頻應用程式的 OEM。
針對每種應用程式類型,應該預先安裝兩件事,以提供正確的 Microsoft Store 裝置應用程式或行動寬頻應用程式:
- Microsoft Store 裝置應用程式,預先安裝:
- 裝置中繼資料套件
- 應用程式
- Microsoft Store 行動寬頻應用程式,預先安裝:
- 服務中繼資料套件
- 應用程式
重要 雖然中繼資料套件和對應的應用程式會在 OOBE 程式完成之後立即剖析,但使用者可能會在剖析中繼資料套件之前啟動應用程式。 在此情況下,使用者會看到拒絕存取錯誤。 若要避免這種情況,請將中繼資料套件和應用程式同時套用至系統映射。
預先安裝裝置中繼資料或服務中繼資料套件
預先安裝裝置中繼資料或服務中繼資料套件
如果您要預先安裝 Microsoft Store 裝置應用程式,則應該已取得裝置中繼資料套件。 如果您要預先安裝行動寬頻應用程式,則應該已取得服務中繼資料套件。
注意 裝置中繼資料套件和服務中繼資料套件使用相同的副檔名 (.devicemetadata-ms) 。
將裝置中繼資料或服務中繼資料套件 (devicemetadata-ms 檔案) 複製到 %ProgramData%\Microsoft\Windows\DeviceMetadataStore 資料夾中的系統映射。 您可以利用下列其中一種方式來執行此作業:
在執行 Sysprep 之前于線上
使用 DISM 執行 Sysprep 之後離線。 若要這樣做:
掛接離線映射以進行服務。
Dism /Mount-Image /ImageFile:C:\test\images\myimage.wim /index:1 /MountDir:C:\test\offline
將中繼資料套件檔案複製到掛接映射的裝置中繼資料存放區。 例如,若要將 0ECF2029-2C6A-41AE-9E0A-63FFC9EAD877.devicemetadata-ms 中繼資料套件檔案複製到裝置中繼資料存放區 ProgramData\Microsoft\Windows\DeviceMetadataStore:
copy 0ECF2029-2C6A-41AE-9E0A-63FFC9EAD877.devicemetadata-ms C:\test\offline\ProgramData\Microsoft\Windows\DeviceMetadataStore
儲存變更並取消掛接映射。
dism /Unmount-Image /mountdir: c:\test\offline /commit
如需離線映射服務的詳細資訊,請參閱 DISM 概觀。
如需服務中繼資料的詳細資訊,請參閱 服務中繼資料。
預先安裝 Microsoft Store 裝置應用程式或行動寬頻應用程式
預先安裝 Microsoft Store 裝置應用程式或行動寬頻應用程式
掛接離線映射以進行服務。
Dism /Mount-Image /ImageFile:C:\test\images\myimage.wim /index:1 /MountDir:C:\test\offline
將 Microsoft Store 裝置應用程式或行動寬頻應用程式新增至映射。
dism /Image:<mounted folder> /Add-ProvisionedAppxPackage /FolderPath:<appxpackage path>
儲存變更並取消掛接映射。
dism /Unmount-Image /mountdir: c:\test\offline /commit