版 本 号: | V0.1 | |
| ||
编 制: |
| |
审 核: |
|
修订记录
日期 | 版本号 | 描述 | 作者 |
2012-9-26 | 0.1 | 初稿完成 | tulip |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
目录
3.1 Project Assistant&Installation Designer 1
3.1.1 打开InstallShield2010(IDE View) 1
3.1.3 添加程序基本信息(General Information) 3
3.1.4 安装环境设置(Installation Requirements) 4
3.1.5 程序模块结构(Installation Architecture) 4
3.1.6 安装部署文件(Application Files) 5
3.1.7 程序快捷方式(Application Shortcuts) 5
3.1.8 程序注册表(Application Registry) 7
3.1.9 安装描述(Installation Interview) 7
3.1.10 程序本地化(Installation Localization) 8
3.1.11 编译安装包(Build Installation) 8
3.2.2 InstallScript的结构函数结构: 10
关键词:
InstallShield ,InstallScrip,安装包,定制
摘 要:
一个好的安装包程序是用户接触这个软件的第一印象,心理学有“首因效应”理论,如何使之操作灵活,界面美观友好,稳定可靠,且加入必要的开发公司元素,是安装包要完成的任务。本案例将通过InstallAssistant&Installation Designer的基本操作、InstallScript的结构讲解与函数实现,希望读者在掌握InstallShield基本操作,能够打包自己程序的同时,对安装程序的原理有一定的理解。
1 案例描述
一个好的安装包程序是用户接触这个软件的第一印象,心理学有“首因效应”理论,如何使之操作灵活,界面美观友好,稳定可靠,且加入必要的开发公司元素,是安装包要完成的任务。时下软件打包工具主要有InstallShield,NSIS,Inno Setup或者通过WinRar等压缩工具将模块打包成exe。这些打包工具各有千秋,本文中,将结合TrueLink软件的安装包,介绍通过InstallShield2010软件打包的具体操作。
2 案例分析
安装包要怎么做?首先是明确安装是什么?在理解了安装的内涵以后,在具体的操作中,就能够拥有一个全局的视角,明白当前处于什么位置,接下来做什么。
安装的本质其实就是Copy。当然这里的Copy并非Ctrl+C、Ctrl+V这样简单。包括以下三个方面的内容:
将生成的模块复制到目标机器上
将引用到的模块复制到目标机器上
将相关的配置复制到目标机器上
安装包就是将这些内容复制到目标机器上的一个程序。具体来说,一般包括模块的压缩与解压,模块的分发部署,注册表的读写修改,事务控制(当用户安装过程中取消时,要保持将已经解压存储的文件回滚),快捷方式的创建等步骤。在心里有个大致的概念后,我们就来具体操作InstallShield。
3.解决过程
3.1 Project Assistant&Installation Designer
3.1.1 打开InstallShield2010(IDE View)
与常用的VC6等IDE环境类似(图1)。
图1.InstallShield IDE
创建工程的过程,你可以根据你的需要选择不同的工程类型。这里介绍一下InstallScript Project和Basic MSI Project。InstallShield自带的帮助文档中,这样描述。
With InstallShield, you have the ability to choose between a variety of different installation project types—those that use InstallShield’s powerful InstallScript programming language (InstallScript), those that use the Windows Installer database (Basic MSI), or a combination of the two (InstallScript MSI).
引自InstallShield Content ——InstallScript vs. Basic MSI
InstallScript需要自己来对安装的走向通过编写InstallScript的方式进行调度,所以该工程的优点就是比较容易控制,但是相应的编码工作量比较大,但是只要掌握了InstallScript基本上就掌握了该类型项目的安装包制作。
Basic MSI执行过程则由Windows Installer驱动msi来一步步执行安装过程.相对来说Basic Msi工程的优点是界面有现成的可以借用,只需要在需要控制的过程进行编码即可,但是因为该工程由Windows Installer驱动所以需要理解Windows Installer的一些知识,同时对msi的原理也要有相应的理解才能比较好的掌握基于Basic Msi工程的安装包开发。我们这里采用InstallScript Project。
图2.新建工程
添加工程名,选择工程存储位置。点击OK,这时标签页由StartPage切换到ProjectAssistant。
3.1.3 添加程序基本信息(General Information)
图3.程序基本信息
在这里输入公司的名称,指定程序名,版本号以及公司网址,选择安装后在控制面板|添加或删除程序中显示的程序图标(可以.exe或.ico格式)。
这里只提供了最基本的程序信息,如果有更多的需求,请点击左侧的Other Places |General Information,设置更多的信息(图4)。
在这里设置缺省语言,设置默认安装路径等。
3.1.4 安装环境设置(Installation Requirements)
选择程序运行的操作系统及程序依赖模块。这里选择默认。
3.1.5 程序模块结构(Installation Architecture)
选择是否希望安装模块可选,如Windows Office典型安装,全部安装,或是只安装其中的Word。为方便熟悉,这里选择一个新建一个功能Demo_Feature_Ex。这里Demo_Feature前面的勾表示主功能,在安装过程中必定被安装(图5)。
图5.Installation Architecture
3.1.6 安装部署文件(Application Files)
在这里选择要部署到目标机器上的程序文件。假设我们这里设定主程序为TL,Ex为TL的微博模块,在这里我们要分别添加。
选择Demo_Feature,将要添加的文件和文件夹通过Add Files及Add Folders加入安装文件中。
选择Demo_Feature_Ex,将微博程序以及相关的模块加入其中。
图6.Application Files
在选择dll等文件时,InstallShield会检测是否存在依赖文件,存在依赖时,会提示添加进去(图7)。
图7.模块依赖
3.1.7 程序快捷方式(Application Shortcuts)
在导入的文件中,所有的exe可执行程序都会显示在左侧的窗口中。默认开始菜单中全部创建,根据需求设置快捷方式的名称,设置在桌面、开始菜单中要显示的图标,并且在这里还可以设置替换图标。我们这里只创建主程序TrueLink的桌面快捷方式,且将Launch TrueLink.exe改为TrueLink.exe。
图8.Application Shortcuts
图9.Shortcut
另外我们发现每个exe模块的前面的快捷方式的图标都不是我们设定的exe图标,这时候可以点击左边的Other Places| Shortcuts。在Icon里设置为<TARGETDIR>\xx.exe,安装后在开始菜单及桌面即显示程序的原始图标。还可以设置模块的安装路径,热键,是否能被卸载,安装过程中文件已存在是否替换等。可以根据自己的需求选择相应的选项。
3.1.8 程序注册表(Application Registry)
InstallShield会在安装过程中部署程序安装必需的注册表,例如会在HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{921739B6-14A7-45B7-8F04-AE8F1B7295E1}({921739B6-14A7-45B7-8F04-AE8F1B7295E1}为TrueLink的软件的Guid,InstallShield会为每个程序生成一个全球惟一标识码),我们要做的就是额外的需求。就TrueLink来说,首次启动时显示TrueLink的产品介绍,这个就是通过安装包配合主程序来实现的。每次运行安装包将指定位置的FirstStart键值改为1,运行TrueLink后,主程序将键值改为0。在这里我们在HKEY_CURRENT_USER\Software\ Kedacom\ TrueLink\Local Settings下建新一个DWORD类型键值FirstStart,值为1。
图10.添加注册表
也可以通过导入一个.reg的方式,具体操作点击左侧Other Place| Registry选择。
3.1.9 安装描述(Installation Interview)
这里选择安装包要显示的法律许可,是否输入用户公司名及用户名。能否修改应用程序安装路径等。左侧的Other Places | Dialogs可以选择用户界面的皮肤风格,对话框的界面等。这里我们选择SkinStyle为Olive。
对话框界面的更改可以满足许多个性化的需求,在这里,我们以刚才提供了主程序Demo_Feature和微博模块Demo_Feature_Ex为例。这里我们在选择安装功能的界面加了描述。
选择Dialog | All Dialogs | SdFeatureTree,右击Edit。点击描述Static的文本区域,在Text中输入要描述的内容,我们在这里输入“微博为附加模块,您可以根据实际选择添加”。
注意:这里设置完以后,需将Default置为True,否则设置的效果不会显示。效果会图11。
图11.自定义安装
3.1.10 程序本地化(Installation Localization)
选择安装包的语言,使用默认的简体中文即可。
3.1.11 编译安装包(Build Installation)
距离完成安装包的生成仅剩一步了,但是不用着急,还有一些重要的收尾工作。
这此步骤,有Single-Executable,Internet以及CD-ROM三个存储媒介供选择,这里选择Single-Executable方式。点击再次左侧的Other Places | Releases
图12.Releases Setting
在Setup.exe中设置要生成的exe的名称Demo_Setup.exe,选择一张ico图片作为安装包的图标。还可以设置密码,在Singing中添加安装包数字签名,在Postbuild中设定生成后文件上传的Ftp服务器等等。
OK,返回Project Assistant或是点击Build,安装包就制作成功了。
以上是通过助手一步一步向导的方式来制作,在稍微熟悉了以后可以通过Installation Designer直接操作即可。
掌握这些已经能够满足一般的需求,如果有更进一步的要求,则可能用到InstallScript。这也是InstallScript最为强大的一部分。
InstallScript是专门用来编写InstallShield安装程序的脚本语言。由于InstallScript和C语言极为相似,因而Visual C++用户编写安装脚本程序颇为得心应手。即使对于没有任何语言基础的用户来说,编写InstallScript程序也不会觉得无从下手,因为 InstallScript程序结构是非常简单的。并且,
InstallScript为用户提供了超过250个的内部函数,从而使得用户不需要太多的代码就能编写出具有专业水准的安装程序来。在接下来的篇幅中,不可能逐个仔细讲解,介绍下InstallScript的轮廓,以及函数的结构,并给出几个示例帮助理解,用到具体的功能函数,可以查阅InstallShield自带的帮助文件,或是网络资源。
了解InstallScript,就要先熟悉InstallShield的全局事件处理函数。InstallShield将过程事件划分为三类:Before Move Data, Move Data和After Move Data。
Before Move Data:
1.OnBegin:这里处理一些准备工作,如打开网络连接等,总是会被执行。
2.OnAppSearch:用来搜寻已有的应用程序,维护模式和卸载模式时,该函数不会执行。
3.OnCCPSearch:响应升级兼容,维护模式和卸载模式时,该函数不会执行。
4.OnFirstUIBefore:对第一次运行之前进行响应,初始化屏幕,显示欢迎对话框 ,获得用户注册信息,程序的安装路径等。
5.OnMaintUIBefore:安装维护模式前进行响应。
Move Data:
1.OnMoving:正在复制文件时响应,该函数总是会被执行。
2.OnMoved:部件在安装到目标计算机或卸载完成时响应,总是会被执行。
OnUninstallFingFile:对反安装进行响应。
After Move Data:
1.OnFirstUIAfter:第一次运行后的事件进行响应。
2.OnMaintUIAfter:对程序安装维护运行后进行响应。
3.OnEnd:对结束事件进行响应,这是最后可重新定义的事件。
Function func()
声明,定义
Begin
函数体
End
例如:
安装前检测TrueLink当前是否运行,给出相应的提示。
// 设置安装包左边的图片,该图片需要通过Behavior and Logic | Support Files/Billboards添加进去
DialogSetInfo( DLG_INFO_ALTIMAGE, SUPPORTDIR ^ "leftpic.bmp", TRUE );
// 写注册表( 以写初次启动动画的注册表信息为示例 )
// 在完成后显示[立即运行]和[查看网址]
4.解决结果
安装包制作完成。过程图略。
5.总结
InstallShield强大之处就在于它的便捷性,用户无需关注这些细节,只需要将自己的程序、模块、文件加入其中,然后按照给定的流程一步一步走完,就可以生成自己需要的安装包,然而在InstallShield给我们提供便捷的同时,在定制界面方面稍显力不从心,在个性化的今天,精力有余则可以另辟蹊径。
案例命名为InstallShield基本操作,然后我们却不应该止于基本两字,要学会使用这个工具,也应从中理解一些共性的东西,通过InstallShield理解安装程序的原理,知其然,知其所以然。在具体的操作上,也需要多点点拐拐角角,查阅网络资料。