我们在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:选择ComponentId
,FileName
,{{1 }}。Component
,Directory_
,ExpType
。Component
,Action
。Component
来自Installed
,Complus
,Component
在File
。Complus
= Component_
和Component
。Component
= KeyPath
。File
和( 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及更高版本中进行的任何更改是否破坏了我的安装程序? 有解决办法吗?
如果需要更多信息,请告知我。
谢谢, 拉杰夫
答案 0 :(得分:0)
嗯,到目前为止没有建议。 这不是答案,但是一些建议可以帮助您自我帮助。对于部署问题,这种情况经常发生,因为很难用可用的有限信息调试或确定发生了什么。
在我看来,这可能不是COM +问题,因为看起来自定义操作已成功完成:
Action ended 21:11:37: RegisterComPlus. Return value 0.
让我们尝试一些长镜头。忍受我,因为很多事情会在那里。鱼雷全部传播以及所有:-)(为掩护而行):
比较痛苦 -:-):我可以使用the compare approaches found here比较正常工作的MSI和新的MSI 。我认为您不会找到很多,但是应该做得到。直接比较MSI,然后使用dark.exe反编译?后者没有逻辑意义,但是我想看看WiX链接MSI的方式是否有所改变。
消除复杂性 :我想取出复杂的零件,看看其余的安装程序是否可以安装。这可能是真正的时间浪费,但有时却可以说明问题。
我将取出该合并模块,该模块添加了该自定义操作,并验证其余软件包是否按预期安装。有时,如果自定义操作之间存在较高的耦合(显然),这将无法正常工作。
您还可以将某些自定义操作的条件设置为 0
。这将阻止自定义操作运行。如果存在条件,则可以添加 AND 0
。
禁用回滚吗? :另一个远景。禁用MSI回滚并尝试在干净的虚拟机上进行测试安装?只是为了查看问题是否在回滚自定义操作中。我将使用DISABLEROLLBACK property禁用回滚。注意,禁用回滚并不是解决方案! (必须找到其他人才能提及)。
自定义操作源访问 :如果您有权访问自定义操作源代码,我将尝试使用Visual Studio进行交互式调试,如下所述:{{ 3}}。您可以在调试模式下编译代码(因此,MSI中包含调试dll,请确保不会意外包含那些要公开发布的dll!),并显示自定义操作的消息框,然后附加Visual Studio调试器并逐步执行码。对于本机代码,请附加到msiexec.exe
,对于托管代码,请附加到rundll32.exe
。