【问题标题】:Installer package targeting Windows Installer 3.1 fails when Windows Installer 4.5 has been installed安装 Windows Installer 4.5 后,面向 Windows Installer 3.1 的安装程序包失败
【发布时间】:2012-06-20 06:25:09
【问题描述】:

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

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

由于安装仍在同一平台上的其他一些主机上运行,​​经过进一步调查,我们发现它发生在已经安装 Sql Server 2008 R2 的主机上,这使我们发现问题确实出在Windows 安装程序 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,但尚未对这些进行任何调查),安装程序包实际上似乎几乎能够安装(执行所有序列到“INSTALL.Return value 1.”,它甚至打印“Product: [Our Product] -- 安装操作成功完成。"),然后它才开始回滚所有内容,并且由于回滚时出现各种错误,我认为其中一些会导致1603(可能MsiProvideAssembly 在 ISChainPackagesCleanup 上返回了一些 1607),但关键是它不应该回滚,并且对于 Windows Installer 3.1(或 5.x)它不会,它确实仅当在 Windows 2003 x86 环境中安装了 Windows Installer 4.5 时才回滚。

【问题讨论】:

  • 我还在 Flexera 论坛上为 InstallShield 2009 开了一个帖子:community.flexerasoftware.com/showthread.php?p=479012
  • 我还在InstallSite论坛上开了一个帖子:forum.installsite.net/index.php?showtopic=21075
  • 更准确地说,我们发现我们的安装程序包适用于 Microsoft Windows Server 2003 R2 x86 和 Windows Installer 3.1.4000.3959(它可能也适用于 3.1.4000.2435 和 3.1.4000.1830,它曾经,但我最近没有测试过这些),但如果已安装 Windows Installer 4.5.6001.22159(即来自 Sql Server 2008 R2 的安装程序,或其他针对 4.5 的软件包),它就不起作用。
  • 在下层系统上没有安装 Windows Installer 5 的可再发行组件;它仅作为 Windows 7 / Windows Server 2008 R2 或更高版本的一部分提供。所以我绝对建议你弄清楚真正的问题是什么。正如您所注意到的,1603 是当时发生的一些错误的总括摘要。
  • 不涉及 WI5 嗨,Michael,感谢您的评论,我编辑了问题,提供了有关 1603 的更多信息,我想指出 Windows Installer 5 没有参与,到目前为止,我们仅在 2003 R2 x86 上使用 4.5 复制了这一点。

标签: installation windows-installer installshield installshield-2009


【解决方案1】:

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

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

编辑:

从您发布的更新来看,链式安装似乎失败了。日志中未显示错误,因为错误发生在不同的安装程序进程中。

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

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

【讨论】:

  • 详细日志 嗨 Cosmin,感谢您的回答,是的,我们正在获取详细日志,我们对此进行了深入调查,但到目前为止还没有用。我将就这个问题添加更多细节。我不确定我是在责怪 WI,但我可以确认它适用于 WI 3.1 或 WI 5,它不适用于 WI 4.5,相同的软件包,我们已经在数十台服务器上对其进行了测试,肯定有所不同。我们手动删除 4.5 后,就可以使用 3.1 安装了!
  • 链式包 嗨 Cosmin,我在另一台显示器上阅读了您的编辑,实际上我正在查看 InstallShield 上的 Releases 视图,瞥了一眼该包的单个链式 .msi 包,想知道这是否可能相关(我到达那里想知道为什么尚未使用相同安装程序的 64 位版本报告该问题,该安装程序不使用链式包)。我将尝试启用日志记录的另一个安装,以查看它是否捕获了链接包上的任何内容(顺便说一下,它是一个 Crystal Reports 运行时)。
猜你喜欢
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多