分享

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

 simplelam 2014-11-24

需求:要将两个软件打包到一个InstallShield安装包中,但这两个软件又要分别安装。

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

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

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

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

然后根据选择返回的值设置选择的Feature,在Dlg_SdFeatureTree中加入一下代码:

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

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

FeatureSetData (MEDIA, "软件1", COMPONENT_FIELD_VISIBLE, FALSE,  "随便写个什么");
 if((bvCheck2 = 1)) //
安装软件2

FeatureSelectItem (MEDIA, "软件1", FALSE);
            FeatureSelectItem (MEDIA, "
软件
2", TRUE);
FeatureSetData (MEDIA, "
软件2", COMPONENT_FIELD_VISIBLE, FALSE,  "随便什么
");
 endif;

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

 

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

注:所用版本installshield2008

另:本文是在别的文章基础上所修改,忘记了URl和作者名字,还望原作者见谅。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多