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

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

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

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

  • MainPackage > 元素属性中URI引用的 < Windows 应用包将验证NamePublisher目标 Windows 应用包属性和Version目标 Windows 应用包属性。 如果 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 的信息。

元素 说明
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 应用。 <MainPackage> Windows 应用安装程序为 *.msix 或 *.appx 时使用。 使用 <MainBundle> Windows 应用安装程序是捆绑的 Windows 应用安装程序时,其扩展名为 *.msixbundle 或 *.appxbundle

元素 说明
名称 正通过应用安装程序文件分发到的主应用程序的名称。 可以通过运行以下 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 路径。

<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>。 子元素中的包信息应该与程序包或程序包清单中的 Identity 元素相匹配。

元素 说明
名称 正在通过应用安装程序文件分发到的可选应用程序的名称。 可以通过运行以下 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 步:添加依赖项

在依赖项元素中,你可以指定主要包或可选包所需的框架包。

元素 说明
名称 正在通过应用安装程序文件分发到的依赖项应用程序的名称。 可以通过运行以下 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" />

    <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 预览体验成员内部版本上使用 2021 架构Windows 10时,以下设置才可用。

随应用安装程序文件一起安装的 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 预览体验成员内部版本上使用 2021 架构Windows 10时,以下设置才可用。

在设备上安装的 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 应用。 从版本 1803 Windows 10开始,HoursBetweenUpdateChecks 元素可用。