1

是否有人在集成 API 下载 .msi 文件和 WiX 提供的合并模块时遇到任何问题?或任何其他 MSI/安装工具?

当我添加各种功能时,它将接受 Xerces 2.5.0.msm 但包括任何其他类型的合并模块将失败并出现以下错误

30>light.exe(0,0): error LGHT0204: ICE27: 'SelfUnregModules' Action in InstallExecuteSequence table in wrong place. Current: Selection, Correct: Execution
30>light.exe(0,0): error LGHT0204: ICE27: Action: 'SelfUnregModules' in InstallExecuteSequence table must come after the 'InstallValidate' action.
30>light.exe(0,0): error LGHT0204: ICE27: Action: 'SelfUnregModules' in InstallExecuteSequence table must come after the 'InstallInitialize' action.
30>light.exe(0,0): error LGHT0204: ICE27: Action: 'InstallFiles' in InstallExecuteSequence table must come before the 'SelfRegModules' action. Current seq#: 4000. Dependent seq#: 2850.

目录结构如下所示:

<Directory Id="INSTALLDIR" Name="Datacenter">
            <Merge SourceFile="$(var.QuickbooksMergeModules)\Xerces2.5.0.msm" Language="$(var.LCID)" DiskId="1" Id="Xerces2.5.0.msm"></Merge>
            <Merge SourceFile="$(var.QuickbooksMergeModules)\QBFC13_0.msm" Language="$(var.LCID)" DiskId="1" Id="QBFC13_0.msm"></Merge>

无论如何,都无法让它发挥作用。我在网上找到了一些关于包括 VC++ 7.0 运行时的信息(我假设我以后可以使用?)但还没有尝试过。

想法?

4

1 回答 1

1

我会仔细阅读MSI Best Practice #43和我的一些反驳论点In Defense of Merge Modules

通常最好不要再使用第三方合并模块。通过引导程序/链接器引入的独立 MSI 更好。如果需要,使用合并模块构建一个独立的 MSI 并将其放入您的链接器。关键是,不要让可能通过合并模块引入的问题污染您的 MSI。

他们有名为 SelfReg 的自定义操作这一事实真的让我怀疑这些模块的质量。自我注册(任何形式)通常是一件非常糟糕的事情。

于 2013-12-12T17:12:55.350 回答