摘 要:结合对作者利用VC++6.0开发的工控软件包制作安装程序的实例,介绍了如 何用InstallShield来制作标准的Windows安装程序,重点叙述了如何编制程序组(项)、 分类安装(典型、完全和自定义安装)、卸载、注册控件和界面汉化等方面的内容。
关键词:InstallShield;安装程序;包装;媒体;卸载;控件注册
一 、引言
软件既是一项工程又是一种产品,称其为工程是因为它是按照工程的方法进行设计、实施,也就是所谓的软件工程,作为一项完整的工程项目就必须把最终产品完整有效地交付给用户;说它是一种产品,它符合产品的一系列特性,当然最重要的就是产品的包装,在当今充满竞争的时代里,在提高软件质量的基础上给产品一个好的“外壳”,已经成为软件业的一大需求。
软件安装由DOS时代通过批处理文件实现直到UCDOS图形安装界面的出现,才有一些新意;再到易学易用的图形用户界面、多任务功能的WINDOWS系统的出现,安装一个软件或应用程序已不再仅仅是将相关的文件复制到硬盘中,而是必须允许用户按自己的愿望选择安装类型和安装路径,并且在不需要的时候,还要能够将安装的相关内容全部删除掉,而且还要保证其完整性和有效性,Installshield就能够满足这样的要求。针对作者开发的用于化工行业间歇聚合反应过程先进控制的软件包――化工间歇聚合反应过程的辨识与控制软件的商品化问题,作者应用Installshield制作了Windows环境下的标准安装程序,经过反复调试和检验达到了预期的目标,安装及卸载都十分方便。
二、用InstallShield制作安装程序的步骤
1.建立工程文件
打开InstallShield 相关应用程序,双击“Project Wizard”,按照向导提示输入工程的相关信息。当然这里输入的是给相关变量赋值,在编译之前可以对其进行修改,打开资源Resources,对其相关属性的变量进行重新赋值即可;另外,还需对菜单项“Project”中的产品名称进行更改。
2.文件组配置
打开文件组File Groups工作区,展开树,给相应的文件组链接对应文件,对应文件会显示在相应的区域。单击相应文件组,对其其属性进行设置,重要的有:[Shared]指定当前文件组中的文件是否为共享文件,即该文件是否被多个应用程序共同使用,若设为共享文件InstallShield在应用程序安装过程中会自动处理这些文件的注册;[Self Registered]设置当前文件组中的文件是否自注册,这个功能能够将相关文件在安装过程中进行注册,卸载时也会自动将这些注册信息删除;[Compressed]指定当前文件组中的文件在建立媒体库时是否被压缩,这里的设置在安装媒体向导的磁盘类型中不选择[Data as files]复选框是有效的,否则不管如何设置应用程序即不存储在电缆文件中也不被压缩;[Overwrite]指定当前文件组中文件覆盖终端用户计算机系统中已存在同名文件的条件;[Destination]指定当前文件组在安装过程中被传输的目标位置。
3.组件设置
打开组件“Components”工作区,可以新建组件,组件的重要属性有:“Status Text”是标志在复制对话的进度条上看到的文本;“Display Name”是给定当前组件显示给终端用户的文本;“File Need”是指定组件的级别,【Critical】对于安装程序不允许终端用户不选择该组件,【Recommended】是建议终端用户应该选择安装该组件,【Standard】如果终端用户没有选择该组件,不会显示任何信息;“Include in Build”是表示是否将该组件包含到发行媒体中,暂时将本特征不包含到发行媒体给这个组件留下位置,以便以后升级。“Required Components”是将此组件必需的其它组件链接在一起;“Included File Groups”可以为当前组件增加和删除与之相关的文件组;其它属性默认即可。
4.在Setup.rul底稿文件中添加代码
充分利用InstallShield资源可以省去不少代码编写,特别是InstallShield提供的一些内部函数,可以实现丰富的功能,需要特别注意的是大小写是严格区分的。
5.编译工程
从【Build】菜单中选择【Compile】选项对脚本进行编译;编译通过后选择【File】菜单中的【Save】选项进行脚本修改的保存。
6.定制MEDIA(安装媒体)
从【Build】菜单中选择【Media Wizard】选项启动媒体制作向导,按照提示一步一步进行,最后出现所设置的总信息,不妥后退进行修改,最后确认后按【完成】后定制媒体。
7.测试
文件安装媒体制作完成之后,就可以进行测试,从【Build】菜单中选择【Run Setup】运行,安装完成后可以通过【开始】菜单的【程序】中的快捷方式运行安装的应用程序。最后运行卸载程序将应用程序从系统中删除。
三、安装程序初始化
在函数OnFirstUIBefore()中输入如下脚本代码进行初始化程序。
1.安装背景设置
SetFont(FONT_TITLE,STYLE_BOLD|STYLE_SHADOW, "Arial");//设置字体
SetTitle(@TITLE_CAPTIONBAR,0, BACKGROUNDCAPTION );//设置标题
SetTitle( @TITLE_MAIN, 24, WHITE ); //设置对话框主题字体和颜色
Enable( FULLWINDOWMODE ); //允许全屏显示
Enable( BACKGROUND ); //允许背景设置有效
SetColor(BACKGROUND,RGB (0, 128, 128)); //设置背景颜色
2.加载图片
在任何时候都可以加载图片以装饰安装程序,方法如下:
svPicName = SUPPORTDIR ^ "pic6.bmp"; //定义图片路径
DialogSetInfo(DLG_INFO_ALTIMAGE,svPicName,TRUE);//在对话框中显示
svPicName = SUPPORTDIR ^ "pic2.bmp";
PlaceBitmap(svPicName,13,0,0,FULLSCREENSIZE);//全屏显示图片作为背景
在加载下一幅图片的时候要先移去上一幅已加载的图片,方法如下:
PlaceBitmap ("",13,0,0,REMOVE);
3.系统变量的设置
nSetupType = TYPICAL; //预设默认安装类型
TARGETDIR = "D:\\"^@PRODUCT_NAME; //设置默认安装路径
svName = "Name"; //用户默认名
svCompany = "Company"; //公司默认名
svSerial = "123-EDC-532-386"; //序列号
四、定制程序组(项)
function SetupFolders()
NUMBER nResult,nIcon, nFlag;
STRING szProgramFolder,szItemName,szCommandLine,szWorkingDir,szIconPath;
STRING szShortCutKey, szProgram, szParam,svTmp;
begin
szProgramFolder = @PRODUCT_NAME;
if (CreateProgramFolder(szProgramFolder) < 0) then
return -1;
endif;
//设置快捷方式的工作环境
nIcon = 0;
szShortCutKey = "";
nFlag = REPLACE;
szWorkingDir = TARGETDIR;
szIconPath = TARGETDIR+"\\"+@PRODUCT_KEY; //图标选择
szItemName = @PRODUCT_NAME;
szProgram = szIconPath;
LongPathToQuote(szProgram, TRUE);
szCommandLine = szProgram;
if(AddFolderIcon(szProgramFolder,szItemName,szCommandLine,szWorkingDir,
szIconPath,nIcon,szShortCutKey,nFlag)< 0) then
return -1; //在开始菜单的程序组中增加启动该应用程序的快捷方式
endif;
if(AddFolderIcon(FOLDER_DESKTOP, szItemName, szCommandLine,
szWorkingDir,szIconPath,nIcon,szShortCutKey, nFlag) < 0)then
return -1; //在桌面上增加启动该应用程序的快捷方式
endif;
//卸载的设置
szWorkingDir = WINDIR;
szIconPath = SUPPORTDIR+"\\IsUninst.exe";
szItemName = "卸载"+@PRODUCT_NAME;
svTmp=PROGRAMFILES+"InstallShieldInstallationInformation\\"+PRODUCT_GUID+"\\setup.exe";
LongPathToQuote(svTmp, TRUE);
szParam = svTmp;
LongPathToShortPath(szParam);
svTmp=COMMONFILES+"InstallShield\\engine\\6\\Intel32\\ctor.dll";
LongPathToShortPath(svTmp);
szProgram = "RunDll32"+" "+ svTmp+",LaunchSetup";
szCommandLine = szProgram + " " + szParam;
if(AddFolderIcon(szProgramFolder,szItemName,szCommandLine,szWorkingDir,
szIconPath, nIcon,szShortCutKey,nFlag)< 0) then // 在开始菜单中设置卸载快捷//方式
return -1;
endif;
end;
五、对象嵌入技术
使用InstallShield对象,我们可以很方便地安装关键的Windows技术,包括ODBC、Access、ADO、DAO、RDO、OLE DB、DirectX以及其它技术,只要按照InstallShield嵌入对象向导操作即可,这里以嵌入ODBC为例子详细说明:
首先利用 Windows控制面板中的ODBC数据源建立数据配置文件,需要与所建的数据库文件联系起来,这里是DOT.MDB文件,数据源名设置为DOT,退出后可以看到刚才建立的数据源。在Components工作区右击相应的组件,从弹出菜单中选择【Insert InstallShield Object】,打开对象浏览树,选中“NEW ODBC 3.51”,单击【Add Object】按钮将会把该对象加入到Resources工作区中的InstallShield Objects文件夹中以及刚才的组件中,然后就会有向导启动(嵌入其它对象时,没有向导说明已经完成,关闭对象浏览器即可),按照向导提示完成ODBC对象嵌入,在安装过程中会自行注册。大多数对象都是直接嵌入即可。
六、控件注册
方法一:用户手工注册,利用VC++自带的DOS命令REGSVR32.EXE(在\bin目录下)或者直接用下列方法:点击“开始”→“运行”;输入以下命令进行注册:
regsvr32 < 文 件 名 > 注册一个控件
regsvr32 /u< 文 件 名 > 解除某控件的注册
方法二:利用InstallShield的自注册功能,在文件组里新建一个文件组,这里取名为“BatchAPC 环境变量”,然后在这个新建文件组里链接需要注册的文件,这里是两个ActiveX控件MSCHRT20.OCX和MSCOMM32.OCX,将属性中的“Self-Registered” 设置为“Yes”,一般默认为“No”,这样就不需要编写代码来进行注册了。
七、界面汉化
一般用InstallShield作出来的安装程序是英文安装界面,这里我们使用的是InstallShield Profession standard 6.22版本,《InstallShield 6.X/VB/VC/Delphi安装程序设计与制作》这本书所带的光盘上有汉化工具,若没有,可以手工汉化,方法如下:
首先找到用InstallShield 5.X制作的汉化版安装程序,执行,在安装出现欢迎对话框的时候最小化,安装程序会在“C:\Windows\Temp\_istmp0.dir\”目录下生成一个.dll文件,将其拷贝到其它地方,然后改名为_isres.dll,再将恢复后的_isres.dll拷贝到InstallShield安装目录“\Redistributable\CompressedFiles \0009-English \Intel 32”下;再将Setup.exe中文版拷贝到“\Redistributable\UncompressedFiles\Language Indepedent\Intel 32\”目录下;最后将Setup.dll中文版拷贝到“\Redistributable \UncompressedFiles\LanguageIndepedent\OSIndepedent\”目录下即可。一般情况下要是不能正常运行,恢复英文版的Setup.exe,然后在Win2000下用VC++ 6.0对其按资源编辑。汉化的实质就是将这三个文件改为中文版,另两个文件也可以用VC++6.0 编辑汉化。
注意:在汉化之前务必将英文版的_IsRes.dll、Setup.dll和Setup.exe三个文件备份。
八、结束语
综上所述,通过上面的介绍可以制作出标准的安装程序,当然,InstallShield的功能不仅仅是这些,界面的友好性和多媒体技术的应用已经成为完善安装程序的方向,软件的包装现在已经受到重视,特别是商品化所带来的竞争机制,使其发展更快捷、更丰富。
参考文献
1.丁有和 著 InstallShield简明使用教程(电子文档),2001.1
2.张君等 著 2001编程宝典丛书4 引人入胜InstallShield6.X/VB/VC/Delphi安装程序设计与制作.北京希望电子出版社, 2001.1
3.Jeffrey M. Rhodes 著 InstallShield Professional Primer for ToolBook Installations
4.黄进林 著 利用InstallShield 制作PowerBuilder应用程序安装盘.电脑编程技巧与维护, 2001.3:9-12
|