2

我们有一个使用 InstallShield 2009 编写的安装程序包,面向 Windows Installer 3.1。

最近,我们开始注意到,在某些基于 Windows 2003 R2 x86 的主机上安装时,安装失败,安装程序日志报告 1603 错误代码(顺便说一句,这并没有太大帮助,因为它意味着ERROR_INSTALL_FAILURE ,那是一个很笼统的“安装过程中发生了致命错误。 ”)。

由于安装仍在同一平台上的其他一些主机上运行,​​经过进一步调查,我们发现它发生在已经安装 Sql Server 2008 R2 的主机上,这使我们发现问题确实出在 Windows Installer 4.5 .

每当安装程序包安装 Windows Installer 4.5 时,我们的安装程序包都会失败并显示 1603。到目前为止,我们找到了一种解决方法:如果我们手动卸载 Windows Installer 4.5(运行类似“ C:\WINDOWS\$NtUninstallKB942288-v4 $\spuninst\spuninst.exe "),然后我们可以成功运行我们的安装程序包,但这有各种缺点:

  1. 卸载 Windows Installer 4.5 的用户会收到一个对话框,其中列出了使用该软件安装的所有各种软件产品,并且这些产品与 Windows Installer 4.5 之间的链接在卸载后有效地丢失了,即使我们在成功安装我们的应用程序后重新安装它;
  2. 由于 Microsoft 发布了各种版本的 Windows Installer 4.5,因此要卸载的实用程序的位置并非严格意义上的上述位置;
  3. 要求客户执行这样的工作是很尴尬的。

我想将安装程序包升级到目标 Windows Installer 5 可能会解决问题,但如果可能的话,我想避免它,并继续使用 InstallShield 2009 来创作这个特定的包。

我已经搜索了 Microsoft 和 Flexera 知识库(并且我正在继续我的调查),但到目前为止无济于事。

有谁知道 Microsoft 或 Flexera 或任何其他第三方是否已发布有关此问题的修补程序或更多信息?

关于 1603 错误代码失败的一些信息

我们从至少 3 台不同的服务器上获得了有关此问题的详细日志,并且我们对此进行了深入调查,但到目前为止还没有用。大多数操作返回 1,有些返回 0(特别是IsolateComponents、MigrateFeatureStates、IsolateComponents、SetODBCFolders、MigrateFeatureStates、UnpublishComponents、UnregisterComPlus、UnregisterTypeLibraries、UnregisterMIMEInfo、RemoveShortcuts、RemoveFiles、CreateShortcuts、RegisterMIMEInfo、InstallODBC、RegisterTypeLibraries、RegisterComPlus 和PublishComponents那些),安装程序包实际上似乎几乎可以安装(执行所有序列到“安装。返回值1。 ”,它甚至打印“产品:[我们的产品] - 安装操作成功完成。"),然后它才开始回滚所有内容,并且由于回滚时出现各种错误,我认为其中一些会导致 1603(可能是 MsiProvideAssembly 在 ISChainPackagesCleanup 上返回的一些 1607),但关键是它不应该回滚,而对于 Windows Installer 3.1(或 5.x)则不会,只有在 Windows 2003 x86 环境中安装了 Windows Installer 4.5 时才会回滚。

4

1 回答 1

2

您的包很可能有一个失败的操作,无论是自定义的还是标准的。尝试创建失败的安装的详细日志(详细说明非常重要)。失败后,用文本编辑器打开日志,搜索错误代码(1603),看看是什么触发的。

作为旁注,不要试图责怪 Windows Installer。4.5 版没有任何问题,也没有修补程序或类似的东西。问题出在您的包裹中。它会做一些不正确或不受支持的事情。

编辑:

从您发布的更新来看,它看起来像是一个失败的链式安装。日志中未显示错误,因为错误发生在不同的安装程序进程中。

如果您没有使用链式包,请尝试在事件查看器中查找错误。

如果您使用的是链式包,您可以尝试启用Windows Installer 日志记录策略并检查它们生成的日志。很可能其中一个包遇到了问题。

于 2012-06-18T10:33:27.143 回答