用InstallShield打包多个需要分别安装的软件

  最近做了个任务是要将两个软件打包到一个InstallShield安装包中,但这两个软件又要分别安装。

        明确要求后首先想到的是以前做的InstallShield安装包都只能运行一次安装,如果软件已经安装,再次运行安装包时就会卸载已安装的软件,这样肯定不行,必须得让其可以多次运行安装而不用卸载才行,通过查找和试验发现选择Project->Settings...->Maintenance下的Multi-Instance即可实现。

        第二步是如何简便的将两个软件放到一个包中且要方便选择安装,我实现的方法是Setup Design下创建两个Feature,命名为软件1,软件2(实际编写中根据自己软件名进行命名),然后在两个Feature下分别加入两个软件所有需要安装的文件。

        第三步是在InstallScript中编写选择安装的代码,在OnFirstUIBefore函数的适当位置加入AskOptions对话框,如:

nResult = AskOptions ( EXCLUSIVE , "请选择要安装的软件版本" , "软件1" , bvCheck1 , "软件2" , bvCheck2 );

然后根据选择返回的值设置选择的Feature,如:

 if((bvCheck1 = 1) && (bvCheck2 = 0)) then//安装软件1

           FeatureSelectItem (MEDIA, "软件1", TRUE);
           FeatureSelectItem (MEDIA, "软件2", FALSE);
 else //安装软件2

            FeatureSelectItem (MEDIA, "软件1", FALSE);
            FeatureSelectItem (MEDIA, "软件2", TRUE);
 endif;

        第四步根据选择设置软件名,安装过程中和安装后在添加/删除列表里面就会显示你安装的软件的名称,如:
        IFX_PRODUCT_DISPLAY_NAME = "软件1" ;
        IFX_PRODUCT_NAME =  "软件1" ;
        IFX_SETUP_TITLE = IFX_PRODUCT_NAME;

 

       最后编译就可执行安装了,安装后在添加/删除列表里会分别显示两个软件的名称,可对两个软件分别执行卸载。

 

未解决的问题:现在的情况是每安装一次,添加/删除列表中就会出现一个名称,而我是想如果其中的一个软件已经安装过一次,下次再选择安装该软件时,就直接覆盖安装即可,添加/删除列表里不再出现第二个相同的软件名称。如果有哪位朋友知道的可交流一下,谢谢!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值