注意

一些信息与预发布产品相关,在商业发行之前可能发生实质性修改。 Microsoft 对此处提供的信息不提供任何明示或暗示的保证。

本主题讨论以下方面的选项:

可以为新应用和现有应用做出这些决策。 但是,如果你仍处于新应用的规划阶段,那么在开始考虑上述注意事项之前,请先确定应用要使用的开发平台和用户界面 (UI) 框架。 有关此决策,请参阅 Windows 开发选项概述。

打包或未打包

应用打包还是未打包的决策首先由称为“程序包标识符”的概念决定,我们将在本节中进行介绍。 如果不需要,则决策取决于你自己和用户所需的安装程序体验。 让我们深入了解这些内容的详细信息。

仅当应用在运行时具有程序包标识符时,该应用才能使用后台任务、通知、实时磁贴、自定义上下文菜单扩展和共享目标等多项 Windows 扩展性功能。 这是因为,操作系统 (OS) 需要能够识别相应 API 的调用方。 请参阅需要包标识的功能。

即使不需要使用其中任何功能,创建打包的应用仍是个好办法。 打包为用户提供安装、卸载和更新应用的简便方法。 有关详细信息,请参阅本主题中的。但是,创建未打包的应用是一个选项。

简而言之,打包的应用是唯一具有程序包标识符的应用类型(并且提供最佳的安装体验)。 未打包的应用没有程序包标识符;因此,它无法使用上文提及的 API/功能。

有关打包与未打包的更多详细信息,请参阅部署概述,尤其是该主题中的“打包应用的优点和缺点”一节。 该主题还提及了“使用外部外置打包”选项。

有关如何将应用配置为打包或未打包的信息,请参阅:

另请参阅本主题中的 部分。

部署/分配/安装未打包的应用完全不涉及 MSIX。

那么,为什么应用是否打包很重要?

另请参阅本主题中的 部分。

AppContainer 或中等 IL

选择是否在 AppContainer 中运行应用是一个安全问题。 AppContainer 应用的进程及其子进程在轻量级应用容器中运行,其中它们只能访问专门授予它们的资源。 使用文件系统和注册表虚拟化对它们进行隔离。 因此,在 AppContainer 中实现的应用无法受到黑客攻击,不会允许在有限分配的资源之外执行恶意操作。

打包或未打包的应用可以配置为在 AppContainer 中运行。 但是,对于打包的应用,此过程更为简单。 如果某个应用不是 AppContainer 应用,则它是“中等 IL”应用。

有关详细信息,请参阅旧应用的 AppContainer 和 MSIX AppContainer 应用。

有关如何将应用配置为在 AppContainer 或中等 IL 中运行的信息,请参阅:

请记住,未打包的应用没有应用包清单。 因此,对于未打包的应用,可以在项目文件而不是应用包清单中声明 AppContainer-or-Medium-IL 决策。

Win32 应用隔离

重要

本节中所述的功能在 Windows Insider Preview 的预发行版本中提供。

Win32 应用隔离是 Windows 中即将推出的安全功能,如果应用遭到入侵,此功能可以帮助遏制损害并保护用户隐私选择。 此功能基于 AppContainers 和某些组件,这些组件可虚拟化资源并提供对其他资源的中转访问。 有关用于隔离应用的文档和工具,请参阅欢迎使用 Win32 应用隔离存储库。

应用功能

应用功能(例如 internetClient、位置、麦克风和蓝牙)主要与 AppContainer 中运行的打包应用相关。 这些打包应用包括所有通用 Windows 平台 (UWP) 应用和部分桌面应用。

但在某些情况下,中等 IL 应用(即不是 AppContainer 应用的应用)也应该声明功能。 举个例子,runFullTrust 受限功能。

有关应用功能、适用的应用类型以及如何配置应用功能的详细信息,请参阅应用功能声明。 功能在应用包清单中进行配置,因此这些功能仅适用于打包的应用。

应用类型

桌面应用和通用 Windows 平台 (UWP) 应用是两种主要应用类型,尽管桌面应用系列中有多种类型的应用。 选择用户界面 (UI) 框架(WinForms、WPF、Win32、Direct 2D/3D、UWP 或 WinUI 3)是一种选项,在某种程度上与本主题中所述的配置无关。

不过,我们来看看这些应用类型在打包、部署和处理方面互相之间有何不同。

首先,所有 UWP 应用都是打包应用,并在 AppContainer 中运行。 但对于桌面应用,情况更加灵活。 可以选择打包桌面应用,也可以不打包。 并且,无论如何决策,都可以选择将桌面应用配置为 AppContainer 应用或中等 IL 应用。

已打包未打包

AppContainer

桌面应用

UWP 应用

桌面应用

中等 IL

桌面应用

桌面应用

对于打包的应用,若要配置所需的应用类型,请使用应用包清单中的 uap10:RuntimeBehavior 属性(请参阅应用程序 (Windows 10))。

最后,将 uap10:RuntimeBehavior 设置为“windowsApp”可得到 UWP 应用。

有关可开发的应用类型的所有选项,请参阅 Windows 应用开发:选项和功能。

Windows 应用 SDK - 依赖于框架或独立

如果要开发或维护使用 Windows 应用 SDK 的应用,则需要做出进一步的决策。 因为有以下两种方式可以部署应用所依赖的 Windows 应用 SDK:

有关详细信息,请参阅 Windows 应用 SDK 部署概述。

Windows 程序包管理器和 WinGet 客户端

程序包管理器可以通过自动执行工作流来帮助用户安装/升级/配置软件。 程序包管理器可以帮助安装任何软件,但它们往往主要用于安装开发人员工具。 因此,如果要构建开发人员工具,你可能会对此选项特别感兴趣。 但其工作原理如下:

结果是缩短了用户环境就绪的时间,并提高了所安装组件之间的兼容性。 可以使用 Windows 程序包管理器以 .msix、.msi 和 .exe 等格式分发打包的或解压缩的应用。

有关详细信息,请参阅 Windows 程序包管理器。

免责声明:本站为个人博客,博客所发布的一切修改补丁、注册机和注册信息及软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 访问和下载本站内容,说明您已同意上述条款。本站为非盈利性站点,VIP功能仅仅作为用户喜欢本站捐赠打赏功能,本站不贩卖软件,所有内容不作为商业行为。