【发布时间】: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"),然后我们可以成功运行我们的安装包,但这有很多缺点:
- 卸载 Windows Installer 4.5 的用户会收到一个对话框,其中列出了使用该软件安装的所有各种软件产品,并且这些产品与 Windows Installer 4.5 之间的链接在卸载后实际上会丢失,即使我们在成功安装后重新安装它也是如此我们的申请;
- 随着 Microsoft 发布各种版本的 Windows Installer 4.5,该实用程序的卸载位置并非严格意义上的上述位置;
- 要求客户执行这样的工作很尴尬。
我想将安装程序包升级到目标 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