0

我们有一个适用于本机 Windows 的 VC++ 2012 应用程序(经典胖应用程序)我们还有一个基于 NSIS 的安装程序。

我想将 VC110_CRT 合并模块添加到安装程序,但合并模块无法安装在 Windows XP 上。错误消息是。

Windows Installer 服务无法安装此安装包。您必须安装包含较新版本的 Windows Installer 服务的 Windows 服务包。

是的,它是完全更新的 Windows XP(SP 3 + 所有更新)。据我了解,我们至少需要 Windows Vista 来安装更新。

我的问题:

  • 有没有办法转换 Microsoft_VC110_CRT_x86.msm 模块,所以它可以在 Windows xp 下使用

我知道我可以使用 vs_2012_redist,但它有 ~6,5 MB,而不是合并模块大小的 ~0,8。我只需要 CRT,因为该应用程序使用 QT 而没有 MFC/ATL/....

4

1 回答 1

-1

这是不正确的错误消息。MSIEXEC 正在查看 MSM 的 SummaryInformationStream 中的架构版本,发现它比 Windows 上的 MSI 版本更新,并为您提供此错误消息。

事实上,合并模块永远无法安装,因为它们没有产品或功能的概念。它们只是组件和相关安装元数据的封装集合。合并模块类似于 C/C++ 中的 .LIB 文件,并且在构建时静态链接(合并)到 MSI。

NSIS 不是 Windows Installer 技术,因此它不能使用合并模块。相反,您应该使用 Microsoft 提供的可发行组件并使用正确的命令行启动 EXE。

您唯一的其他选择是私下部署所需的 DLL(在您的应用程序目录中),将其静态链接到您的 EXE 中或转储 NSIS 并创建适当的 MSI。

请注意您选择的安全/修补影响。

于 2013-09-26T13:20:00.780 回答