InstallShield的中止和退出命令无法在Windows 2012 r2服务器上运行

时间:2015-10-20 18:49:25

标签: windows-installer installshield

我有现有的产品,它使用installshield 2011来生成msi。

目前我们计划支持Windows Server 2012 R2,但现有代码无效。

我们有一个场景,我们检查是否有一些依赖项丢失,我们中止或退出,但这不适用于Windows 2012 R2。

有没有其他方法来处理这个问题,我已经在一些论坛中检查过它返回“ERROR_INSTALL_FAILURE”,但是我无法从customAction的大部分内容返回。

如何在同一时间中止安装。

谢谢,

1 个答案:

答案 0 :(得分:1)

我相信abort存在问题,导致从一路上修复的InstallScript自定义操作返回ERROR_INSTALL_FAILURE;您可以通过在您使用的版本之后查看InstallShield版本的发行说明来验证这一点。如果升级是一个选项,那可能是最简单的,因为InstallShield 2011不正式支持Windows Server 2012R2。 (这有助于我的雇主继续向我付款。)

如果你想用你拥有的东西修复行为,听起来你说问题是你有一个深层嵌套的函数,它不能轻易地将ERROR_INSTALL_FAILURE返回到自定义操作入口点。最少侵入性的变化可能是使用例外和exception handling。您可以将try / catch / endcatch放入入口点函数(或函数)中,并使用Err.Raise抛出先前使用{{1}的异常}。与链接示例不同,abortErr.Raise / try / catch将故意处于不同的功能中。

请注意,如果从其他函数调用使用endcatch更改为使用abort的函数,则观察到的行为可能与这些函数不同,除非它们类似地将异常转换为其首选行为。 / p>