InstallShield安装包制作
来源:互联网 发布:复旦大学材料系 知乎 编辑:程序博客网 时间:2024/04/29 17:58
InStallShield支持修改Autoexec.bat, config.sys、注册表、加入产品 册 码,自动生成反安装程序等等, 满足安装编写所有开发者的需求, 涵盖所有平台, 操作系统, 及装置上提供三款功能强劲且使用简易的解决方案.可以说是最好的做安装程序的商业软件之一。因为功能的太过于强大,要写脚本,而文档较少与神马帮助文档,所以上手比较困难。此文档是基于2009版本编写。
官网地址:http://www.flexerasoftware.com/products/installshield.htm
下载地址(2009) http://www.rsdown.cn/downinfo/9401.html
下载地址(2012) http://www.flexerasoftware.com/asp/eval_is.asp?ver=ISWPRE190E
1协议许可证
以上完成的没有协议许可证.。虽然大多都不会看协议内容,当东西部可少。
Behavior and Logic | Support Files/Billboards中添加协议文件,至于协议文件的类型我也不太清楚,我试过txt可以,所有我就用txt。切换到 Behavior and Logic | IInstallScript 会有个默认的Setup.Rul文件.选择右边的Before Move Data 和OnBegin.不要看见默认选择这两个就不选,要看左边框Functions下是否有你选择的方法文件.
Disable(BACKBUTTON);
if(!MAINTENANCE)then
SdLicense2 ("协议许可证 ", "我接受协议许可证中的条款", "我不接受协议许可证中的", SUPPORTDIR ^ "securityManagerProtocol.txt", FALSE);
endif;
2第三方软件的使用
比如在协议许可证后我要安装个第三方软件,或者判断下是否安装过某软件。
怎么判断呢?每个软件安装后注册,所有通过注册表,进行判断。就以JDK为例。
Begin
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if (RegDBKeyExist ("SOFTWARE\\JavaSoft\\Java Development Kit\\1.6.0_04") < 0) then
LaunchAppAndWait(SRCDISK^"jdk\\jdk-6u4-windows-i586-p.exe","",LAAW_OPTION_WAIT); endif;
End
3删除用户名/公司名界面
一开始制作IntallShield工具有默认这个界面,但对我们来说用处不大,所有希望屏蔽
打开Before Move Data OnFirstUIBefore
Dlg_SdRegisterUser:就是编写的这个界面,因此屏蔽/替换 Dlg_SetupType:中 goto SdRegisterUser; 顺便屏蔽Dlg_SdRegisterUser:包括的内容(没有用何必浪费资源).
4是否创建桌面快捷键界面
OnFirstUIAfter begin end中代码
bOpt1 = FALSE;
bOpt2 = TRUE;
szMsg1 = SdLoadString(IFX_SDFINISH_MSG1);
szTitle="";
szMsg2="";
szOpt1="";
szOpt2="创建桌面快捷键";
SdFinishEx(szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bOpt1, bOpt2);
if(bOpt2=TRUE) then
szDocFile = TARGETDIR^"bin\\startup.bat";
LongPathToQuote(szDocFile, TRUE );
AddFolderIcon ( szProgramFolder, szItemName, szDocFile , szWorkingDir,
szIconPath, nIcon, szShortCutKey, nFlag );
endif;
5操作服务
就以InstallShield 编写Mysql服务为例进行说明.
ServiceAddService
ServiceStartService
ServiceStopService
ServiceRemoveService
5.1准备MySql,
必须包含my.ini 。因软件安装目录不确定,所有不用指定basedir和datadir
当这两个要指定,可能会想到相对位置,我也试过,但不成功,我也不知道为什么。
指定的方式有很多种,这里我使用通过bat 动态写入.
@echo off
set CURRENT_DIR=%cd%
echo %CURRENT_DIR%
set CURRENT_DIR=%CURRENT_DIR:\=/%
echo %CURRENT_DIR%
echo basedir=%CURRENT_DIR% >>my.ini
echo datadir=%CURRENT_DIR%/data >>my.ini
代码讲解:
<1> set CURRENT_DIR=%CURRENT_DIR:\=/% 是将%CURRENT_DIR%的值“\”代替
“/”。原因是开始我用的“\”,服务启动不成功,后来改成“/”才成功。
<2> echo basedir=%CURRENT_DIR% >>my.ini
echo datadir=%CURRENT_DIR%/data >>my.ini
将basedir和datadir写入my.ini文件。注意“>>”是写入; ">"是覆盖整个文件
5.2编写InstallShield脚本
LaunchApp(TARGETDIR^"db\\mysql-6\\set_dir.bat","");
szServiceName="MySQL";
szServiceDisplayName="MySQL";
szServiceDescription="";
szServicePathFile=TARGETDIR^"db\\mysql-6\\bin\\mysqld-nt.exe";
bStartService=0;
szStartServiceArgs="";
ServiceAddService(szServiceName,szServiceDisplayName,szServiceDescription, szServicePathFile, bStartService, szStartServiceArgs );
ServiceStartService(szServiceName,"")
通过ServiceAddService (....)添加服务
ServiceStartService(szServiceName,"")启动服务szServiceName服务名,第二个参数是启动方式表示自动启动。
6 删除服务
在OnMaintUIBefore()中if(!REMOVEONLY)then 写入
ServiceStopService(szServiceName) 停止服务。szServiceName为服务名.
ServiceRemoveService(....) 删除服务.
ServiceStartService(szServiceName,"")
7错误提示
7.1 “the Setup was created with an evaluation version of InstallShield"
评估版的就会有这个提示,要解决就要用完全版.
7.2 Error 4075:
File not found. An error occurred merging Module
MDAC27ENU.C9C35FC7_5AEE_4C1E_8BD2_80ED9FA87FFF:1033 for Feature "".
这个错误是由于InstallShield工具缺少MDAC27ENU.msm 文件.下载后将文件放 InstallShield安装目录的\Objects 文件夹下.
7.3 Error C8025
解决这个错误要注意几点:<1>声明标识符必须在引用之前 <2> 检查声明的标识符类型
<3>引用标识符的是否声明
7.4 桌面快捷键无效
问题有三:1 是否具有所需环境,并且环境配置正确.比如:JDK环境变量
2 快捷方式的目标是否正确.
3 快捷方式的起始位置是否正确.起始位置是目标的上一级.
8.1 准备安装界面
Installscript MSI Project 准备安装界面是InstallShield自发性视窗,无法隐藏.在 Installscript 中可以隐藏,当准备毫无反应.,就像死机一样.Installscript MSI Project的 Installation Designer ->Media->Releases ->Setup.exe Delay MSI Engine Reboot 设置为true,编程小窗口.Ico图片将被隐藏.
不过执行编译打包之后又会原形.网上也没相关资料,帮助文档中也没找到.通过推测,多次验证后发现一种方法可以解决这问题。将进行生成的setup.exe覆盖执行编译打包生成的setup.exe.
- 安装包制作 InstallShield
- InstallShield制作安装包
- installshield安装包制作
- InstallShield安装包制作
- InstallShield安装包制作
- InstallShield 12 制作安装包
- InStallShield 12 制作安装包
- InstallShield 12 制作安装包
- InstallShield 12 制作安装包
- InstallShield 12 制作安装包
- InstallShield 制作静默安装包
- InstallShield 12 制作安装包
- InstallShield 12 制作安装包
- InstallShield制作安装包实现自动化
- InstallShield 2009制作安装包注意事项
- (转载) InstallShield 12 制作安装包
- InstallShield制作安装包实现自动化
- Installshield 12 安装包制作工具
- 舒淇回忆被揭三级片经历:骂人不用骂到祖宗十八代
- Oracle Clusterware 工具集(1)!
- 软件开发量评估法之一---德尔菲评估法
- Allegro学习笔记之——导出Gerber文件和钻孔数据文件
- iPhone 实现9宮格界面源码
- InstallShield安装包制作
- InputStream和Reader区别
- 毕业论文总结
- Win32平台各种主流开发框架(MFC、ATL、WTL、VCL等)
- 丁子高曝爱子长相似父母混合体 坦言:脸型像我
- iOS股票k线组件源码
- SGI STL 空间配置器(allocator)源码剖析
- Android Monkey
- java.lang.ClassCastException: android.widget.ImageView