2023年12月6日发(作者:)

InstallShield学习笔记

调试项目

Revision History

DATE

REVISION AUTHOR

DESCRIPTION

Table of Contents

1

2

前言 .................................................................................................................................................................................... 1

编译(COMPILE) ......................................................................................................................................................... 2

2.1

2.2

2.3

3

编译选项设置 ............................................................................................................................................................. 2

编译功能导航 ............................................................................................................................................................. 3

编译信息输出 ............................................................................................................................................................. 3

调试(DEBUG) .............................................................................................................................................................. 4

3.1

3.2

3.3

3.4

3.5

调试选项设置 ............................................................................................................................................................. 4

调试功能导航 ............................................................................................................................................................. 5

调试功能介绍 ............................................................................................................................................................. 6

调试信息输出 ............................................................................................................................................................. 7

在客户终端机上调试 ................................................................................................................................................. 7

4

构建(BUILD) ................................................................................................................................................................ 8

4.1

4.2

构建单个EXE文件 ................................................................................................................................................... 8

批处理构建 ................................................................................................................................................................. 8

5

版本(RELEASE) .......................................................................................................................................................... 9

5.1

版本向导(RELEASE

WIZARD) ..................................................................................................................................... 9

1 前言

本文档是笔者在学习InstallShield IDE的过程中,查阅InstallShield 2009 IDE的联机帮助,结合个人学习心得体会,写出的学习笔记。鉴于篇幅有限,本文仅就InstallShield IDE提供的编译,调试,和构建功能作了一些基本介绍,仅供新手入门作参考之用。

若读者有意深入研究高级进阶内容,请参考InstallScript IDE(集成开发环境)自带的联机帮助,或者在网上搜寻参考资料 ( 附:InstallShield社区论坛:,

/?f=133)。

1 2 编译(Compile)

2.1 编译选项设置

用户可以先在InstallShield IDE中定义编译相关设置,请注意这些设置仅对当前被打开的项目有效。

用户从Build菜单列表中选择Settings菜单项,然后在弹出的对话框里打开Compile/Link 标签页,

如下图所示:

对于上面对话框中各设置项的作用,下表作了详细说明:

属性名 属性值(例子) 使用说明

Preprocessor USAGE = “Internal”

设置预处理常量。

Defines

此例中定义了名为USAGE的常量,可以在编译时直接被脚本文件使用。

比如在主脚本中可以这样用:

#ifdef USAGE

//

执行一些代码

#endif

Include Pathes Script,

指定上面的预定义值的使用范围,

C:IS_ProjectsAAScript Files

在这里指定的路径下面的所有script文件,都可以引用该值

(注:多路径用逗号隔开,允许嵌入路径相关的变量)

Maximum 50

指定最多显示的警告(warning)的条Warnings

数,此例中设为50条

Warning Level

选择以下列表项目之一: None - 不显示警告消息。

None,Level 1,Level 2,或Level 1 – 显示InstallShield不能处

Level 3 (默认) 理的任何系统警告。

2 Level 2 – 显示Level 1消息,如果字

符串长度超过限制则追加另一条消息。

Level 3 (默认) – 显示所有警告消息

指定最多显示的错误(error)的条数,此例中设为50条

若选中,在build release之前会自动编译脚本

若选中,会把警告(warning)当成错误(error)来处理。那么当script编译时有警告时,InstallShield不会继续执行下去

若选中,安装脚本中创建的对象的调试信息将在编译时被打包进安装程序中(一般仅用于开发阶段)

指定编译时需要链接的对象库文件(*.obl)的完整路径(允许嵌入路径相关的变量),若有多个路径则用逗号隔开

Maximum Errors

Compile before

build

Warnings as errors

50

选中,或不选中该复选框

选中,或不选中该复选框

Generate inline

debugging

information

Libraries(.obl)

选中,或不选中该复选框

后缀为.obj文件的路径

2.2 编译功能导航

当开发者改动了项目的setup script后,可以先编译此项目,以及早发现脚本语法错误及其它的配置问题。

在项目已经打开的情况下,开发者可以从Build菜单列表中选择Compile菜单,或者在工具条上点击Compile

按钮,从而启动编译当前项目。如下图所示:

2.3 编译信息输出

当编译完成后,InstallShield IDE下面的输出窗口(Output Window)中的Compile标签页会打开,

显示编译输出的文本信息(成功或者失败),如下图所示的Compile窗口输出:

3 当本次编译失败时,毗邻的Tasks标签页会列出出错的代码行号和源头。当用户可以双击其中某一行时,

脚本编辑窗口(Script Editor)自动跳转定位到脚本中的该行,如下图所示的Tasks窗口输出:

3 调试(Debug)

3.1 调试选项设置

用户可以先在InstallShield IDE中定义调试相关设置,请注意这些设置仅对当前被打开的项目有效。

