使用WIX 3.9及更高版本的自定义操作RegisterComPlus发生错误

时间:2018-10-15 13:03:18

标签: wix wix3.9

我们在Microsoft一直使用WIX工具集版本3.5.2519.0来为名为(系统中心服务管理器,也称为SCSM)的产品构建安装程序和补丁。 最近,我们需要更新到WIX Toolset 3.14.0.1703,因为此版本支持TLS1.2。

使用WIX Toolset 3.14.0.1703构建项目很好,但是在安装它时,出现以下错误:

然后我用所有WIX版本一一构建了产品,结果如下:

使用WIX ToolSet版本3.8和更低版本构建的产品,安装程序工作正常。
但是,使用ToolSet 3.9及更高版本,安装程序会因错误而失败:执行自定义操作RegisterComPlus时发生错误

日志摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++ 动作开始21:11:37:RegisterTypeLibraries。

MSI(s)(48:B0)[21:11:37:585]:正在执行的操作:SelfRegModules

操作已结束21:11:37:RegisterTypeLibraries。返回值0。

操作开始21:11:37:SelfRegModules。

MSI(s)(48:B0)[21:11:37:588]:正在执行操作:RegisterComPlus

操作已结束21:11:37:SelfRegModules。返回值1。

MSI(s)(48:B0)[21:11:37:589]:注意:1:2205 2:3:Complus

MSI(s)(48:B0)[21:11:37:589]:注意:1:2228 2:3:Complus 4:选择ComponentIdFileName,{{1 }}。ComponentDirectory_ExpTypeComponentActionComponent来自InstalledComplusComponentFileComplus = Component_ComponentComponent = KeyPathFile和( File = 1或Action = 2)

操作开始21:11:37:RegisterComPlus。

MSI(s)(48:B0)[21:11:37:591]:注意:1:2265 2:3:-2147287035

MSI(s)(48:B0)[21:11:37:591]:计算机策略值'DisableRollback'为0

MSI(s)(48:B0)[21:11:37:592]:注意:1:1402 2:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Installer \ Rollback \ Scripts 3:2

操作已结束21:11:37:RegisterComPlus。返回值0。

MSI(s)(48:B0)[21:11:37:592]:注意:1:1402 2:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Installer \ Rollback \ Scripts 3:2

MSI(s)(48:B0)[21:11:37:592]:此安装没有系统还原序列号。

MSI(s)(48:B0)[21:11:37:592]:解锁服务器

MSI(s)(48:B0)[21:11:37:602]:注意:1:2717 2:

_Set_Rollback_RemoveCodeGroup.1CA03A32_06E0_4726_8E63_FEA4484D9D6F 调试:错误2717:错误的操作条件或调用自定义操作'_Set_Rollback_RemoveCodeGroup.1CA03A32_06E0_4726_8E63_FEA4484D9D6F'的错误。

MSI(s)(48:74)[21:11:37:622]:无法取消线程720上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程1244上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程3392上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程928上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程680上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程4528上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程2156上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程2316上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程3980上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程5172上的I / O。错误:1168

MSI(s)(48:74)[21:11:37:622]:无法取消线程2724上的I / O。错误:1168

MSI(s)(48:B0)[21:11:37:622]:产品:Microsoft系统中心服务管理器-安装程序在安装此软件包时遇到意外错误。这可能表明此程序包有问题。错误代码为2717。自变量为:_Set_Rollback_RemoveCodeGroup.1CA03A32_06E0_4726_8E63_FEA4484D9D6F,,

安装程序在安装此软件包时遇到意外错误。这可能表明此程序包有问题。错误代码为2717。自变量为:_Set_Rollback_RemoveCodeGroup.1CA03A32_06E0_4726_8E63_FEA4484D9D6F, 行动于21:11:37结束:安装。返回值3。 ++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++

在WIX Toolset 3.9及更高版本中进行的任何更改是否破坏了我的安装程序? 有解决办法吗?

如果需要更多信息,请告知我。

谢谢, 拉杰夫

1 个答案:

答案 0 :(得分:0)

嗯,到目前为止没有建议。 这不是答案,但是一些建议可以帮助您自我帮助。对于部署问题,这种情况经常发生,因为很难用可用的有限信息调试或确定发生了什么。

在我看来,这可能不是COM +问题,因为看起来自定义操作已成功完成:

Action ended 21:11:37: RegisterComPlus. Return value 0.

让我们尝试一些长镜头。忍受我,因为很多事情会在那里。鱼雷全部传播以及所有:-)(为掩护而行):

  1. 比较痛苦 -:-):我可以使用the compare approaches found here比较正常工作的MSI和新的MSI 。我认为您不会找到很多,但是应该做得到。直接比较MSI,然后使用dark.exe反编译?后者没有逻辑意义,但是我想看看WiX链接MSI的方式是否有所改变。

  2. 消除复杂性 :我想取出复杂的零件,看看其余的安装程序是否可以安装。这可能是真正的时间浪费,但有时却可以说明问题。

    • 我将取出该合并模块,该模块添加了该自定义操作,并验证其余软件包是否按预期安装。有时,如果自定义操作之间存在较高的耦合(显然),这将无法正常工作。

    • 您还可以将某些自定义操作的条件设置为 0 。这将阻止自定义操作运行。如果存在条件,则可以添加 AND 0

  3. 禁用回滚吗? :另一个远景。禁用MSI回滚并尝试在干净的虚拟机上进行测试安装?只是为了查看问题是否在回滚自定义操作中。我将使用DISABLEROLLBACK property禁用回滚。注意,禁用回滚并不是解决方案! (必须找到其他人才能提及)。

  4. 自定义操作源访问 :如果您有权访问自定义操作源代码,我将尝试使用Visual Studio进行交互式调试,如下所述:{{ 3}}。您可以在调试模式下编译代码(因此,MSI中包含调试dll,请确保不会意外包含那些要公开发布的dll!),并显示自定义操作的消息框,然后附加Visual Studio调试器并逐步执行码。对于本机代码,请附加到msiexec.exe,对于托管代码,请附加到rundll32.exe