本文說明如何手動建立應用程式安裝程式檔案,以定義具有自動更新和修復功能 的相關集合 。 相關集合不是一個實體,而是主要套件和選擇性套件的組合。
若要能夠將相關集合安裝為一個實體,我們必須能夠將主要套件和選擇性套件指定為一個。 若要這樣做,我們必須建立擴展名為 .appinstaller 的 XML 檔案,以定義相關的集合。 應用程式安裝程式會取用 *.appinstaller 檔案,並讓使用者按兩下即可安裝所有已定義的套件。
在部署期間,應用程式安裝程式檔案會:
- 在
URIMainPackage <元素的>屬性中所參考的 Windows 應用程式套件將會驗證目標 Windows 應用程式套件屬性的Name、Publisher和Version。 如果 Windows 應用程式套件指令清單中的 Package/Identity 元素不相符,安裝將會失敗。 - 為套件系列建立更新和修復的 URI 參照。
如何建立應用程式安裝程式檔案
若要將相關的集合散發為一個實體,您必須建立 App 安裝程式檔案,其中包含該 安裝程式架構所需的元素。
- 建立 *。AppInstaller 檔案。
- 指定應用程式安裝程式檔案屬性。
- 指定主要的 Windows 應用程式套件。
- 指定相關的可選套件包。
- 指定相依性 Windows 應用程式架構套件。
- 指定更新 URI 路徑。
- 指定修復 URI 路徑。
- 指定 [更新設定]。
應用程式安裝程式檔案的範例
遵循上述步驟,您已成功建立類似下列的 App Installer 檔案:
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<OptionalPackages>
<Bundle
Name="Contoso.OptionalApp1"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />
<Bundle
Name="Contoso.OptionalApp2"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp2.msixbundle" />
<Package
Name="Fabrikam.OptionalApp3"
Publisher="CN=Fabrikam"
Version="10.34.54.23"
Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix"
ProcessorArchitecture="x64" />
</OptionalPackages>
<UpdateURIs>
<UpdateURI>http://mywebservice.azurewebsites.net/appset.appinstaller</UpdateURI>
<UpdateURI>http://mywebservice2.azurewebsites.net/appset.appinstaller</UpdateURI>
</UpdateURIs>
<RepairURIs>
<RepairURI>http://mywebservice.azurewebsites.net/appset.appinstaller</RepairURI>
<RepairURI>http://mywebservice2.azurewebsites.net/appset.appinstaller</RepairURI>
</RepairURIs>
<UpdateSettings>
<OnLaunch HoursBetweenUpdateChecks="0"/>
</UpdateSettings>
</AppInstaller>
步驟 1:建立 *.appinstaller 檔案
使用文字編輯器 (Notepad.exe),建立擴展名為 *的新檔案。AppInstaller
操作說明:
- 開啟開始功能表。
- 請輸入以下文字:
notepad.exe。 - 開啟 [ 檔案 ] 功能表。
- 從下拉功能表中選取 [ 另存新檔 ]。
步驟 2:新增基本範本
將 AppInstaller 元素包含在 App Installer 檔案中,指出應用程式安裝程式檔案的版本、路徑和網路位置。 安裝相關聯的 Windows 應用程式時,將會取用 元素中的 AppInstaller 資訊。
| 元素 | 說明 |
|---|---|
| xmlns | XML 命名空間 |
| 版本 | 四點表示法中的應用程式安裝程式檔案版本(1.0.0.0)。 |
| URI | 裝置可存取目前應用程式安裝程式檔案的 URI 路徑。 |
操作說明:
開啟 在步驟 1 中建立的檔案。
將下列 XML 內容複製到 *。AppInstaller 檔案。
<?xml version="1.0" encoding="utf-8"?> <AppInstaller xmlns="http://schemas.microsoft.com/appx/appinstaller/2021" Version="" Uri="" > </AppInstaller>使用
Version應用程式安裝程式檔案的版本更新 屬性將屬性
URI更新為 *.AppInstaller 檔案可以存取的網路位置。
步驟 3:新增主要套件資訊
<MainPackage>和 <MainBundle> 用來識別將使用應用程式安裝程式檔案安裝的主要 Windows 應用程式。 當 Windows 應用程式安裝程式為 *<MainPackage> 或 *.appx 格式時,會使用 。 使用<MainBundle>當 Windows 應用程式安裝檔案為配套的 Windows 應用程式安裝檔案,且其副檔名為 *.msixbundle 或 *.appxbundle 時。
| 元素 | 說明 |
|---|---|
| 名稱 | 通過應用程式安裝器檔案分發的主要應用程式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Name。 |
| 發行人 | 用來簽署主要 Windows 應用程式安裝程式之發行者憑證的正式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Publisher。 |
| 版本 | 四點表示法中主要 Windows 應用程式安裝程式的版本(1.0.0.0)。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Version。 |
| 處理器架構 | 主要 Windows 應用程式安裝程式所使用的架構。 |
| URI(統一資源識別碼) | 主要 Windows 應用程式安裝媒體的 URI 路徑。 |
<MainBundle> 或 <MainPackage> 屬性中的資訊應該分別對應到應用程式套件組合指令清單或應用程式套件指令清單中的 Package/Identity 元素。
Windows 應用程式安裝程式
如果主要應用程式套件是 .msix 或 .appx 檔案,請使用 <MainPackage>,如下所示。 請務必包含 ProcessorArchitecture,因為這是非捆綁包的必需條件。
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainPackage
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
ProcessorArchitecture="x64"
Uri="http://mywebservice.azurewebsites.net/mainapp.msix" />
</AppInstaller>
Windows 應用程式套件組合安裝程式
如果主要應用程式套件是 .msixbundle 或 .appxbundle 形式的檔案,請使用 <MainBundle> 取代 <MainPackage> ,如下所示。 對於套件組合,不需要 ProcessorArchitecture。
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
</AppInstaller>
步驟 4:新增選擇性套件
與主要應用程式套件屬性類似,如果選擇性套件可以是應用程式套件或應用程式套件組合,則屬性內的 <OptionalPackages> 子元素分別應為 <Package> 和 <Bundle>。 子元素中的套件信息應該符合套件組合或套件指令清單中的識別元素。
| 元素 | 說明 |
|---|---|
| 名稱 | 要透過應用程式安裝程式檔案散發至 的選擇性應用程式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Name。 |
| 發行人 | 用來簽署選擇性 Windows 應用程式安裝程式之發行者憑證的正式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Publisher。 |
| 版本 | Windows 應用程式安裝程式的選用版本,其版本格式為四點表示法(1.0.0.0)。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Version。 |
| 處理器架構 | 選擇性 Windows 應用程式安裝程式要安裝的系統架構。 |
| URI(統一資源識別碼) | 主要 Windows 應用程式安裝媒體的 URI 路徑。 |
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<OptionalPackages>
<Bundle
Name="Contoso.OptionalApp1"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />
<Package
Name="Fabrikam.OptionalApp3"
Publisher="CN=Fabrikam"
Version="10.34.54.23"
ProcessorArchitecture="x64"
Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix" />
</OptionalPackages>
</AppInstaller>
步驟 5:新增相依性
在 dependencies 元素中,您可以指定主要套件或選擇性套件的必要架構套件。
| 元素 | 說明 |
|---|---|
| 名稱 | 透過 App Installer 檔案散發的相依性應用程式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Name。 |
| 發行人 | 用來簽署相依性 Windows 應用程式安裝程式之發行者憑證的正式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Publisher。 |
| 版本 | 四點表示法中相依性 Windows 應用程式安裝程式的版本(1.0.0.0)。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Version。 |
| 處理器架構 | 依賴性 Windows 應用程式安裝器要安裝的架構。 |
| URI(統一資源識別碼) | 相依性 Windows 應用程式安裝媒體的 URI 路徑。 |
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<Dependencies>
<Package
Name="Microsoft.VCLibs.140.00"
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
Version="14.0.24605.0" ProcessorArchitecture="x86" Uri="http://foobarbaz.com/fwkx86.appx" />
<Package
Name="Microsoft.VCLibs.140.00"
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
Version="14.0.24605.0"
ProcessorArchitecture="x64"
Uri="http://foobarbaz.com/fwkx64.appx" />
</Dependencies>
</AppInstaller>
步驟 6:新增更新設定
應用程式安裝程式檔案也可以指定更新設定,以便在發行較新的應用程式安裝程式檔案時自動更新相關集合。 <UpdateSettings> 是選擇性專案。 在< UpdateSettings> 中,OnLaunch 選項會指定應該在應用程式啟動時進行更新檢查,而 HoursBetweenUpdateChecks=“12” 會指定每隔 12 小時進行更新檢查一次。 如果未指定 HoursBetweenUpdateChecks,則用來檢查更新的預設間隔為 24 小時。 您可以在更新設定架構中找到其他類型的更新,例如背景更新;您可以在 OnLaunch 架構中找到其他啟動更新類型,例如提示的更新
| 元素 | 說明 |
|---|---|
| 更新檢查間隔時間(小時) | 定義 Windows 應用程式更新檢查中的最小差距。 |
| 更新區塊啟動 | 定義檢查應用程式更新時的體驗。 |
| ShowPrompt | 定義是否在安裝更新時顯示視窗,以及檢查更新的時間。 |
| 強制從任何版本更新 | 說明應用程式的下一個版本可以是更新或舊版本。 如果為 True,則會安裝所有版本;如果為 False (預設值),則只會安裝新版本。 |
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<UpdateSettings>
<OnLaunch
HoursBetweenUpdateChecks="12"
UpdateBlocksActivation="true"
ShowPrompt="true" />
<AutomaticBackgroundTask />
<ForceUpdateFromAnyVersion>true</ForceUpdateFromAnyVersion>
</UpdateSettings>
</AppInstaller>
步驟 7:新增自動更新設定
這很重要
只有在 Windows 10 的 Windows Insider 版本中使用 2021 架構設定時,才能使用下列設定。
隨應用程式安裝程式檔案一起安裝的 Windows 應用程式預設會從應用程式安裝程式 URI 更新其 Windows 應用程式,並遵循上一個步驟中設定的設定。 在此步驟中設定的更新 URI 將會作為後援 URI,如果無法再存取原始的應用程式安裝程式 URI,就可以使用。 最多可以針對任何 Windows 應用程式設定 10 個更新 URI。
更新 URI 的必須以應用程式安裝程式檔案為目標。
備註
這些設定只有在架構設定為 2021 或更新時才能運作。
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<UpdateSettings>
<OnLaunch
HoursBetweenUpdateChecks="12" />
</UpdateSettings>
<UpdateUris>
<UpdateUri>https://www.contoso.com/Installers/MainApp.AppInstaller</UpdateUri>
<UpdateUri>\\ServerName\Share\Installers\MainApp.AppInstaller</UpdateUri>
</UpdateUris>
</AppInstaller>
步驟 8:新增自動修復設定
這很重要
只有在 Windows 10 的 Windows Insider 版本中使用 2021 架構設定時,才能使用下列設定。
裝置上安裝的 Windows 應用程式可支援在 Windows 應用程式遭到竄改時自動修復。 將用來修復 Windows 應用程式的來源安裝程式可以使用 屬性進行設定 <RepairURIs> 。 如果無法存取,Windows 應用程式會嘗試根據應用程式安裝程式 URI 自行修復,則 Windows 應用程式會使用修復 URI 的 來識別修復來源。 最多可以針對任何 Windows 應用程式設定 10 個修復 URI。
修復 URI 的目標可以是 Windows 應用程式或應用程式安裝程式檔案。 這個設定不需要使用應用程式安裝程式檔案安裝 Windows 應用程式。
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<UpdateSettings>
<OnLaunch
HoursBetweenUpdateChecks="12" />
</UpdateSettings>
<RepairUris>
<RepairUri></RepairUri>
<RepairUri></RepairUri>
</RepairUris>
</AppInstaller>
如需 XML 架構的所有詳細資料,請參閱 應用程式安裝程式檔案參考。
備註
App Installer 檔類型是 Windows 10 版本 1709 的新功能(Windows 10 Fall Creators Update)。 不支援在舊版 Windows 10 上使用應用程式安裝程式檔案部署 Windows 10 應用程式。 從 Windows 10 版本 1803 開始,即可使用 HoursBetweenUpdateChecks 元素。