手动创建应用安装程序文件
本文介绍如何手动创建应用安装程序文件,该文件定义具有自动更新和修复功能的相关集。 相关集不是一个实体,而是主包和可选包的组合。
若要将相关集安装为一个实体,必须能够将主包和可选包指定为一个实体。 为此,我们需要创建一个具有“.appinstaller”扩展名的 XML 文件来定义相关集。 应用安装程序使用 *.appinstaller 文件,用户只需单击一下即可安装所有定义的包。
在部署期间,应用安装程序文件将:
- < MainPackage > 元素的
URI
属性中引用的 Windows 应用包将验证目标 Windows 应用包属性的Name
、Publisher
和Version
。 如果 Windows 应用包清单中的 Package/Identity 元素不匹配,安装将失败。 - 创建对包系列的更新和修复 URI 的引用。
如何创建应用安装程序文件
若要将相关集分发为一个实体,必须创建一个应用安装程序文件,其中包含该应用安装程序架构所需的元素。
- 创建 *.AppInstaller 文件。
- 指定应用安装程序文件属性。
- 指定主 Windows 应用包。
- 指定相关集可选包。
- 指定依赖项 Windows 应用框架包。
- 指定更新 URI 路径。
- 指定修复 URI 路径。
- 指定更新设置。
应用安装程序文件示例
按照上面提供的步骤,你将成功创建一个应用程序安装程序文件,如下所示:
<?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
元素包含在应用安装程序文件中,并注明应用安装程序文件的版本、路径和网络位置。 安装关联的 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
应用安装程序文件的版本更新属性使用可访问此 *.AppInstaller 文件的网络位置更新
URI
属性。
步骤 3:添加主包信息
<MainPackage>
和 <MainBundle>
用于标识将使用应用安装程序文件安装的主 Windows 应用。 当 Windows 应用安装程序为 *.msix 或 *.appx 时,使用 <MainPackage>
。 当 Windows 应用安装程序是捆绑的 Windows 应用安装程序(扩展名为 *.msixbundle 或 *.appxbundle)时,使用 <MainBundle>
。
元素 | 说明 |
---|---|
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>
或 <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>
。 子元素中的包信息应与程序包或程序包清单中的标识元素匹配。
元素 | 说明 |
---|---|
Name | 通过应用安装程序文件分发到的可选应用程序的名称。 可以通过运行以下 PowerShell cmdlet 找到此内容:$(Get-AppxPackage [AppName]).Name 。 |
Publisher | 用于为可选 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:添加更新设置
应用安装程序文件还可以指定更新设置,以便在发布较新的应用安装程序文件时自动更新相关集。 <“UpdateSettings”>是一个可选元素。 在<“UpdateSettings”>中,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 Insider 版本上使用 2021 架构时,以下设置才可用。
随应用安装程序文件一起安装的 Windows 应用将默认从应用安装程序 URI 更新其 Windows 应用,并遵循上一步中设置的配置。 在此步骤中配置的更新 URI 将充当回退 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 应用被篡改时进行自动修复。 可以使用 <RepairURIs>
属性配置将用于修复 Windows 应用的源安装程序。 如果无法访问,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 架构的所有详细信息,请参阅 应用安装程序文件参考。
注意
应用安装程序文件类型是 Windows 10 版本 1709(Windows 10 Fall Creators Update)中的新增功能。 不支持在早期版本的 Windows 10 上使用应用安装程序文件部署 Windows 10 应用。 HoursBetweenUpdateChecks 元素从 Windows 10 版本 1803 开始可用。