用户从Build菜单列表中选择Settings菜单项,然后在弹出的对话框里打开Run/Debug标签页,如下图所示:

4 下表详细说明了该对话框中各设置项的作用:

属性名 属性值(例子) 使用说明

Setup Command

其值可以是任何一个字符串。 这里输入的字符串会保存在系统变量Line Arguments

比如此例中输入的是自定义的CMDLINE中,通过InstallShield运一串选项值 行的安装可以直接调用其值。开发者

一般用它来定义一些开关类选项,控制setup script的行为。

Generate MIF File

选中,或不选中该复选框 若选中,通过InstallShield运行安装时,会生成一个管理信息格式(.mif)的文件。

(注:当此复选框选中时,后面两个文本框会被激活)

MIF Filename

MIF文件的文件名 这里输入的文件名(.mif)会在InstallShiled运行安装的时候产生。

若留为空,默认文件名为

Product Serial

产品序列号 这里输入的序列号会写入上面生成

Number

的.mif文件中

3.2 调试功能导航

InstallShield IDE提供了一个代码级别的调试器,可以供开发者深入脚本代码内部,去定位错误或

者输出调试信息。

开发者可以从Build菜单列表选择Debug菜单,或者按下键盘上的F5按键,从而启动脚本调试器。

5

3.3 调试功能介绍

当开发者点击了Debug菜单或者按钮后(见3.1 调试功能导航所示图片),InstallShield IDE首先会build出安装程序,然后弹出调试器窗口供开发者使用,其界面如下:

调试器窗口工具栏上有一些用于调试的功能按钮(在Debug菜单列表中也可以找到对应的菜单项)。

各功能按钮的用途详见下表:

按钮图标 按钮名称 按钮功能

Open

点击按钮,选择并打开本地磁盘文件,浏览其内容

Toggle Breakpoint

点击按钮,在光标所在行添加断点;

若该行已有断点,点击此按钮将取消它

Go

点击按钮,调试器会运行脚本代码到下一断点处停止

Break

点击按钮取消正在运行的调试。

此按钮跟上一按钮是互斥操作。

Step Into

点击按钮执行下一行语句。

如果该行调用了用户自义函数,调试器也会

步入该函数体逐步执行

Step Over

点击按钮执行下一行语句。

如果该行调用了用户自义函数,调试器不会

步入该函数体,而是在该函数被调用完之后

的一行继续执行

Step Out

点击按钮从当前被调用的函数体中内部跳

6

出。比如开发者先使用Step Into按钮

入了一个函数体内部,然后可以点击此

Step Out按钮从该函数体内部跳出到外面

调用行,继续执行

Show Next Statement

点击按钮显示当前脚本中下一处声明

(我们在Degger窗口中滚屏浏览代码后,

可点击此按钮快速定位到当前脚本的执行处)

3.4 调试信息输出

调试器窗口下部有两个窗口,在脚本被执行期间,它们会实时显示相关输出信息。

 Local窗口实时输出当前被执行函数(自定义)内部的所有局部变量(local variables)的值。

该窗口里面的信息只可读,不可修改。见下面左图.

 Watch窗口实时输出用户自行添加的监控项(watch)的值,观测项可以是变量名或常量名,

用户可以通过右键菜单添加或者在表格中直接输入。见下面右图.

3.5 在客户终端机上调试

前面的四小节(3.1~3.4),我们讨论的是在开发者本机上利用InstallShield IDE的调试方法。

在现实情况下,我们编译出来的的安装程序在本机上测试正常,然而发布给客户后,

在客户的终端机器上却出现各种问题。

因为客户机器上面一般没有安装InstallShield IDE开发环境,我们也不可能用开发者常规的方式来进行调试,

这时候我们就要使用下面的步骤进行在客户机器上进行现场调试:

1. 从开发者本机上InstallShield安装目录System下面,找到名为程序,拷贝到将要执行调试的客户机器上面的任一文件夹(注:在该目录下有其帮助文档,可以一并拷贝过去,以便客户参考)。

2. 接着在客户机器上面,打开一个命令行窗口,敲入下面的命令来注册这个exe程序(假设其目录为C:debug):

7 C: REGSERVER

3. 在开发者本机上编译并构建安装程序(若以前已经构建过,此步可以省略)。

4. 从开发者本机上找该项目构建出来的文件夹(包括Disk Images子文件夹),拷贝到将要执行调试的

客户机器上的任一文件夹。

例如,假设开发者本机上该项目的根目录是:C:IS_ProjectsAGIS,那么要拷贝的文件夹是C:IS_ProjectsAGISMediaSINGLE_EXE_IMAGEDisk ImagesDisk1

(注:以上路径中最后一层Disk1,在实际情况下可能是Disk2,Disk3等等,请酌情选择。

另外,如果开发者机器上的目录可以共享给将要执行调试的客户机器,这一步可以省略)

