生成 MSIX 打包组件

本文介绍如何使用命令行工具(不使用 Visual Studio 或 MSIX 打包工具)生成用于打包应用程序的 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 元素。 可以将 ProcessorArchitecture 属性设置为 x64x86arm(即 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 Store 中保留了应用程序名称,可以使用合作伙伴中心获取“名称”和“发布者”的值。 如果你打算将应用程序旁加载到其他系统上,只要选择的发布者名称与用于对应用进行签名的证书上的名称相匹配,就可以提供自己的名称。

属性

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

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

资源

下面是一个示例 Resources 节点。

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

填写应用程序级元素

在此模板中填写用于描述应用的信息。

应用程序元素

对于要为其创建包的桌面应用,配置类似于以下的应用元素:

<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+TB、贴靠助手和“开始”磁贴右下角上的图标或磁贴。 可在此处了解相关详细信息。

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

  2. 在同一件文件中为每一个 44x44 的图像创建一个副本,并将 .targetsize-44_altform-unplated 追加到文件名中。 每个图标应有两个副本,每个副本都以具体方式命名。 例如,完成该过程后,assets 文件夹可能包含 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\<build number>\x86\makepri.exe
  • x64: C:\Program Files (x86)\Windows Kits\10\bin\<build number>\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 格式化。