88软件技术2005年I1月J0日第ll期用InstallShield搭建应用软件运i5t]iii|一北京邮电大学计算机科学与技术学院余宝娟潘维民摘要:制作一个智能化的安装程序发行软件是项目开发的重要组成部分.
良好的安装程序不仅要完成基拳的程序和数据文件的拷皿厦相关蛆件的注册,还要能完成第=方软件的静态安装、设置环境变量、修改配置文件和安装系统服务等I作本文通过一个央倒着重讨论了使用lnstallShield实现应用软件运行环境的自动配置方法关键词:InstailShield;静态安装;第=方软件;运行环境;自动配置对于Win&)WS应用软件.
一叶、方便、交互的安装程序是不可缺少的特别是当软件运行环境搭建复杂的情况下,若所有丁作能在安装程序中能-次性完成.
仅给用户甜F一个良好的第印象,同时也有效地提高可靠r,降低维护成本.
安装程序制作的复杂是山应用软件的复杂度决定的应用软件可能『列时,f】到多种开发丁.
具.
如VC++、Delphililtlihler、MSXM1分析器以及后台数据库系统等这样.
软件的运行环境中.
Delphi丌发的数据库应用程J半就需要BDE数据库引擎;jBuilder的Web应用程序需要Weh服务器:VC++井发的c()M组件、DLI等需癸进行注册;以及安装MSXML和数据库仞始化等lnslallShield是一个强有,J的安装程序制作软件,面过其强大的脚本语言编程可在安装程序中完成诸如第三方软件静忿安裟,注册文件没环境变量和安装系统服务等等复杂的操作功能的慢大往往带米实现的复杂、本文通过一个实例讨沧r如何使用Tmta[IShil·I搭建应用软件运行环境文叶1实例为基于数据仓库技术的银行非现场稽枝监控系统+分为服务器版和窨户端版本字户端版本与服务器版制作过程类似,因此本文服务器版奉为例使用的lnstallshild为Prolein7.
0版乖舀'先.
通过hastalIShiehl的向导创建一个新的工程_本文是庄此基础上则其修改和编程.
完成虚用软件复杂运行j境的搭建一、实例运行环境配置车实例的安装前提条件是,服务器操作系统为windo~sN一1servt4.
0或更高版本、数据库为Mj一osoflsQL_2000.
待安装的具体内容包括:Web应川程序,Delphi应用程序:注册COM组件、I)LI静态安装.
1ava开发包JDKI4、wEB服务器T…ll1.
at5、数据昨引擎bde5lB【lria…tDataIⅢcEngi)、msxml4;设置环境变康、修改置文件,数据仓库初始化;安装系统服务等IJJ于篇幅的原因,软件的司】载就不再介绍r二、修改s(~tup.
rul文件luslallshield安装程序由㈣II_l¨JI文件中的丽数OnFirstUIHefore¨负责对安装程序进行仞始化,从而扶取川户安装信息其代码下:(J确定宦装的1]标日录:在默认情况下,I¨mIIshield会在默认安装路径中添J=『¨公司名称.
此时nT以通过修改TARGEqDIl束最终确定奠装路径N()V1r).
2IO5N()http://www.
paper.
edu.
cn中国科技论文在线坪如金骷越肛FINANCIALCOMPUTEROf''HUANAN软件技术2005年11月10日第11期(二)、窗口标题与提示信息的修改:在默认情况下,Installshield会根据项目名称生成相应的窗口标题和提示信息.
如果这些与我们所要求的不相符时,就可以通过修改szMsg、szTitle这两个变量完成.
(三)、注册码的处理:如果需要在安装程序中校验软件注册码,则需要调用SdRegisterUserEx函数向用户询问软件注册码.
否则调用SdRegisterUser函数只询问用户的基本信息.
(四)、确认磁盘可用空间:检查目标磁盘的可用空间满足安装需要,具体代码如下:GetDisk(TARGETDIR,SVDrive);1FreeSpace:GetDiskSpace(svDrive).
至此,安装程序主要初始化工作基本完成.
三、文件组设置与文件注册主应用程序的文件数量大且目录结构复杂.
为了将其方便快速的加到文件组里,采用了动态连接(DynamicLinks)方式.
选中文件组,双击文件组连接方式,在弹出的设置页面:指定文件所在目录;选中IncludeSubfold;InclusionWildCard(s)设为六.
六,ExclusionWildCard(S)设为空.
这样,该目录下的所有文件加入到该文件组中.
另外,Insta11Shield提供了文件组文件自动注册功能,将需要注册的COM组件和DLL(动态链接库)文件设为一个文件组进行统一注册.
四、静态安装第三方软件第三方软件由于其功能强大、性能稳定、使用方便,越来越多的用于软件开发和使用中.
它们的静态安装方式由制作软件和打包格式决定,下面就几种典型情况进行讨论.
(一)、静态安装JDK组件SUN公司JDK1.
4.
2的安装程序是采用In—stallshield打包制作,由两部分组成:i2re.
MSI和i2sdk142.
MSI.
msi格式的安装文件通过Win—dowsInstaller来完成安装.
i2sdk142.
MSI的安装与i2re.
MSI相似,下面以i2re.
msi为例说明.
首先设置静态安装命令参数:Sprintf(szCmd—Line,"/i\,,%S\,,INSTALLDIR=\,,%S\\j2re\,,REBOOT=SuppressADDLOCAL=ALL/qb!
一".
J2RE,szPath).
其中变量szCmdLine为静态安装的命令参数,包括源程序所在路径,安装目标路径,是否重启机器等;宏J2RE定义为:SRCDIRbin、\j2sdk142.
MSI";变量szPath表示安装的目标路径.
然后调用WindowsInstaller完成安装:nResult:LaunchAppAndWait(MSIEXEC,szCmdLine,WAIT).
函数LaunchAppAndWait的功能是加载安装程序.
参数:宏MSIEXEC定义为:WINSYSDIR~msiex.
ec.
exe";变量szCmdLine为前面设置的命令参数;WAIT表示LaunchAppWait函数等待安装完成后才返回.
变量nResult为函数返回的执行结果,0:成功,<0:失败.
(二)、静态安装Tomcat组件Tomcat4的安装程序采用NSIS(NullsoftScript—ableInstallationSystem)打包制作,静态安装实现比较简单.
首先设置命令参数:Sprintf(szCmdLine,"/S/D=%S\\tomcat",TARGETDIR).
其中变量szCmdLine为静态安装的命令参数:"/S"表示安装方式为静态安装,"/D:%S\\tomcat"表示安装目录;宏TARGETDIR表示用户指定的目标路径.
然后进行静态安装:nResult=LaunchAp—pAndWait(TOMCAT,szCmdLine,WAIT).
其中函数参数:宏TOMCAT定义为:SRCDIRbin\\tom—cat一4.
0.
4.
exe";变量szCmdLine为前面设置的命令参数;其他同4.
1.
(三)、安装BDEBDE5的安装程序采用的是Insta11Shield打包制作,文件格式为EXE,静态安装需要有相应的静态安装脚本Setup.
iss作支持.
Setup.
iss可以通过安装程序使用"/R"参数生成.
相比之下,这种静态安装的功能灵活、强大.
静态安装具体实现代码:nResult=LaunchAp.
pAndWait(BDE,"/S",WAIT).
其中函数参数:宏BDE定义为:SRCDIRbin\\bde5\\SETUP.
EXE";"/S"为静态安装的命令参数;其他请参照"静态安装JDK组件"小节.
此时,安装程序所需要的输入参数将由静态安装脚本文件给出.
需要注意的是,在静态安装BDE5之前应该根据用户所选择的安装目录,修改安装脚本中的安装目录设置.
N0V.
10.
2005NO.
11软件技术2005年11月10日第11期坪扔金骷电肛五、配置软件运行环境(一)、设置环境变量本实例采用T0MCAT作为wEB服务器,需要设置PATH、JAVA』{0ME和CLASSH0ME环境变量.
JAVA_H0ME和cLAssH0ME一般是JDK专有的环境变量,所以直接在注册表里添加或覆盖已有的值.
PATH是系统已存在的环境变量,所以首先得到该环境变量的值,然后判断是否已经含有要添加的值,没有则在该值中添加并重新设置PATH值,若已有则取消操作.
下面以设置CLASSPATH变量为例,具体代码如下:szKey=SYSTEM||CurrentControlSet||Control||SessionManager\\Environment":szPath=TARGETDIR;nSize=一1:strsub(jdkDir,TARGETDIR,0,3);jdkDir=jdkDir~'\\programfiles";nType=REGDBSTRINGEXPAND;RegDBGetKyValueEx(szKey,"PATH",nType,szValue,nSize);Sprintf(szEnv.
"%S\\JDK131\\bin;%S\\apache—ant—1.
5.
2\\bin;%S\\jawin\\bin;".
jdkDir,szPath,szPath);if(!
(szValue%szEnv))thenszValueszEnvszValue;nResuh=RgDBSetKeyValueEx(szKey,"PATH",nType,SZ—Value,nSize);if(nResuh<0)thenMessageBox("FailedtoAppendPathEnvironmentVariable!
",WARNING);endif;endif;(二)、修改配置文件Web应用程序需要根据实际安装环境修改配置文件内容.
较简单的实现:第一步,安装前处理配置文件,删除需要修改的信息;第二步,InstallShield安装过程中动态添加配置信息.
具体代码为:FileIn—sertLine(szPath,szCmdLine,9,AFTER);函数FileIn—sertLine的功能是向文件中插入一行.
参数szPath指向待修改文件及其路径;szCmdLine为插入的内容;数字9为在第几行插入;AFTER为插入方式.
(三)、导人注册表文件当往注册表里写的内容很多,可以编写一个注册表文件,然后通过安装第三方软件的方式将该文件内容一次性写入注册表,实现起来更简单,不易出错.
这时InstallShield需要调用系统的regedit.
exe实现静态安装.
具体实现代码为:regFileDir=TARGETDIRregfiles\\LookupDateGap.
reg":Sprintf(szCmd,/s%s\,,,,regFileDir);szPath=WINDIRregedit.
exe;nResuh=LaunchAppAndWait(szPath,szCmd,WAIT);(四)、注册文件虽然InstallShild提供了文件的自动注册功能,但是某些情况下通过编码实现一个文件的注册也是常见的.
具体实现代码为:saDir=TARGETDIR~'SaGSA.
dll":Sprintf(szCmd.
"/s\"%s.
saDir);nResuh=LaunchApp(regsvr32.
exe,szCmd);(五)、数据仓库初始化数据仓库的初始化工作比较复杂,本实例中包括获取元数据库、标准数据源和监控服务器的配置信息,并根据配置信息建立数据库服务器连接、创建数据库、表,导人元数据等等操作.
为了降低安装程序制作的复杂性,首先用VC编程实现上述功能,然后InstallShield轻松调用该程序即可.
具体代码为;nResult=LaunchAppAndWait(INITDB,,WAIT);函数参数:宏INITDB为数据库初始化程序,定义为:SRCDIRin\\InitDB.
exe".
(六)、安装系统服务软件中的系统服务需要将其安装到系统中,通过本地服务控制台中进行启动、暂停和停止等操作.
如本实例中的ETL数据抽取和任务执行,通过编写系统服务来实现定期的调度执行.
具体实现代码如F:nResult=LaunchAppAndWait(AuditService.
/一service",WAIT).
其中函数参数AuditService为服务文件名称及其路径,定义为:TARGETDIRAuditService.
exe";"/一service"表示将该软件安装成系统服务.
六、结束语本文通过一个实例,讨论了InstallShild如何实现复杂运行环境的自动搭建,希望能起到一定的借鉴作用.
上述方法在实际应用中均能正确运行.
参考文献:[1】BobBaker.
TheOfficialInstallShieldforWindowsInstaUerDevel0per'SGuide[M.
NYU.
S.
A:HungryMinds,Incorpo2rated,January2001:100—102[2】JeffreyM.
Rhodes.
InstallShieldProfes—sionalPrimerforToolBookInstaUati0ns[3】http://WW-vV.
installshield.
COB(责任编辑:高鹏志)N0V.
10.
2005NO.
11
易探云产品限时秒杀&QQ音乐典藏活动正在进行中!购买易探云香港/美国云服务器送QQ音乐绿钻豪华版1年,价值180元,性价比超级高。目前,有四大核心福利产品推荐:福利一、香港云服务器1核1G2M,仅218元/年起(香港CN2线路,全球50ms以内);福利二、美国20G高防云服务器1核1G5M,仅336元/年起(美国BGP线路,自带20G防御);福利三、2G虚拟主机低至58.8元/年(更有免费...
EdgeNat 商家在之前也有分享过几次活动,主要提供香港和韩国的VPS主机,分别在沙田和首尔LG机房,服务器均为自营硬件,电信CN2线路,移动联通BGP直连,其中VPS主机基于KVM架构,宿主机采用四路E5处理器、raid10+BBU固态硬盘!最高可以提供500Gbps DDoS防御。这次开年活动中有提供七折优惠的韩国独立服务器,原生IP地址CN2线路。第一、优惠券活动EdgeNat优惠码(限月...
月神科技怎么样?月神科技是由江西月神科技有限公司运营的一家自营云产品的IDC服务商,提供香港安畅、香港沙田、美国CERA、华中电信等机房资源,月神科技有自己的用户群和拥有创宇认证,并且也有电商企业将业务架设在月神科技的平台上。目前,香港CN2云服务器、洛杉矶CN2云主机、华中电信高防vps,月付20元起。点击进入:月神科技官方网站地址月神科技vps优惠信息:香港安畅CN2-GIA低至20元核心:2...
iexplore.exe应用程序错误为你推荐
combininggooglecourses163支持ipad支持ipad城乡居民社会养老保险人脸识别生存认证css下拉菜单CSS如何把下拉菜单改为上拉菜单google中国地图谷歌卫星地图中文版下载在哪下??重庆电信宽带管家中国电信10000管家用着怎么样啊??chromeframe无法安装chrome frame,求助联通合约机iphone5我想问下,我想入手iphone5的联通合约机, 会被坑吗
深圳网站空间 20g硬盘 12306抢票攻略 12306抢票助手 轻量 免费智能解析 网通服务器托管 ftp免费空间 免费网页空间 789电视剧 中国电信测速器 789 免费个人主页 免费稳定空间 美国主机侦探 中美互联网论坛 ncp是什么 服务器机柜 asp.net虚拟主机 在线tracert 更多