InstallShield调用MSI的方法

转载:http://www.cnblogs.com/installshield/archive/2010/12/23/1914595.html  作者: Kevin Wan 

下面是一段Sample代码,我们假设MSI文件被放到了Support Files中,并且通过静默安装方式调用第三方MSI包,msiexec的相关参数可以在运行中输入msiexec查看。

function CallThirdMSIPackage() 
STRING svMsiexec, svParam, svMsiPackage;
begin
svMsiexec =WINSYSDIR ^"msiexec.exe"; 
svMsiPackage =SUPPORTDIR ^"***.msi"; 
svParam ="/i \"" + svMsiPackage + "\" /qn";
LaunchAppAndWait(svMsiexec, svParam, WAIT);

end;


=====================================================================================================

前面的方法只适用我写的项目 

第二种方法:

function OnEnd()   

     STRING szParam,svParam; 

begin       

      szParam="/i "+SUPPORTDIR^"CRRedist2005_x86.msi"+"";         

        LaunchAppAndWait("msiexec.exe",szParam,WAIT);        

       svParam="/i "+SUPPORTDIR^"CRRedist2005_x86_chs.msi"+"";         

        LaunchAppAndWait("msiexec.exe",svParam,WAIT);                     

      LaunchAppAndWait(SUPPORTDIR^"LandaV9ClientSetup.exe","",WAIT); 

end;

=================================================================================================

 svParam="/i "+SUPPORTDIR^"CRRedist2005_x86_chs.msi"+"/qb"  ;

 "/qb"代表静默安装。    


SOLUTION:MSI安装包嵌套调用解决方案

2010-11-25 16:59 by Kevin.Wan, 3305 阅读, 1 评论, 收藏编辑

首先要感谢网友爱新觉罗.奕,是他首先将此方案发布出来,详细见AppInstall网站中《单MSI引导多MSI安装和卸载》一章,http://www.appinstall.cn/viewthread.php?tid=840&extra=page%3D1

有关安装包嵌套调用,之前也琢磨过很多中办法,IntallScript,InstallScript MSI,MSI各种类型互相嵌套,但惟独发现MSI包无法嵌套,原因很简单,Windows Installer只接受单实例安装。

解决方案:

1. 首先创建主Basic MSI工程,设计组织你的安装程序。

2. 【Installation Designer】 -> 【Media】 ->  【Releases】视图, 选中Chained .msi Packages,点击鼠标右键选择New Chained Package Ins

3. 在Installation(run-time path)添加MSI包,出现提示时选择Yes(此情况适合压缩的安装包)

4. Product code保留默认

5. UI Level建议选择No UI(/qn),静默安装

6. Install condition就是默认的Not Installed

7. Install properties就保留默认空,其他如爱新觉罗.奕所讲的“此处填安装msi的参数,例如ADDLOCAL=ALL COMPANYNAME=MS”

8. Removal condition输入:Not Installed,如果保留默认的REMOVE="ALL",卸载时在系统的“添加/删除”里子MSI包没被清空,其实已经卸载了

9. Remove properties默认为空

10. Release flags默认为空

11. Streamed files中就是默认你的子MSI包

12. Delete streamed files after installation保留默认的勾选

13. 之后重新Build安装包并安装,你会在系统的“添加/删除”中看到主MSI程序和子MSI程序都被安装包目标机上

补充:

1. 必须是通过Windows Installer 4.5以上版本(可以通过Redistributables添加Windows Installer 4.5,目前Windows XP系统的Windows Installer多为3.1)

2. 步骤7中如果设置了 ARPSYSTEMCOMPONENT=1 可以将子MSI程序隐藏(不在系统的“添加/删除”里显示)

3. 如果非压缩的安装包,可以在步骤3中选择No,之后将子MSI添加到Support Files/Advanced Files/Disk 1下,调用的根路径是[SourceDir],之后按照相应文件结构调用 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值