使用 Visual Studio 打包 Win32 应用隔离应用程序
本页将介绍打包应用程序以利用 Win32 应用隔离所需的全部内容。
重要
此功能为预览版:某些信息涉及预发布产品,在正式发布前可能会进行大幅修改。 Microsoft 对此处提供的信息不提供任何明示或暗示的保证。
先决条件
将应用程序打包到独立的 Win32 应用中需要满足以下条件:
- Visual Studio 17.10.2 或更高版本
步骤 1 - 在 Visual Studio 中安装所需的工作负载,包括 Windows 11 SDK 10.0.26100.0(或更高版本)
打开 Visual Studio 安装程序并修改现有安装。 在“工作负载”选项卡上选中“Windows 应用程序开发”复选框(还可选中“C++ WinUI 应用开发工具”复选框,以便使用 C++ 进行开发)。 还需要 Windows 11 SDK 10.0.26100.0(或更高版本)。
步骤 2 - 创建应用项目
在 Visual Studio 中,使用模板使用 Windows 应用程序打包项目打包的空白应用(桌面版 WinUI 3)创建一个新的 C# 或 C++ 项目。 单击“创建”,然后为目标平台版本 (TPV) 和目标平台最小版本 (TPMinV) 选择“10.0.26100.0”(或更高版本)。
步骤 3 - 使用 NuGet 安装 Microsoft.Windows.SDK.BuildTools 10.0.26100.1742 或更高版本
转到“项目”-“管理 NuGet 程序包”以安装 > 版本 10.0.26100.1(或更高版本)。
步骤 4 - 编辑 Packaging.appxmanifest 和项目文件
在清单文件中,需要做出以下更改:
注意:隔离的 win32 应用程序与同一程序包中的其他应用程序类型不兼容。
如果
xmlns:uap18="http://schemas.microsoft.com/appx/manifest/uap/windows10/18"
元素中还没有<Package>
,则为其添加。- 将
uap18
添加到IgnorableNamespaces
中<Package>
元素的末尾。
- 将
在
<Dependencies>
中,将TargetDeviceFamily
更改为<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.26100.0" MaxVersionTested="10.0.26226.0" />
。注意
并非所有功能都在最低版本中提供,请查看发行说明以了解详细信息。 此外,以下清单更改使应用能够成为独立应用,但它可以在不支持 Win32 应用隔离的操作系统中继续作为 Win32 应用运行。
在
<Application>
将所有现有的入口点/信任级别/运行时行为替换为EntryPoint="Windows.FullTrustApplication"
uap18:EntryPoint="Isolated.App"
uap18:TrustLevel="appContainer" uap18:RuntimeBehavior="appSilo"
。在
<Application>
扩展中,删除任何EntryPoints=*
或Executable=*
,因为它们是从父<Application>
继承而来为
desktop7:Scope="user"
的扩展元素添加windows.protocol
。注意
默认情况下,由于应用是打包的 Win32,Visual Studio 会自动将
<rescap:Capability name="runFullTrust">
添加到<Capabilities>
中。 除非应用具有其他可影响用户全局状态的清单扩展(如comServer
或FirewallRules
),否则应删除此扩展,因为这些扩展需要runFullTrust
功能。
- 在 wapproj 文件中,在目标平台版本行之后添加
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
步骤 5 - 生成和发布应用程序包
生成 Visual Studio 解决方案。
使用“创建应用程序包...”向导发布应用程序包。
发布应用程序包后,显示的“输出位置”会显示按版本发布 MSIX 程序包的根目录。 打开版本文件夹,找到用于安装应用的 Install.ps1 文件。