用InstallShield打包不同安装类型的安装包
2014-03-20 16:39
162 查看
需求:要将两个软件打包到一个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;
最后编译就可执行安装了,安装后在添加/删除列表里会分别显示两个软件的名称,可对两个软件分别执行卸载。
注:所用版本installshield2010
明确要求后首先想到的是以前做的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;
最后编译就可执行安装了,安装后在添加/删除列表里会分别显示两个软件的名称,可对两个软件分别执行卸载。
注:所用版本installshield2010
相关文章推荐
- InstallShield打包时Basic MSI类型安装包升级之初探讨
- 使用InstallShield12制作的WEB类型的部署安装包在Windows7安装时出现了错误号为1603的错误
- SOLUTION:InstallShield打包时Basic MSI类型安装包升级之初探讨
- 驱动安装包制作:使用SetupCopyOEMInf函数 用installshield 即可完成安装
- Installshield工程类型 & Installshield安装程序的silent installation
- 制作Linux下程序安装包——使用脚本打包bin、run等安装包
- Installshield 打包安装程序时写入注册表,及运行bat文件
- Installshield 打包安装包心得
- Qt应用程序打包问题之错误: 发现不同 CPU 类型的模块。
- VC打包 InstallShield 12 制作安装包
- 用InstallShield 进行 ASP 软件的打包和自动安装
- java不同安装包的安装方法(rpm,bin,tar)
- 用InstallShield 进行ASP 软件的打包和自动安装
- .net framework 打包进 msi安装包,使得安装时自动安装
- installshield打包成只有setup.exe的安装包时获取setup.exe所在路径的方法
- Installshield 打包安装程序时写入注册表,及运行bat文件
- 如何将 .net framework 打包进 msi安装包,使得安装时自动安装
- 打包静默安装参数(nsis,msi,InstallShield,InnoSetup)[转]
- Installshield 打包安装包心得
- 用InstallShield 进行 ASP 软件的打包和自动安装