使用 MSIX 打包隔离的 Win32 应用
要将现有 MSIX 或 Win32 应用程序打包成 Win32 应用隔离应用程序,则需要通过 MSIX 打包工具 (MPT) 来完成。 请注意,支持 Win32 应用隔离的 MPT 版本为 v1.2023.517.0,可从本项目的发布资产中获取。 就 Win32 应用隔离功能而言,MPT 的商店版本已经过时。 可以在此处找到有关 MPT 的其他文档。
可以在 Win32 应用隔离 GitHub 存储库的发布部分中找到 MPT 和探查器的下载。
重要
此功能为预览版:某些信息涉及预发布产品,在正式发布前可能会进行大幅修改。 Microsoft 对此处提供的信息不提供任何明示或暗示的保证。
将现有 Win32 安装程序转换为 MSIX 应用
选择最左侧的“应用程序包”,然后选择要创建程序包的位置。 此流程将遵循“在此计算机上创建程序包”选项。
注意
这样,应用程序将在完成步骤 5 后作为普通 Win32 应用进行安装。
等待“MSIX 打包工具驱动程序”字段完成检查。
使用浏览按钮导航并选择 Win32 安装程序。 将签名首选项留空,因为我们需要编辑清单并为其再次签名。
输入程序包信息。
像往常一样使用 Win32 安装程序
如果除主入口点之外还有其他入口点,请启动或浏览它们。 如果应用的设置/配置/首选项中有“文件类型关联”选项,请在此步骤中切换这些选项,以便 MSIX 能够选取它们。
如果程序包中还有服务,则重复同样的过程。
单击“创建”会将程序包保存为完全信任程序包。 单击“程序包编辑器”按钮,从主菜单中转到“程序包编辑器”流。 这可能需要几分钟的时间,具体取决于程序包的大小。
转换现有 MSIX 应用程序以使其隔离运行
选择最右侧的“程序包编辑器”选项,浏览 .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>
中。 除非应用具有其他可影响用户全局状态的清单扩展(如comServer
或FirewallRules
),否则应删除此扩展,因为这些扩展需要runFullTrust
功能。- 如果
该应用在被隔离后可能需要额外的功能才能正常运行。 如果需要,请参阅 支持的功能 页。
保存并关闭清单窗口。 如果清单中存在任何错误,MPT 将进行显示。 选择“创建/保存”以生成 .msix 文件。 这可能需要几分钟时间,具体取决于包的大小。
- 如果清单出现错误,可在
Application and Services/Microsoft/Windows/AppxPackagingOM/Microsoft-Windows-AppxPackaging/Operational
下的事件查看器中找到更具可操作性的错误消息
- 如果清单出现错误,可在
有关识别可能需要在应用程序包清单中声明的功能的信息,请参阅应用程序功能探查器。