使用 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(或更高版本)。

显示了需要在 Visual Studio 中安装的工作负载的屏幕截图

步骤 2 - 创建应用项目

在 Visual Studio 中,使用模板使用 Windows 应用程序打包项目打包的空白应用(桌面版 WinUI 3)创建一个新的 C# 或 C++ 项目。 单击“创建”,然后为目标平台版本 (TPV) 和目标平台最小版本 (TPMinV) 选择“10.0.26100.0”(或更高版本)。

显示了 Visual Studio 中带有 Windows 打包项目的空白应用的模板的屏幕截图

显示了 Visual Studio 中“新建项目”屏幕的屏幕截图

显示了 Visual Studio 中新建 WinUI 项目屏幕的屏幕截图

步骤 3 - 使用 NuGet 安装 Microsoft.Windows.SDK.BuildTools 10.0.26100.1742 或更高版本

转到“项目”-“管理 NuGet 程序包”以安装 > 版本 10.0.26100.1(或更高版本)。

显示了 Visual Studio 中“管理 NuGet 程序包”屏幕的屏幕截图

显示了 Visual Studio 中 NuGet 屏幕上的 Microsoft.Windows.SDK.BuildTools 程序包的屏幕截图

显示了 Visual Studio 中 NuGet 屏幕上生成工具程序包的信息的屏幕截图

步骤 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> 中。 除非应用具有其他可影响用户全局状态的清单扩展(如 comServerFirewallRules),否则应删除此扩展,因为这些扩展需要 runFullTrust 功能。

显示了 Visual Studio 中打包应用程序配置的屏幕截图

  • 在 wapproj 文件中,在目标平台版本行之后添加 <AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>显示了 Visual Studio 中项目文件配置的屏幕截图

步骤 5 - 生成和发布应用程序包

生成 Visual Studio 解决方案。

显示了在 Visual Studio 中构建解决方案的屏幕截图

使用“创建应用程序包...”向导发布应用程序包。

显示了 Visual Studio 中创建应用包向导的屏幕截图

显示了 Visual Studio 中应用包向导中的创建步骤的屏幕截图

发布应用程序包后,显示的“输出位置”会显示按版本发布 MSIX 程序包的根目录。 打开版本文件夹,找到用于安装应用的 Install.ps1 文件。

显示了 Visual Studio 中向导成功创建的打包的屏幕截图

应用隔离概述

应用程序功能探查器

使用 MSIX 打包隔离的 Win32 应用