可以在主安装程序下运行其他的安装程序。在选择的每个子安装程序都运行完毕后,主安装程序才会结束运行。有两种方法可以实
现这一功能:
1.调用Dolnstall
启动由InstallShield生成的安装程序的较好的办法是如下调用Do Install函数:
(1)为要启动的子安装程序建立一个完整的安装工程;所有由InstallShield生成的文件
对子安装程序的正常运行都是必需的。
(2)在已启动的主安装工程中,把所有为子安装程序生成的文件放在Setup Files面板
下适当的surportfiles文件夹中。
提示:给子安装程序的setup.inx一个区别于setup.inx的文件名。
(3)在父安装脚本调用DoInstall函数。
例如:
DoInstall (SUPPORTDIR^"child.inx", "", WAIT);
提示:要调用DoInstall运行安装程序,必须保证主安装程序与子安装程序由相同版本的Installshield生成,否 则会调用失败。
2.调用LaunchAppAndWait
还可以通过调用LaunchApp或LaunchAppAndWait函数运 行一个完整的安装程序。例如,
如果把子安装程序的文件放在了Setup Files面板下,就必须如下调用LaunchAppAndWait函数:
LaunchAppAndWait(SUPPORT DIR^"testsetup.exe","",WAIT);
如果子安装程序的文件放在了CD-ROM下.就必须作如下调用:
LaunchAppAndWait(SRCDISK ^"YouAppFolder\\Setup.exe","",WAIT);
此外,也可以将子安装程序的文件链接到你的文件组中,将文件安装到目标系统上 ,再
从目标位置运行安装程序。当然,这会把安装文件留在目标系统上直至主安装程序被卸载。
LaunchAppAndWait(TARGETD IR^"YouAppFolder\\Setup.exe","",WAIT);
提示:LaunchApp(TARGETDIR^" YouAppFolder\\Setup.exe","");相当于LaunchAppAndWait(TARGETDIR^" YouAppFolder\\Setup.exe","",NOWAIT);
附:调用MSI实例
//用prototype关键字声明函数
prototype RunMsi();
function RunMsi()
string szCommand,szCmdLine;
begin
szCommand = WINSYSDIR^"msiexec.exe";
LongPathToShortPath(szCommand);
szCmdLine =TARGETDIR^"msxmlchs.msi";
LongPathToShortPath(szCmdLine);
SdShowMsg("正在安装msxml,请稍候...",TRUE);
Delay(5);
if (LaunchAppAndWait( szCommand ,"/i"+szCmdLine,WAIT) < 0) then
MessageBox("数据文件出现错误",WA RNING);
endif;