安装MSI时可能导致错误2902的原因是什么?

时间:2009-10-30 01:03:59

标签: wix windows-installer

我们的一个MSI已经开始失败,错误2902.它将完成大部分安装,弹出错误框,然后退出安装。自上一个工作版本以来,我们没有对安装程序进行任何重大更改。

启用日志记录运行msiexec会提供更多信息:

Action 17:21:22: RegisterProduct. Registering product
Error 2902:  Operation ixoFileCopy called out of sequence

这紧接在“WriteRegistryValues”部分之后。有谁知道是什么原因导致调用ixoFileCopy?我猜测解决方案将涉及更改“RegisterProduct”步骤的顺序,但我不确定它应该继续进行。

感谢您的帮助!

4 个答案:

答案 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的错,虽然我认为它应该在构建期间引发错误。