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
零途云(Lingtuyun.com)新上了香港站群云服务器 – CN2精品线路,香港多ip站群云服务器16IP/5M带宽,4H4G仅220元/月,还有美国200g高防云服务器低至39元/月起。零途云是一家香港公司,主要产品香港cn2 gia线路、美国Cera线路云主机,美国CERA高防服务器,日本CN2直连服务器;同时提供香港多ip站群云服务器。即日起,购买香港/美国/日本云服务器享受9折优惠,新...
horain怎么样?horain cloud是一家2019年成立的国人主机商家,隶属于北京辰帆科技有限公司,horain持有增值电信业务经营许可证(B1-20203595),与中国电信天翼云、腾讯云、华为云、UCloud、AWS等签署渠道合作协议,主要提企业和个人提供云服务器,目前商家推出了几款特价物理机,都是在内地,性价比不错,其中有目前性能比较强悍的AMD+NVMe系列。点击进入:horain...
HostMem近日发布了最新的优惠消息,全场云服务器产品一律75折优惠,美国洛杉矶QuadraNet机房,基于KVM虚拟架构,2核心2G内存240G SSD固态硬盘100Mbps带宽4TB流量,27美元/年,线路方面电信CN2 GT,联通CU移动CM,有需要美国大硬盘VPS云服务器的朋友可以关注一下。HostMem怎么样?HostMem服务器好不好?HostMem值不值得购买?HostMem是一家...
iexplore.exe应用程序错误为你推荐
力学迅雷朝阳分局电子物证实验室建设项目三星itunes支持ipad支持ipad支持ipad支持ipadipad连不上wifi苹果ipad突然连不上网了,是怎么回事?网络是好的,手机能上网。iphone连不上wifi苹果手机为什么突然连不上家里的wifi?tcpip上的netbios怎么启用TCP/IP上的NetBIOS
免费网站空间申请 大庆服务器租用 仿牌空间 韩国俄罗斯 美国主机网 cdn服务器 中国特价网 卡巴斯基永久免费版 合肥鹏博士 京东商城双十一活动 本网站在美国维护 上海域名 卡巴斯基免费试用 新加坡空间 东莞主机托管 php服务器 睿云 深圳主机托管 phpinfo webmin 更多