手動建立應用程式安裝程式檔案
本文說明如何手動建立應用程式安裝程式檔案,以 定義具有自動更新和修復功能的相關集合 。 相關集合不是一個實體,而是主要套件和選擇性套件的組合。
若要能夠將相關集合安裝為一個實體,我們必須能夠將主要套件和選擇性套件指定為一個。 若要這樣做,我們必須建立擴展名 為 .appinstaller 的 XML 檔案,以定義相關的集合。 應用程式安裝程式會取用 *.appinstaller 檔案,並讓使用者按兩下即可安裝所有已定義的套件。
在部署期間,應用程式安裝程式檔案會:
- MainPackage 元素屬性中所參考的 < Windows 應用程式套件將會驗證
Name
目標 Windows 應用程式套件屬性的 和 。>Version
Publisher
URI
如果 Windows 應用程式套件指令清單中的 Package/Identity 元素不相符,安裝將會失敗。 - 為套件系列建立更新和修復URI的參考。
如何建立應用程式安裝程式檔案
若要將相關的集合散發為一個實體,您必須建立應用程式安裝程式檔案,其中包含該應用程式 安裝程序架構所需的專案。
- 建立 *。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 檔案
使用文字編輯器 (記事本.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 應用程式。 <MainPackage>
當 Windows 應用程式安裝程式是 *.msix 或 *.appx 時,會使用 。 <MainBundle>
當 Windows 應用程式安裝程式是配套的 Windows 應用程式安裝程式、擴展名為 *.msixbundle 或 *.appxbundle 時,請使用 。
元素 | 描述 |
---|---|
Name | 要透過應用程式安裝程式檔案散發到的主要應用程式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Name 。 |
發行者 | 用來簽署主要 Windows 應用程式安裝程式之發行者憑證的正式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Publisher 。 |
版本 | 四點表示法中主要 Windows 應用程式安裝程式的版本(1.0.0.0)。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Version 。 |
ProcessorArchitecture | 主要 Windows 應用程式安裝程式要安裝的架構。 |
URI | 主要 Windows 應用程式安裝媒體的 URI 路徑。 |
或屬性中的<MainBundle>
資訊應該分別符合應用程式套件組合指令清單或應用程式套件指令清單中的 Package/Identity<MainPackage>
元素。
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>
。 子元素中的套件信息應該符合套件組合或套件指令清單中的識別元素。
元素 | 描述 |
---|---|
Name | 要透過應用程式安裝程式檔案散發至 的選擇性應用程式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Name 。 |
發行者 | 用來簽署選擇性 Windows 應用程式安裝程式之發行者憑證的正式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Publisher 。 |
版本 | 四點表示法中選用 Windows 應用程式安裝程式的版本(1.0.0.0)。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Version 。 |
ProcessorArchitecture | 選擇性 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 元素中,您可以指定主要套件或選擇性套件的必要架構套件。
元素 | 描述 |
---|---|
Name | 要透過應用程式安裝程式檔案散發至的相依性應用程式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Name 。 |
發行者 | 用來簽署相依性 Windows 應用程式安裝程式之發行者憑證的正式名稱。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Publisher 。 |
版本 | 四點表示法中相依性 Windows 應用程式安裝程式的版本(1.0.0.0)。 執行下列 PowerShell Cmdlet 即可找到此專案: $(Get-AppxPackage [AppName]).Version 。 |
ProcessorArchitecture | 相依性 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:新增更新設定
應用程式安裝程式檔案也可以指定更新設定,以便在發行較新的應用程式安裝程式檔案時自動更新相關集合。 <Update 設定> 是選擇性專案。 在 <Update 中 設定> OnLaunch 選項會指定應在應用程式啟動時進行更新檢查,而 HoursBetweenUpdateChecks=“12” 會指定每隔 12 小時進行更新檢查。 如果未指定 HoursBetweenUpdateChecks,則用來檢查更新的預設間隔為 24 小時。 您可以在更新 設定 架構中找到其他類型的更新,例如背景更新;您可以在 OnLaunch 架構中找到其他啟動更新類型,例如提示的更新
元素 | 描述 |
---|---|
HoursBetweenUpdateChecks | 定義 Windows 應用程式更新檢查中的最小差距。 |
UpdateBlocksActivation | 定義檢查應用程式更新時的體驗。 |
ShowPrompt | 定義是否在安裝更新時顯示視窗,以及檢查更新的時間。 |
ForceUpdateFromAnyVersion | 指定下一個版本的應用程式可以是較新版本或較舊版本。 如果為 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 測試人員組建上使用 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 測試人員組建上使用 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 元素。