安装Windows Installer 4.5时,以Windows Installer 3.1为目标的安装程序包失败

时间:2022-03-28 07:12:00

We have an installer package authored with InstallShield 2009, targeting Windows Installer 3.1.

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

Recently, we started to notice that sometime, when installing on some Windows 2003 R2 x86 based hosts, the installation fails, and the installer log report a 1603 error code (which by the way, doesn't really help much, as it means ERROR_INSTALL_FAILURE, that is a very generic "A fatal error occurred during installation.").

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

As the installation is still working on some other hosts on that very same platform, after further investigation we found out it was happening on hosts where Sql Server 2008 R2 was already installed, which leaded us to find out the issue is really with Windows Installer 4.5.

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

Whenever Windows Installer 4.5 was installed by an installer package, our installer package is failing with 1603. So far, we found as a work around: if we manually uninstall Windows Installer 4.5 (running something like "C:\WINDOWS\$NtUninstallKB942288-v4$\spuninst\spuninst.exe"), we can then run our installer package successfully, but this has various drawbacks:

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

  1. the user who uninstall Windows Installer 4.5 is prompted with a dialog listing all the various software products installed using that, and effectively the link between those products and Windows Installer 4.5 is lost after uninstalling that, even if we reinstall it after successfully installing our application;
  2. 卸载Windows Installer 4.5的用户会出现一个对话框,其中列出了使用该软件安装的所有各种软件产品,卸载后,即使我们在成功安装应用程序后重新安装,这些产品与Windows Installer 4.5之间的链接也会丢失。
  3. as Microsoft released various version of Windows Installer 4.5, the location of the utility to uninstall that is not strictly the one given above;
  4. 当Microsoft发布各种版本的Windows Installer 4.5时,卸载的实用程序的位置并不严格按照上面给出的那个;
  5. It is awkward to ask customers to perform such a work around.
  6. 要求客户执行这样的工作是很尴尬的。

I suppose upgrading the installer package to target Windows Installer 5 may solve the issue, but if possibile I would like to avoid it, and continuing to use InstallShield 2009 to author this specific package.

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

I have scoured the Microsoft and Flexera Knowledge Bases (and I am continuing my investigation), with no avail so far.

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

Does anyone knows if Microsoft or Flexera, or any other third party, have published an hotfix, or some further info, about this issue?

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

Some info about the 1603 error code failure

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

We got verbose logs for this issue, from at least 3 different servers, and we have investigated that in depth, to not avail so far. Most actions return 1, some 0 (specifically IsolateComponents, MigrateFeatureStates, IsolateComponents, SetODBCFolders, MigrateFeatureStates, UnpublishComponents, UnregisterComPlus, UnregisterTypeLibraries, UnregisterMIMEInfo, RemoveShortcuts, RemoveFiles, CreateShortcuts, RegisterMIMEInfo, InstallODBC, RegisterTypeLibraries, RegisterComPlus and PublishComponents, but nothing has yet came out investigating those), the installer package seems actually to be almost able to install (perform all the sequence down to "INSTALL. Return value 1.", it even prints "Product: [Our Product] -- Installation operation completed successfully."), only then it starts to rollback everything, and as there are various errors on the rollback, I think some of those will cause the 1603 (probably some 1607 returned by MsiProvideAssembly on ISChainPackagesCleanup), but the point is that it shouldn't rollback, and with Windows Installer 3.1 (or 5.x for that matter) it doesn't, it does rollback only when there is Windows Installer 4.5 installed on a Windows 2003 x86 environment.

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

1 个解决方案

#1


2  

Most likely your package has an action which fails, either custom or standard. Try creating a verbose log of the installation which fails (it's very important to be verbose). After the failure, open the log with a text editor and search for the error code (1603) to see what triggers it.

很可能你的包有一个失败的动作,无论是自定义的还是标准的。尝试创建一个失败的安装详细日志(冗长非常重要)。失败后,使用文本编辑器打开日志并搜索错误代码(1603)以查看触发它的内容。

As a side note, don't try to blame Windows Installer. There's nothing wrong with version 4.5 and there are no hotfixes or something like that. The problem is in your package. It does something which is either incorrect or unsupported.

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

EDIT:

编辑:

From your post update it looks like a failed chained installation. No errors are shown in the log because the error occurs in a different installer process.

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

If you are not using chained packages, try looking for errors in the Event Viewer.

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

If you are using chained packages, you can try enabling the Windows Installer logging policy and check for logs generated by them. Most likely one of the packages is encountering a problem.

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

#1


2  

Most likely your package has an action which fails, either custom or standard. Try creating a verbose log of the installation which fails (it's very important to be verbose). After the failure, open the log with a text editor and search for the error code (1603) to see what triggers it.

很可能你的包有一个失败的动作,无论是自定义的还是标准的。尝试创建一个失败的安装详细日志(冗长非常重要)。失败后,使用文本编辑器打开日志并搜索错误代码(1603)以查看触发它的内容。

As a side note, don't try to blame Windows Installer. There's nothing wrong with version 4.5 and there are no hotfixes or something like that. The problem is in your package. It does something which is either incorrect or unsupported.

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

EDIT:

编辑:

From your post update it looks like a failed chained installation. No errors are shown in the log because the error occurs in a different installer process.

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

If you are not using chained packages, try looking for errors in the Event Viewer.

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

If you are using chained packages, you can try enabling the Windows Installer logging policy and check for logs generated by them. Most likely one of the packages is encountering a problem.

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