了解安装程序

本文列出了在将现有的安装程序转换为 .MSIX 之前需要了解的知识。 你可能无需执行任何操作即可为打包过程准备好应用程序,但如果以下任何项适用于你的应用程序,则需要在打包之前解决。

  • 应用程序具有服务。 我们支持 使用服务转换应用程序,但务必要记住转换服务的 限制 。 转换后,需要管理员提升才能安装包含服务的 .MSIX。 你可以使用 .MSIX 打包工具版本1.2019.1220.0 中的服务来转换应用程序,并且可以在 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 计算机的安装程序。

    注意

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