在安装包制作过程中,安装包中增加一个或多个其他的第三方安装包是很常见的,尤其考虑到方便用户一次点击,全程安装,很多安装包做成一个大而全的综合包。
这样必然涉及安装包嵌套的问题,今天就以InstallShield下InstallScript,InstallScript MSI和Basic MSI三种工程类型为例,说明哪些工程类型的安装包可以嵌套调用。
 
说明
    1. 下面测试结果中,InstallScript和InstallScript MSI工程中在事件响应函数OnBegin里调用第三方安装包,Basic MSI调用第三方安装包位置在Sequence的InstallServices之后。 
    2. 测试环境InstallShield 2010 

InstallScript: 
InstallScript嵌套InstallScript -> OK
InstallScript嵌套InstallScript MSI -> OK 
InstallScript嵌套Basic MSI -> OK  
 
InstallScript MSI: 
InstallScript MSI嵌套InstallScript MSI -> OK
InstallScript MSI嵌套InstallScript -> OK 
InstallScript MSI嵌套Basic MSI -> OK  
 
Basic MSI: 
Basic MSI嵌套Basic MSII -> NG
Basic MSI嵌套InstallScript -> OK 
Basic MSI嵌套InstallScript MSI -> OK  
 
目前测试只有MSI包无法嵌套,原因是MSI都是通过Windows Installer服务安装,两个安装包无法运行在同一个进程中运行(等有了解决的方法再发布出来)。 
正常会有如下提示“Error 1500 Another installation is in progress. You must complete that installation before continuing this one.” 
 
 
转自Kevin Wan博客,更多Installshield打包技术交流问题可查看Appinstall论坛(www.appinstll.cn)