5. 在客户机器上,打开一个命令行窗口,使用/d参数调用安装程序(比如),该参数后面紧跟将要生成的log文件的路径,比如下面的命令行例子:

C: /d”C:debug”

此时安装程序界面会照常弹出,供客户操作完成安装。同时InstallShield的Debugger窗口也会显示,并随着客户在安装程序界面上的操作,该窗口会实时显示当前执行的代码,并输出当前的局部变量,当然客户也可以自己添加的监控项(参见3.4

调试信息输出)

4 构建(Build)

4.1 构建单个EXE文件

在项目编译没有错误发生的情况下,我们可以构建出最终的可执行型安装程序(*.exe)。

这个操作非常简单,用户可以在Build菜单列表中选择Build 或Refresh Build,然后等待项目编译和构

建完毕,在项目的$MediaSINGLE_EXE_IMAGEPackage目录下会看到生成的EXE文件,见下图:

(注:Build会执行完整的构建,而Refresh Build只会重建上次build之后被修改的部分)

4.2 批处理构建

用户也可以使用批构建(Batch Build)方式,一次构建预先定义的各个版本(release)和单个的EXE程序文件。

在InstallShield IDE中,打开Build菜单列表,选择Batch Build菜单项,然后会看到如下左图所示的对话框。

勾选之后,点击Build按钮,即开始了批构建。完毕后,在项目的Media文件夹下面可以看到各自生成的

子文件夹,如下右图所示:

8

5 版本(Release)

在安装程序被发布给测试人员或者最终用户之前,开发者应该创建一个对应的版本(release)。

一个版本配置了一些安装相关的信息,也包含了将被发布到软盘,光盘,文件夹,或者其它媒介载体上的

文件。

创建版本最常见的方式是使用InstallShield IDE自带的版本向导(Release Wizard)。

5.1 版本向导(Release Wizard)

版本向导(Release Wizard)是InstallShield提供的一个辅助功能,它提供了十五个连续的配置页面,

引导用户逐步填入各类配置信息,最后根据收集的配置信息生成该版本所包含的数据文件和执行文件,

这些文件可以被直接打包发送给最终用户,或者烧录到光盘等媒介载体作为安装盘。

在InstallShield IDE界面上,点击菜单栏上的Build菜单,然后在其展开的列表中点击菜单(或在工具栏上

点击按钮), 此时版本向导对话框会弹出。

下面我们对它的十五个配置页面逐一说明(注:某些配置页面仅在某些特定类型的安装项目才出现):

1. 第一个页面,是Welcome页面,请直接点击Next按钮进入下一页面。

2. 第二个页面,是Specify a Release页面,可以输入一个新release name或者选择现有的某个release。

3. 第三个页面,是Media Type页面,可以选择CD-ROM, Custom, Network Image等作为此版本发布使用的媒介载体(注:如果选择的类型是Custom,页面下面的Format Size文本框会激活,供用户输入)

4. 第四个页面,是General Options页面,配置安装程序的一些属性信息。

5. 第五个页面,是Password页面,允许设置一个密码,在安装程序运行之前会要求用户输入该密码并验证。

6. 第六个页面,是Platforms页面,选择安装程序支持的所有操作系统平台。

(注:如果安装程序中的某个component关联的平台,没有在这个页面选中,那么该component不会被打包到这个release中)

7. 第七个页面,是Setup Languages页面,选择安装程序支持的所有语言,从而最终用户在运行该安装程序时可以选择以某种语言安装。

8. 第八个页面,是Features页面,选择需要打包进安装程序的features。

9. 第九个页面,是Media Layout页面,选择以Cabinet File, CDROM Folder, 或Custom格式来打包features所包含的文件。

(注:若选择Custom,下一页面会是Custom Feature Layout,跟第八个页面类似,此处不表)

10. 第十个页面,是User Interfaces页面,选择某个皮肤文件(*.skin),应用给安装程序。

11. 第十一个页面,是Internet Options页面,配置安装程序在被运行时跟internet相关的一些选项。

12. 第十二个页面,是Digital Signature页面,可以为安装程序添加数字证书。

13. 第十三个页面,是Update页面,配置以Update模式运行安装时的行为,可以选择全部重新安装,或者只

安装此页面中被选择的组件。

14. 第十四个页面,是Postbuild Options页面,配置当前build完成之后额外执行的一些动作,比如上传拷贝一

些文件,执行批处理脚本等。

9 15. 第十五个页面,是Summary页面,汇总显示了前面所有页面收集的配置信息。

若确认没有问题,可以点击Finish按钮开始创建release (选项Build the Release选择应该被勾选上);

若想修改某部分配置,可以点击Back按钮回退到对应页面进行修改。

10