生成 MSIX 包组件

本文介绍如何生成 MSIX 包组件,以便使用命令行工具(不使用 Visual Studio 或 MSIX 打包工具)打包应用程序。

若要手动打包应用,需要创建包清单文件,添加包组件,然后运行 MakeAppx.exe 命令行工具生成 MSIX 包。

首先,准备打包

如果尚未这样做,请查看本部分,了解 打包应用程序之前需要了解的内容

创建包清单

创建一个文件, 将其命名为appxmanifest.xml,然后将此 XML 添加到该文件。

它是一个基本模板,其中包含包所需的元素和属性。 我们将在下一部分中添加这些值。

<?xml version="1.0" encoding="utf-8"?>
<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
  <Identity Name="" Version="" Publisher="" ProcessorArchitecture="" />
  <Properties>
    <DisplayName></DisplayName>
    <PublisherDisplayName></PublisherDisplayName>
    <Description></Description>
    <Logo></Logo>
  </Properties>
  <Resources>
    <Resource Language="" />
  </Resources>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="" MaxVersionTested="" />
  </Dependencies>
  <Capabilities>
    <rescap:Capability Name="runFullTrust"/>
  </Capabilities>
  <Applications>
    <Application Id="" Executable=""
      uap10:RuntimeBehavior="packagedClassicApp"
      uap10:TrustLevel="mediumIL">
      <uap:VisualElements DisplayName="" Description=""	Square150x150Logo=""
        Square44x44Logo="" BackgroundColor="" />
    </Application>
  </Applications>
</Package>

注释

如果程序包安装在低于 Windows 10 版本 2004(10.0;内部版本 19041)的系统上,则请使用 EntryPoint 属性而非 uap10:RuntimeBehavioruap10:TrustLevel。 有关更多详细信息和示例,请参阅在 Windows 10 版本 2004(10.0;内部版本 19041)中引入了 uap10

填写文件的包级元素

填写此模板,填写描述您包裹的信息。

标识信息

下面是一个示例 Identity 元素,其中包含属性的占位符文本。 可以将属性设置为 ProcessorArchitecturex64x86arm 即 32 位 ARM), arm64neutral

<Identity Name="MyCompany.MySuite.MyApp"
          Version="1.0.0.0"
          Publisher="CN=MyCompany, O=MyCompany, L=MyCity, S=MyState, C=MyCountry"
			    ProcessorArchitecture="x64">

注释

如果已在 Microsoft 应用商店中保留应用程序名称,则可以使用 合作伙伴中心获取名称和发布者。 如果你打算将应用程序旁加载到其他系统上,只要选择的发布者名称与用于对应用进行签名的证书上的名称相匹配,就可以提供自己的名称。

性能

Properties 元素有 3 个必需的子元素。 下面是一个示例 属性 节点,其中包含元素的占位符文本。 DisplayName 是你在应用商店中保留的应用程序的名称,适用于上传到应用商店的应用。

<Properties>
  <DisplayName>MyApp</DisplayName>
  <PublisherDisplayName>MyCompany</PublisherDisplayName>
  <Logo>images\icon.png</Logo>
</Properties>

资源

下面是一个 示例资源 节点。

<Resources>
  <Resource Language="en-us" />
</Resources>

依赖关系

对于为其创建包的桌面应用,请始终将 Name 属性设置为 Windows.Desktop

<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.15063.0" />
</Dependencies>

能力

对于包含一个或多个完全信任应用的包,需要声明 runFullTrust 受限功能,如下所示。 有关完整详细信息和完全信任应用的定义,请在应用功能声明中搜索完全信任权限级别

<Capabilities>
  <rescap:Capability Name="runFullTrust"/>
</Capabilities>

填写应用程序级元素

使用此模板填写描述应用的信息。

Application 元素

对于为其创建包的桌面应用,请配置 应用程序元素, 如下所示:

<Applications>
  <Application Id="MyApp" Executable="MyApp.exe"
		 uap10:RuntimeBehavior="packagedClassicApp"
     uap10:TrustLevel="mediumIL">
   </Application>
