手动创建应用安装程序文件

本文介绍如何手动创建一个应用安装程序文件,该文件定义了一个具有自动更新和修复功能的相关集。 相关集不是一个实体,而是主包和可选包的组合。

若要将相关集安装为一个实体,必须能够将主包和可选包指定为一个。 为此,我们需要创建具有 .appinstaller 扩展名的 XML 文件来定义相关集。 应用安装程序使用 *.appinstaller 文件,允许用户单击一下即可安装所有定义的包。

在部署期间,应用安装程序文件将:

  • URI MainPackage < 元素 > 属性中引用的 Windows 应用包将验证目标 Windows 应用包属性的 NamePublisherVersion。 如果 Windows 应用包清单中的 Package/Identity 元素不匹配,安装将失败。
  • 为包系列创建对更新和修复 URI 的引用。

如何创建应用安装程序文件

若要将相关集分发为一个实体,必须创建一个应用安装程序文件,其中包含该 应用安装程序架构所需的元素。

  1. 创建 *。AppInstaller 文件。
  2. 指定应用安装程序文件属性。
  3. 指定主 Windows 应用包。
  4. 指定相关的可选包集合。
  5. 指定依赖项 Windows 应用框架包。
  6. 指定更新 URI 路径。
  7. 指定修复 URI 路径。
  8. 指定更新设置。
应用安装程序文件的示例

按照上述步骤作,你已成功创建类似于以下内容的应用安装程序文件:

<?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

操作说明:
  1. 打开 “开始”菜单
  2. 键入以下内容: notepad.exe.
  3. 打开 “文件 ”菜单。
  4. 从下拉菜单中选择“ 另存为 ”。

步骤 2:添加基本模板

AppInstaller 元素包含在应用安装程序文件中,指出应用安装程序文件的版本、路径和网络位置。 安装关联的 Windows 应用时,将使用元素中 AppInstaller 的信息。

元素 DESCRIPTION
xmlns XML 命名空间
版本 应用安装程序文件的版本采用四点表示法(1.0.0.0)。
URI 设备可访问的当前应用安装程序文件的 URI 路径。
操作说明:
  1. 打开 在步骤 1 中创建的文件。

  2. 将以下 XML 内容复制到 *。AppInstaller 文件。

    <?xml version="1.0" encoding="utf-8"?>
    <AppInstaller
        xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
        Version=""
        Uri="" >
    </AppInstaller>
    
  3. 使用应用安装程序文件的版本更新 Version 属性

  4. 更新 URI 属性,使其指向此 .AppInstaller 文件可从中访问的网络位置。

步骤 3:添加主包信息

<MainPackage><MainBundle>用于标识将通过应用安装程序文件安装的主要Windows应用。 当 Windows 应用安装程序是 *<MainPackage> 或 *.appx 时,会使用 。 使用 <MainBundle> 当 Windows 应用安装程序是一个捆绑的 Windows 应用安装程序时,其扩展名为 *.msixbundle 或 *.appxbundle

元素 DESCRIPTION
名称 正通过应用安装程序文件分发到的主要应用程序的名称。 可以通过运行以下 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>。 子元素中的包信息应与捆绑包或包清单中的标识元素匹配。

元素 DESCRIPTION
名称 正通过应用安装程序文件分发到的可选应用程序的名称。 可以通过运行以下 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 元素中,可以为主包或可选包指定所需的框架包。

元素 DESCRIPTION
名称 通过应用安装程序文件分发的依赖应用程序的名称。 可以通过运行以下 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 架构中找到其他类型的启动更新,例如提示更新

元素 DESCRIPTION
更新检查间隔小时数 定义 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 预览体验成员版本的 Windows 10 上使用 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 预览体验成员版本的 Windows 10 上使用 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 应用。 从 Windows 10 版本 1803 开始, 即可使用 HoursBetweenUpdateChecks 元素。