使用 MSIX 打包隔离的 Win32 应用

要将现有 MSIX 或 Win32 应用程序打包成 Win32 应用隔离应用程序,则需要通过 MSIX 打包工具 (MPT) 来完成。 请注意,支持 Win32 应用隔离的 MPT 版本为 v1.2023.517.0,可从本项目的发布资产中获取。 就 Win32 应用隔离功能而言,MPT 的商店版本已经过时。 可以在此处找到有关 MPT 的其他文档。

可以在 Win32 应用隔离 GitHub 存储库的发布部分中找到 MPT 和探查器的下载。

重要

此功能为预览版:某些信息涉及预发布产品,在正式发布前可能会进行大幅修改。 Microsoft 对此处提供的信息不提供任何明示或暗示的保证。

将现有 Win32 安装程序转换为 MSIX 应用

  1. 选择最左侧的“应用程序包”,然后选择要创建程序包的位置。 此流程将遵循“在此计算机上创建程序包”选项。

    注意

    这样,应用程序将在完成步骤 5 后作为普通 Win32 应用进行安装。

    显示了 MSIX 打包工具主页的屏幕截图

  2. 等待“MSIX 打包工具驱动程序”字段完成检查。

    显示了 MSIX 打包工具的“新建程序包”页面的屏幕截图

  3. 使用浏览按钮导航并选择 Win32 安装程序。 将签名首选项留空,因为我们需要编辑清单并为其再次签名。

    显示了 MSIX 打包工具中的“选择安装程序”页面的屏幕截图

  4. 输入程序包信息。

    显示了 MSIX 打包工具中“程序包信息”页面的屏幕截图

  5. 像往常一样使用 Win32 安装程序

  6. 如果除主入口点之外还有其他入口点,请启动或浏览它们。 如果应用的设置/配置/首选项中有“文件类型关联”选项,请在此步骤中切换这些选项,以便 MSIX 能够选取它们。

  7. 如果程序包中还有服务,则重复同样的过程。

  8. 单击“创建”会将程序包保存为完全信任程序包。 单击“程序包编辑器”按钮,从主菜单中转到“程序包编辑器”流。 这可能需要几分钟的时间,具体取决于程序包的大小。

    显示了 MSIX 打包工具中创建包时的最终“创建包”页面的屏幕截图

转换现有 MSIX 应用程序以使其隔离运行

  1. 选择最右侧的“程序包编辑器”选项,浏览 .msix 文件并点击“打开程序包”按钮。

    在 MSIX 打包工具中单击“打开程序包”之前显示的主页的屏幕截图

  2. 向下滚动到“清单文件”部分,然后单击“打开文件”。

    在 MSIX 打包工具中单击“打开程序包”后显示“程序包信息”页面的屏幕截图

    在清单中,需要做出以下更改。

    注意

    隔离的 Win32 应用程序与同一程序包中的其他应用程序类型不兼容。

    • 如果 xmlns:previewsecurity2="http://schemas.microsoft.com/appx/manifest/preview/windows10/security/2" 元素中还没有 <Package>,则为其添加。
      • previewsecurity2 添加到 IgnorableNamespaces<Package> 元素的末尾。
    • 如果 xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10" 元素中还没有 <Package>,则为其添加。
      • uap10 添加到 IgnorableNamespaces<Package> 元素的末尾。
    • <Dependencies> 中,将 TargetDeviceFamily 更改为 <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.25357.0" MaxVersionTested="10.0.25357.0" />

      注意

      并非所有功能都在最低版本中提供,请查看发行说明以了解详细信息。

    • <Application> 中,将现有的 entrypoint/trustlevel/runtimebehavior 替换为 uap10:TrustLevel="appContainer" previewsecurity2:RuntimeBehavior="appSilo"
    • <Application> 扩展中,删除任何 EntryPoints=*Executable=*,因为它们是从父 <Application> 继承而来
    • desktop7:Scope="user" 的扩展元素添加 windows.protocol

    注意

    默认情况下,由于应用是打包的 Win32,因此 MPT 会自动将 <rescap:Capability name="runFullTrust"> 添加到 <Capabilities> 中。 除非应用具有其他可影响用户全局状态的清单扩展(如 comServerFirewallRules),否则应删除此扩展,因为这些扩展需要 runFullTrust 功能。

    显示了应用程序清单文件内容的屏幕截图

  3. 该应用在被隔离后可能需要额外的功能才能正常运行。 如果需要,请参阅 支持的功能 页。

  4. 保存并关闭清单窗口。 如果清单中存在任何错误,MPT 将进行显示。 选择“创建/保存”以生成 .msix 文件。 这可能需要几分钟时间,具体取决于包的大小。

    • 如果清单出现错误,可在 Application and Services/Microsoft/Windows/AppxPackagingOM/Microsoft-Windows-AppxPackaging/Operational 下的事件查看器中找到更具可操作性的错误消息
  5. 有关识别可能需要在应用程序包清单中声明的功能的信息,请参阅应用程序功能探查器

Win32 应用隔离概述

应用程序功能探查器

使用 Visual Studio 打包 Win32 应用隔离应用程序