我们的一个MSI已经开始失败,错误2902.它将完成大部分安装,弹出错误框,然后退出安装。自上一个工作版本以来,我们没有对安装程序进行任何重大更改。
启用日志记录运行msiexec会提供更多信息:
Action 17:21:22: RegisterProduct. Registering product
Error 2902: Operation ixoFileCopy called out of sequence
这紧接在“WriteRegistryValues”部分之后。有谁知道是什么原因导致调用ixoFileCopy?我猜测解决方案将涉及更改“RegisterProduct”步骤的顺序,但我不确定它应该继续进行。
感谢您的帮助!
答案 0 :(得分:2)
事实证明,在我们的情况下,这是因为数据文件变得太大而MSI无法在没有分组驾驶室的情况下处理。 This thread提到了这个问题和一种可能的解决方法。
答案 1 :(得分:1)
我有同样的错误。
显然,文件丢失或损坏(网络错误?)。重新复制整个文件夹后问题已解决。
答案 2 :(得分:1)
当组件提供空白guid时,我也看到了这个错误。
e.g。
<Component Id="cmp_MyFailingComponent" Guid="">
<File Id="f_myFile"
Assembly=".net"
Source="C:\Program Files\MyFile.dll"
KeyPath="yes"/>
</Component>
答案 3 :(得分:0)
当某些数据库列字段长于列宽时,我发现此错误。
我已经将MSI转换为InstallShield项目,做了一些补充,并构建了一个新的MSI - 它构建没有任何错误。然后安装失败,错误2902.
失败的组件的组件名称长于允许的72个字符。 (请参阅组件表)尽管有长名称,但原始MSI工作正常,但我猜他们导致InstallShield以某种方式不正确地构建MSI。不是InstallShield的错,虽然我认为它应该在构建期间引发错误。