为什么InstallShield无法找到文件?

时间:2011-10-24 14:32:45

标签: windows installer installshield

我有一个InstallShield(InstallScript)安装,使用IS2009创建,每晚自动构建,并已成功使用多年。几天前,安装开始失败;进度达到99%,然后出现错误对话框,声称安装特定文件时出错;具体的消息是“系统找不到指定的文件”。

  1. 可在WinXP和Win7上重现。

  2. 这不是由于安装程序的任何变化;这些文件已连续数周/数月未被触及

  3. 每次都是同一个文件,虽然它的名字附加了一些文字,并且扩展名为.rra;根据我的阅读,这是在将其移动到最终目的地之前提取到Windows临时文件夹的临时文件。

  4. 成功安装了同一文件夹和相同类型的其他文件。它也不是最后安装的文件;当错误被解除时,安装退出并且同一文件夹和其他地方的其他文件也都丢失了。

  5. 该文件是常规动态文件链接,是功能的一部分;它没有被InstallScript或其他任何可能引入外部问题的东西操纵。该文件与许多其他成功安装的文件之间的链接没有区别。

  6. 安装程序构建期间没有错误; IS似乎找到了文件就好了,我打开了内置的cab来验证文件是否在里面。

  7. 目标计算机上的.ilg日志文件或Windows事件日志中不会显示任何错误或相关信息。

  8. 我尝试删除IS项目和所有临时构建文件,然后从版本控制中检出新副本并从头开始重建,但问题仍然存在。

  9. 怎么会发生这种情况,以及我在追踪原因的其他方面?

1 个答案:

答案 0 :(得分:1)

事实证明,InstallShield扫描具有相同内容的文件,并且为了减少安装程序文件大小,仅包括其中一个文件。在安装时,主文件作为rra写入磁盘,然后复制以创建具有相同内容的任何其他文件。

在我们的案例中,我们最近添加了一个新文件,位于不同的位置并使用不同的名称,其内容与现有文件完全相同。我们删除包含原始文件的文件夹作为安装的一部分,假设在安装后期没有任何内容触及它。但是一旦引入了另一个文件,InstallShield就会在删除操作之前的安装早期开始将rra版本写入该文件夹。删除删除了rra,然后InstallShield在轮到它的时候无法找到它。

希望这可以帮助其他人,因为这个特定的InstallShield行为以及rra文件的使用一般似乎没有记录在任何地方。