捆绑 MSIX 包

本文介绍在使用 MSIX 打包工具转换 Windows 安装程序的 x86 和 x64 版本之后,创建捆绑包的过程。

将安装程序的多个体系结构版本捆绑成一个实体后,只需将该捆绑包上传到 Store 或另一个分发位置。 Windows 10 部署平台可以识别 .msixbundle 包类型,只会下载适用于你设备的体系结构的文件。 请记住,如果你决定分发特定应用的 .msixbundle,则再也不能像以前一样只是分发某个 MSIX 包。

以下部分提供了生成 .msixbundle 的每个步骤。 其中假设已将 Windows 安装程序的现有 x86 和 x64 版本转换为 MSIX 包。

设置

需要完成以下设置才能成功生成 MSIX 捆绑包:

  • Windows 10 SDK(1809 或更高版本)
  • 已转换的 x64 和 x86 MSIX 包

步骤 1:查找MakeAppx.exe

MakeAppx.exe 是 Windows 10 SDK 中提供的一个工具,可用于打包和捆绑 MSIX 包。 你将使用此工具将两个 MSIX 包捆绑到一起。

MakeAppx.exe 可用于提取 Windows 10 应用包或捆绑包的文件内容。 它还可以加密和解密应用包与捆绑包。

安装 Windows 10 SDK 后,通常可在以下位置找到 MakeAppx.exe:

  • [x86] - C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\MakeAppx.exe
  • [x64] - C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64\MakeAppx.exe

步骤 2:捆绑包

使用 MakeApp.exe 捆绑包的最简单方法是将要捆绑在一起的所有包添加到一个文件夹中。 除了需要捆绑的包之外,目录必须不含其他所有内容。

将要捆绑的应用包移到一个目录中,如以下屏幕截图所示。

Bundle packages in a directory

注意

MakeAppx.exe 只会捆绑具有相同标识的包,这意味着,AppID、发布者和版本需要相同。 只有应用程序包的包处理器体系结构可以不同。

MakeAppx.exe 使用以下命令行语法。

C:\> "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\MakeAppx.exe" bundle /d input_directorypath 
/p <filepath>.msixbundle

下面是一个示例命令。

C:\> "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\MakeAppx.exe" bundle /d c:\AppPackages\ 
/p c:\MyLOBApp_10.0.0.0_ph32m9x8skttmg.msixbundle

运行该命令后,将在指定的路径中创建一个未签名的 .msixbundle。 绑定之前,不需要对包进行签名。

步骤 3:对捆绑包进行签名

创建捆绑包后,必须先对包进行签名,然后才能将应用分发给用户或进行安装。

若要对包进行签名,需要具有常规代码签名证书并使用 Windows 10 SDK 中的 SignTool.exe。

我们强烈建议你使用证书颁发机构提供的受信任证书,因为这样可以使包在最终用户设备上无缝分发和部署。 一旦有权访问私有证书(.pfx 文件),就可以对包进行签名,如下所示。

注意

SignTool.exe 在 Windows 10 SDK 中 MakeAppx.exe 所在的目录中提供。

SignTool.exe 使用以下命令行语法。

C:\> "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\SignTool.exe" sign /fd <Hash Algorithm> /a 
/f <Path to Certificate>.pfx /p <Your Password> <File path>.msixbundle

下面是一个示例命令。

C:\> "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\SignTool.exe" sign /fd SHA256 /a 
/f c:\private-cert.pfx /p aaabbb123 c:\MyLOBApp_10.0.0.0_ph32m9x8skttmg.msixbundle

有关使用 SignTool.exe 为应用包签名的详细信息,请参阅此文

成功为捆绑包签名后,可将其放在网络共享或任何内容分发网络上,以将其分发给用户。