了解安装程序

本文列出了将现有安装程序转换为 MSIX 之前需要了解的内容。 可能不需要执行很多操作即可使应用为打包过程做好准备,但是如果以下任意一项适用于你的应用程序,则在打包之前需要解决该问题。

  • 应用程序具有服务。 我们支持转换具有服务的应用程序,但请务必记住转换服务的限制。 转换后,需要管理员提升权限才能安装包含服务的 MSIX。 可以使用从版本 1.2019.1220.0 开始的 MSIX 打包工具转换带有服务的应用程序,并且从 Windows 10 的 2020 年春季版本开始可以部署带有服务的 MSIX。

  • 安装程序需要重启。 如果安装程序需要重启,则从版本 1.2019.701.0 开始的 MSIX 打包工具支持此功能。 如果安装程序返回一个不常见的退出代码来指示它需要重启,则应将其添加到 MSIX 打包工具设置的重启退出代码部分。

  • .NET 应用程序需要低于 4.6.2 的 .NET Framework 版本。 如果你正在打包 .NET 应用程序,我们建议使应用程序以 .NET Framework 4.6.2 或更高版本为目标。 Windows 10 版本 1607(也称为周年更新)中首次引入了安装和运行打包桌面应用程序的功能,此 OS 版本默认包含 .NET Framework 4.6.2。 更高版本的 OS 包含更高版本的 .NET Framework。 有关更高版本的 Windows 10 中包含的 .NET 版本完整列表,请参阅此文

    在大多数情况下,预期都可以在打包的桌面应用程序中以低于 4.6.2 的 .NET Framework 版本为目标。 但是,如果以低于 4.6.2 的版本为目标,则在将打包的桌面应用程序分发给用户之前,应先对其进行全面测试。

    • 4.0 - 4.6.1:以这些 .NET Framework 版本为目标的应用程序在 4.6.2 或更高版本中预期也可以正常运行。 因此,在 Windows 10 版本 1607 或更高版本上使用 OS 原装 .NET Framework 版本的情况下,这些应用程序应该无需进行任何更改即可安装和运行。

    • 2.0 - 3.5:根据我们的测试,以这些 .NET Framework 版本为目标的打包桌面应用程序通常可以正常运行,但某些情况下可能会出现性能问题。 要使这些打包的应用程序能够安装和运行,必须在目标计算机上安装 .NET Framework 3.5 功能(此功能还包括 .NET Framework 2.0 和 3.0)。 打包这些应用程序后,还应该对其进行全面的测试。

  • 应用程序需要驱动程序。 MSIX 不支持驱动程序。

  • 应用程序会写入 AppData 文件夹或注册表,目的是与其他应用共享数据。 转换后,AppData 将重定向到本地应用数据存储,该存储是每个应用的专用应用商店。

    应用程序将写入 HKEY_LOCAL_MACHINE 注册表配置单元的所有条目都将重定向到隔离的二进制文件中,应用程序写入 HKEY_CURRENT_USER 注册表配置单元的任何条目都将按用户、按应用放入专用位置。 有关文件和注册表重定向的更多详细信息,请参阅在桌面桥幕后

  • 应用程序写入应用的安装目录。 例如,应用程序写入与你的 exe 放置在同一个目录中的日志文件。 此项不受支持,因为文件夹受到保护。 建议写入其他位置,例如本地应用数据存储。 我们在 1809 及更高版本中添加了允许此动作的功能。

  • 应用程序使用当前工作目录。 在运行时,打包的桌面应用程序不会获得先前在桌面 .LNK 快捷方式中指定的相同工作目录。 如果具有正确的目录对应用程序正常运行很重要,需要在运行时更改 CWD。

  • 应用程序从 Windows 并行文件夹安装和加载程序集。 例如,应用程序使用 C 运行时库 VC8 或 VC9,并且正在从 Windows 并行文件夹动态链接它们,这意味着代码正在使用来自共享文件夹(例如 C:\Windows\WinSxS)的常见 DLL 文件。 此操作不受支持。 需要通过将可再发生库文件直接链接到代码中来实现静态链接。

其他注意事项

  • 在正确的体系结构上重新打包安装程序。 如果安装程序打算安装在 x86 计算机上。 请务必在 x86 计算机上重新打包安装程序。 这适用于面向 x64 计算机的安装程序。

    注意

    如果应用需要写入安装目录或使用当前工作目录,则你还可以考虑将一个使用包支持框架的运行时修复程序添加到包中。 有关详细信息,请参阅本文