在windows 2012 r2服务器上,InstallShield的Abort和exit命令不起作用



我已有产品,使用installshield 2011生成msi。

目前我们计划支持windows server 2012 R2,但是现有的代码不能工作。

我们有一个场景,当我们检查一些依赖项丢失时,我们中止或退出,但这在windows 2012 R2上不起作用。

是否有其他方法来处理这个问题,我在一些论坛上检查过,它说返回"ERROR_INSTALL_FAILURE",但我不能从customAction的大部分部分返回。

如何在同一点中止安装。

谢谢,

我确实相信有一个问题,abort没有导致ERROR_INSTALL_FAILURE从InstallScript自定义操作中返回,这是固定的;你可以通过查看你正在使用的InstallShield版本的发行说明来验证这一点。如果可以选择升级,这可能是最简单的方法,因为InstallShield 2011不正式支持Windows Server 2012R2。(而且它还能帮助我的雇主继续付给我薪水。)

如果你想用你所拥有的修复行为,听起来你在说问题是你有一个深度嵌套的函数,不能轻易地将ERROR_INSTALL_FAILURE返回到自定义动作入口点。干扰最小的更改可能是使用异常和异常处理。您可以将try/catch/endcatch放在您的入口点函数(或多个函数)中,并在之前使用abort的地方使用Err.Raise抛出异常。与链接的示例不同,Err.Raisetry/catch/endcatch将被有意地放在不同的功能中。

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

最新更新