</Applications>

注释

如果程序包安装在低于 Windows 10 版本 2004(10.0;内部版本 19041)的系统上,则请使用 EntryPoint 属性而非 uap10:RuntimeBehavioruap10:TrustLevel。 有关更多详细信息和示例,请参阅在 Windows 10 版本 2004(10.0;内部版本 19041)中引入了 uap10

视觉元素

下面是 VisualElements 节点示例。

<uap:VisualElements
	BackgroundColor="#464646"
	DisplayName="My App"
	Square150x150Logo="images\icon.png"
	Square44x44Logo="images\small_icon.png"
	Description="A useful description" />

(可选)添加基于目标的未着色资产

基于目标的资源是指显示在以下位置的图标和磁贴:Windows 任务栏、任务视图、ALT+TAB、贴靠助手和“开始”磁贴的右下角。 可以 在此处阅读有关它们的详细信息。

  1. 获取正确的 44x44 图像,然后将其复制到包含图像的文件夹(即资产)。

  2. 对于每个 44x44 映像,在同一文件夹中创建一个副本,并将 .targetsize-44_altform-unplated 追加到文件名。 每个图标应有两个副本,每个副本都以特定方式命名。 例如,完成此过程后,资产文件夹可能包含 MYAPP_44x44.pngMYAPP_44x44.targetsize-44_altform-unplated.png

    注释

    在此示例中,MYAPP_44x44.png 是将在 MSIX 包的 Square44x44Logo 徽标特性中引用的图标。

  3. 在清单文件中,对要设为透明的每个图标设置 BackgroundColor

  4. 继续下一个子节以生成新的包资源索引文件。

使用 MakePri 生成包资源索引 (PRI) 文件

如果按照上述部分所述创建基于目标的资产,或者在创建包后修改应用程序的任何视觉资产,则必须生成一个新的 PRI 文件。

根据 SDK 的安装路径,MakePri.exe 位于您的 Windows 电脑上:

  • x86:C:\Program Files (x86)\Windows Kits\10\bin\<构建编号>\x86\makepri.exe
  • x64:C:\Program Files (x86)\Windows Kits\10\bin\<构建编号>\x64\makepri.exe

此工具没有 ARM 版本。

  1. 打开命令提示符或 PowerShell 窗口。

  2. 将目录更改为包的根文件夹,然后通过运行以下命令 <path>\makepri.exe createconfig /cf priconfig.xml /dq en-US创建 priconfig.xml 文件。

  3. 使用命令 <path>\makepri.exe new /pr <PHYSICAL_PATH_TO_FOLDER> /cf <PHYSICAL_PATH_TO_FOLDER>\priconfig.xml创建 resources.pri 文件。

    例如,应用程序的命令可能如下所示: <path>\makepri.exe new /pr c:\MYAPP /cf c:\MYAPP\priconfig.xml

  4. 使用下一步中的说明打包应用程序。

在打包之前测试应用程序

可以在打包或签名之前部署未打包的应用程序并对其进行测试。 为此,请从 PowerShell 窗口运行下面的 cmdlet。 确保传入位于包的根目录中的应用程序清单文件,以及其他所有包组件:

Add-AppxPackage –Register AppxManifest.xml

完成此操作后, 你的应用应该部署在系统上,你可以测试它,以确保一切在打包之前正常工作。 若要更新应用的 .exe 或 .dll 文件,请将包中的现有文件替换为新文件,增加 AppxManifest.xml中的版本号,然后再次运行上述命令。

将组件打包到 MSIX 中

下一步是使用 MakeAppx.exe 为应用程序生成 MSIX 包。 Makeappx.exe 包含在 Windows SDK 中,如果已安装 Visual Studio,可通过 Visual Studio 开发人员命令提示符轻松访问它。

请参阅 使用 MakeAppx.exe 工具创建 MSIX 包或捆绑包

注释

打包的应用程序始终作为交互式用户运行,并且安装打包应用程序的任何驱动器都必须格式化为 NTFS 格式。