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
Hostodo在九月份又发布了两款特别套餐,开设在美国拉斯维加斯、迈阿密和斯波坎机房,基于KVM架构,采用NVMe SSD高性能磁盘,最低1.5GB内存8TB月流量套餐年付34.99美元起。Hostodo是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,美国三个地区机房,支持支付宝或者PayPal、加密货币等付款。下面列出这两款主机配置信息。CP...
v5net当前对香港和美国机房的走优质BGP+CN2网络的云服务器进行7折终身优惠促销,每个客户进线使用优惠码一次,额外有不限使用次数的终身9折优惠一枚!V5.NET Server提供的都是高端网络线路的机器,特别优化接驳全世界骨干网络,适合远程办公、跨境贸易、网站建设等用途。 官方网站:https://v5.net/cloud.html 7折优惠码:new,仅限新客户,每人仅限使用一次 9...
官方网站:点击访问青云互联官网优惠码:五折优惠码:5LHbEhaS (一次性五折,可月付、季付、半年付、年付)活动方案:的套餐分为大带宽限流和小带宽不限流两种套餐,全部为KVM虚拟架构,而且配置都可以弹性设置1、洛杉矶cera机房三网回程cn2gia 洛杉矶cera机房  ...
iexplore.exe应用程序错误为你推荐
addresschrome包过滤防火墙和灵巧网关设置深圳做网站-确认收货手太快网店发来空箱子win10关闭445端口如何进入注册表修改关闭445端口重庆电信网速测试电信100M下载速度多少M,为什么我家里电信100M下载速度最快5M美妙,是不是严重缩水canvas2七尾奈留除了DC canvas2 sola EF 快乐小兔幸运草 以外改编成动画的作品有哪些?360chrome360浏览器和谷歌chrome比哪个好用迅雷快鸟迅雷快鸟这种强盗软件不违规吗?micromediaMacromedia Fireworks 8是什么东西,怎么用?googleadsencegoogle adsense打不开怎么办
国内最好的虚拟主机 lamp 老鹰主机 vultr美国与日本 国外php主机 香港机房托管 12306抢票助手 北京主机 html空间 云全民 上海域名 免费mysql 数字域名 炎黄盛世 中国网通测速 空间首页登陆 便宜空间 丽萨 lamp什么意思 主机返佣 更多