在InstallShield的各种工程类型中,Basic MSI工程Build出的安装包基于Windows Installer标准,所以默认就支持静默安装(至于如何静默安装,请自行补充相关知识)。而对于另外一种工程类型InstallScript,则过程稍复杂,需要先通过 “/r” 参数路径静默脚本*.iss文件,然后再通过“/s"静默参数完成静默调用。
InstallShield的帮助文档中关于InstallScript的静默执行的示例如下:
Setup.exe /s /f1"C:TempSetup.iss"
上述情况其实只满足一种情况下才能成功执行,及你的安装包不是压缩成一个*.exe的安装包。
如果是一个*.exe的安装包,并且要支持静默安装包,就必须将录制的*.iss静默脚本文件Insert到Release的Disk1下,然后重新Build一次安装包,重新获得的*.exe才支持"/s"参数。简单分析原因就是压缩的*.exe在运行安装过程中先进行了解压,将安装文件释放到系统临时目录下,之后运行安装,主*.exe在临时目录下读取*.iss失败,至于InstallShield为什么在这个解压过程中没有将我们显式指定的f1参数带入,不得而知了 :(
另外,对于InstallScript工程的安装包,在静默调用出现问题时,要善于通过Setup.log文件获取ResultCode,确定静默安装失败的具体原因。