第1章 InstallShield 6.x专业版概述 1
1.1 InstallShield专业版的特点 1
1.2 安装InstallShield专业版 3
1.2.1 准备安装 3
1.2.2 安装过程 3
1.3 InstallShield开发环境 5
1.3.1 项目窗口 5
1.3.2 项目工作区 6
1.4 窗口信息 12
1.4.1 Script Editor(脚本编辑器)窗口 12
1.4.2 file Groups(文件组)窗口 13
1.4.5 String Table(字符串表)窗口 14
1.4.4 Setup Types(安装类型)窗口 14
1.4.3 Components(部件)窗口 14
1.4.6 Registry Entries(注册表键)窗口 15
1.4.7 Shell Objects(外壳对象)窗口 16
1.4.8 Setup Files(安装文件)窗口 17
1.4.9 Media(媒体)窗口 17
1.5 其他功能区 17
1.6 关于安装程序的几个概念 18
1.6.1 一个正在运行的安装程序 18
1.6.2 InstallShield Professional的安装项目 20
1.6.3 创建一个安装程序 22
2.1.2 安装程序特性 25
2.1.1 功能目标 25
2.1 计划安装 25
第2章 InstallShield使用入门 25
2.1.3 文件组、部件和安装类型 26
2.2 创建安装程序 28
第3章InstallScript语言简介 44
3.1 InstallScript程序结构 44
3.2 InstallScript安装脚本 45
3.2.1 保留字 46
3.2.2 语言关键字 46
3.2.3 基于事件的脚本和过程性脚本 46
3.2.7 函数块 47
3.2.6 程序块 47
3.2.5 声明 47
3.2.4 安装脚本的结构 47
3.2.8 事件处理函数块 48
3.3 安装脚本语法 48
3.3.1 标识符 48
3.3.2 标点符号 48
3.3.3 嵌入引号标记 48
3.3.4 编码长的串文字 49
3.3.5 使用空白符 49
3.3.6 写注释 50
3.4 预处理语句 50
3.4.1 命令行编译器 51
3.4.2 _FILE_保留标识符 53
3.4.4 预编译指令 54
3.4.3 _LINE_保留标识符 54
3.4.5 通过预编译命令调试脚本 58
3.5 数据 58
3.5.1 数据类型 58
3.5.2 匈牙利命名法 59
3.5.3 常量和变量 60
3.5.4 全局变量和局部变量 62
3.5.5 字符串 63
3.5.6 结构 66
3.5.7 指针 68
3.5.8 链表 69
3.6.1 算术运算符 76
3.6 运算符 76
3.6.2 赋值运算符和赋值表达式 77
3.6.3 关系运算符 78
3.6.4 逻辑运算符 78
3.7 流程控制 79
3.7.1 if语句 79
3.7.2 switch...endswitch语句 81
3.7.3 循环语句 82
3.8 函数 84
3.8.1 概述 84
3.8.2 自定义函数的声明和定义 85
3.8.3 BYREF参数和函数的返回值 86
3.8.4 使用DLL函数 87
3.9.1 文件基本操作 89
3.9 文件和文件夹的一般操作 89
3.9.2 文件夹与路径操作 93
3.10 常用对话框操作 95
3.10.1 内建对话框和Sd对话框 95
3.10.2 信息显示对话框 96
3.10.3 获取用户数据对话框 102
3.10.4 改变对话框标题 104
3.10.5 安装类型对话框 105
3.10.6 安装组件对话框 105
3.10.7 重新启动对话框 106
第4章 InstallShield事件处理函数 108
4.1 全局事件处理函数 108
4.1.1 数据移动之前发生事件处理函数 108
4.1.2 数据移动时发生事件处理函数 111
4.1.3 数据移动之后发生事件处理函数 112
4.2 组件事件处理函数 112
4.3 其他事件处理函数 113
第5章 文件处理 118
5.1 文本文件处理 118
5.1.1 创建新文件 119
5.1.2 打开文件 119
5.1.3 从文件中读取数据 119
5.1.4 往文件中写数据 120
5.1.5 关闭文件 120
5.1.6 比较字符串 120
5.1.10 把一个字符串(数字)转化为数字(字符串) 121
5.1.9 在文本文件中插入和删除一行 121
5.1.7 比较两个文件 121
5.1.8 在文本文件中查找一个字符串 121
5.1.11 改变一个字符串的大小写 122
5.1.12 在一个字符串中查找另一个字符串 122
5.1.13 从一个字符串中获得一个子字符串 122
5.1.14 解析一个字符串 122
5.1.15 从路径字符串中移走末尾的反斜杠 122
5.2 二进制文件处理 123
5.2.1 设置文件模式 123
5.2.2 创建新文件 123
5.2.3 打开文件 123
5.2.4 从文件中读取数据 123
5.2.7 移动文件指针 124
5.2.8 从字符串中读一字节 124
5.2.5 往文件中写入数据 124
5.2.6 关闭文件 124
5.2.9 往字符串中写入一字节 125
5.3 批处理文件的控制 125
5.3.1 EZ函数和高级批处理函数 125
5.3.2 Autoexec.bat文件 125
5.3.3 InstallScript EZ批处理文件函数 126
5.3.4 InstallScript高级批处理文件函数 126
5.3.5 Share.exe和Vshare.386 127
5.3.6 批处理文件的操作 131
5.4系统配置(configuration)文件的控制 133
5.4.1 EZ函数和高级配置函数 134
5.4.2 配置文件的操作 135
5.5 INI文件的控制 137
5.5.1 InstallScript初始化文件函数 137
5.5.2 Setup.ini文件 138
5.5.3 对ini文件进行操作 138
第6章 修改Windows注册表 141
6.1 检查注册表键值 143
6.2 新建和删除注册键 144
6.2.1 在脚本中创建新键 144
6.2.2 在IDE中创建注册表入口 149
6.2.3 删除一个键 151
6.3 从注册表中获取信息 152
6.4 设置注册表信息 155
6.5 删除注册表键值 159
6.6 获取和设置远程注册表信息 161
6.7 注册文件扩展名 162
6.8 合并注册文件 162
6.9 把.reg文件引入注册表集 163
6.10 Windows NT注册表操作 163
6.11 在Windows NT中设置环境变量 164
6.12 关联一个注册表集与文件组 165
6.13 运行时设置注册表 166
6.14 注册表与字符串表入口 167
第7章 设计用户安装界面 169
7.1 主安装窗口 169
7.1.1 主界面元素 169
7.1.2 用于设置主安装窗口的函数 170
7.1.3 设定主安装窗口的大小 172
7.1.4 动态指示安装进度 172
7.1.5 显示进度指示器 172
7.1.6 防止颜色失真 173
7.1.7 界面设计的常用原则 174
7.1.8 设置背景颜色和模式 176
7.1.9 主安装窗口的背景和标题设置 176
7.1.10 显示特殊符号 177
7.1.11 保存安装程序中使用的资源文件 177
7.1.12 显示启动画面 178
7.1.13 在启动消息中显示公司名称 178
7.2.2 使用透明图片 180
7.2.1 使用元文件作为图像 180
7.2 位图和公告牌 180
7.2.3 显示具有特殊效果的位图和公告牌 181
7.2.4 显示公告牌 181
7.2.5 在Sd对话框中显示替代的位图 182
7.2.6 加载位图中的错误分析 183
7.2.7 根据目标屏幕分辨率放置位图 183
7.2.8 在对话框中显示一个位图 184
7.2.9 在安装程序中访问位图 184
7.2.10 删除一个位图 184
7.2.11 命名公告牌 185
7.2.12 公告牌的转移 185
7.3.3 显示Windows95风格的对话框 186
7.3.2 为安装程序显示和增加进度指示器 186
7.3.1 在主窗口中显示对话框 186
7.3 对话框 186
7.4 多媒体效果 187
7.4.1 在安装程序中显示影像 187
7.4.2 在安装程序中播放声音 187
7.4.3 在主窗口中播放影像 187
7.4.4 在安装程序运行中播放影像 188
7.4.5 在安装程序中播放背景音乐 188
7.4.6 停止安装以播放声音 188
7.5 定制对话框 189
7.5.1 创建定制对话框 189
7.5.2 处理对话框和控件的消息 191
7.5.3 相关的InstallScript处理定制对话框的函数 196
7.5.4 创建和使用定制对话框实例 204
第8章 安装项目 208
8.1 安装项目示例 208
8.2 Setup.exe文件和命令行开关 208
8.3 为新安装项目设定文件夹 210
8.4 创建安装项目 212
8.5 复制项目或模板作为新项目 213
8.6 向项目添加语言或操作系统 215
8.7 重新命名一个项目 216
第9章 安装文件 217
9.1 概述 217
9.1.1 组织应用程序文件 217
9.1.2 传输文件 217
9.2.1 指定扫描选项并开始扫描 218
9.2 找出依赖文件 218
9.2.2 执行扫描并记录结果 220
9.2.3 比较记录文件与安装项目文件 221
9.3 文件组 223
9.3.1 安装共享文件 223
9.3.2 安装自注册文件 223
9.3.3 安装锁定(in use)文件 224
9.3.4 创建文件组 226
9.3.5 把文件组织成文件组 227
9.3.6 标记应用程序文件为语言相关 229
9.3.7 把文件组与部件相关联 230
9.3.8 删除一个文件组 231
9.3.10 使文件组中的文件不被压缩 232
9.3.9 从文件组中删除一个文件 232
9.3.11 在编译时指定文件组中文件的位置 233
9.3.12 使用Wild card指定一个文件组中的文件连接 234
9.4 部件 235
9.4.1 在部件对话框中显示图标 235
9.4.2 调用多文件传输函数和多文件媒体库(file media libraries) 236
9.4.3 创建部件和子部件 236
9.4.4 建立一个文件组与部件的关联 237
9.4.5 建立一个部件与安装类型的关联 237
9.4.6 给一个部件添加口令保护 238
9.4.7 指定一个不压缩的文件放在文件夹中 239
9.4.8 文件媒体库的口令 239
9.4.10 在进度指示条中为部件显示消息 240
9.4.9 对话框中显示部件的描述 240
9.4.11 基于版本或数据有条件地覆盖文件 241
9.4.12 删除一个部件 242
9.4.13 为一个部件选择一个目标文件夹 242
9.4.14 从部件中分离一个文件组 243
9.4.15 标记一个部件为关键的、高度推荐的或标准的 243
9.4.16 在部件面板中重新组织部件 244
9.5 InstallShield对象 244
9.5.1 对象的状态码 244
9.5.2 向安装项目添加一个对象 245
9.5.3 建立一个对象和部件的关联 246
9.5.4 修改一个对象的设置 246
9.5.7 把脚本定义的文件夹告诉一个对象 247
9.5.5 重新命名一个对象 247
9.5.6 删除一个对象 247
9.6 安装类型 248
9.6.1 安装类型的选择 248
9.6.2 建立一个部件与安装类型的关联 248
9.6.3 在SdSetupTypeEx的描述域显示文本 249
9.6.4 为安装类型命名 250
9.7 安装脚本函数调用 250
9.7.1 InstallScript部件函数 250
9.7.2 选择部件函数 254
9.7.3 脚本创建的部件集与文件媒体库 254
9.7.4 在函数调用中指定部件和子部件 255
10.1 创建一个对象 256
第10章 对象的创建和使用 256
10.2 对象的开发 264
10.2.1 创建一个对象 264
10.2.2 对象设计 265
10.2.3 建立一个对象 265
10.2.4 测试对象 266
10.2.5 分发对象 266
10.3 对象的设计 266
10.3.1 对象设计概述 266
10.3.2 管理组件 267
10.3.4 创建一个设计时的向导 268
10.3.3 管理文件 268
10.3.5 将设计对象时的环境本地化 269
10.3.6 国际化用户的对象 269
10.3.7 属性和方法 270
10.4 测试对象 277
10.5 分发对象 279
10.6 对象脚本 281
10.6.1 不支持的函数 281
10.6.2 不支持的常量 281
10.6.3 对象特有的函数 282
10.6.4 在对象中使用系统变量 284
10.6.5 使用脚本定义目标位置 284
11.1 从网络服务器上运行安装程序 285
11.1.1 SMS Support 285
第11章 网络安装盘的制作 285
11.1.2 注册表函数 286
11.1.3 长文件名 286
11.2 Setup.exe和命令行参数 286
11.3 Windows NT安全权限对安装的影响 286
11.4 静默安装 287
11.4.1 概述 287
11.4.2 创建静默安装的步骤 288
11.4.3 创建安装程序 288
11.4.4 创建响应文件 288
11.4.5 回放静默安装 290
11.4.6 核对错误 290
11.5 在安装脚本中指定UNC路径 291
11.6.1 调用RegDBConnectRegistry函数连结到远端注册表 292
11.6 获取或设置远端注册表中的信息 292
11.6.2 调用RegDBDisConnectRegistry函数以关闭连接 293
11.7 创建安装和反安装.mif文件 295
11.7.1 创建安装.mif文件 295
11.7.2 创建反安装.mif文件 296
第12章 创建程序文件夹 297
12.1 创建程序文件夹相关函数 297
12.2 向控制面板中添加图标 301
12.2.1 16位程序 301
12.2.2 带有.cpl文件的32位程序 301
12.2.3 不带有.cpl文件的32位程序 301
12.2.4 Control.ini 301
12.4 获得程序文件夹的列表 302
12.3 检测当前的外壳 302
12.2.5 向注册表中的MMCPL键添加一个入口 302
12.5 创建程序文件夹 303
12.6 删除一个程序文件夹 304
12.7 对程序文件夹的操作 305
12.7.1 向程序文件夹添加程序项 306
12.7.2 删除程序项 306
12.7.3 获得关于程序项信息 306
12.7.4 替换程序项或者改变它的属性 306
12.8 在文件组与IDE创建的程序项或图标之间建立关联 307
12.9 设置程序文件夹名为脚本定义值 308
第13章 建立分发媒体 310
13.2 删除一个媒体 311
13.1 可再次分发的文件 311
13.3 为媒体文件指定位置 312
13.4 在一个盘中预留空间 313
13.5 使文件不压缩地放在CD-ROM上 314
13.6 为分发媒体指定一个定制的大小 316
13.7 为整个文件媒体库添加口令保护 317
13.8 为分发创建一个单独的可执行文件 317
13.8.1 在IDE中建立一个单独的可执行文件 318
13.8.2 使用Package For The Web Wizard 319
13.9 在网页上分发安装项目 322
14.2.2 反安装概述 324
14.2 维护安装和反安装 324
14.2.1 维护安装概述 324
第14章 重新启动、安装和反安装 324
14.1 重新启动安装程序 324
14.2.3 反安装删除的内容 325
14.2.4 反安装需要的文件 325
14.3 反安装记录文件 325
14.3.1 反安装记录的内容 325
14.3.2 传输文件的函数 326
14.3.3 处理文件夹的函数 333
14.3.4 创建程序文件夹和图标的函数 337
14.3.5 更改初始化(.ini)文件的函数 343
14.4 反安装初始化文件(.ini)入口 346
14.4.1 AddProfString 346
14.4.2 ReplaceProfString 347
14.5.1 让用户运行维护安装 348
14.4.3 WriteProfString 348
14.5 应用维护安装程序和反安装程序 348
14.5.2 运行反安装 349
14.5.3 设置反安装功能 349
14.5.4 基于事件的脚本 349
14.5.5 过程性脚本 349
14.5.6 防止反安装删除正在运行的程序 350
14.5.7 防止反安装含有值或子键的注册表键 350
14.5.8 防止反安装不是本安装程序所创建的子文件夹 351
14.5.9 防止反安装一个注册表值 352
14.5.10 防止反安装一个文件 353
14.5.11 防止反安装某一个快捷方式 354
15.1 本地化安装程序注意事项 356
第15章 本地化安装程序 356
15.3 在安装文件面板中放置资源文件 357
15.2 选择安装程序以哪种语言运行 357
15.4 获得目标系统信息 358
15.5 决定目标系统默认语言 363
15.6 选择安装语言 364
15.7 设置默认的安装语言 366
15.8 让用户选择要安装的语言 367
15.9 包括本地化InstallShield文件 368
15.10 过滤语言相关文件 368
15.10.1 标记语言相关文件组 368
15.10.2 过滤语言文件 369
15.11 为语言建立字符串表 370
15.10.3 包括相关文件组 370
第16章InstallShield的功能扩展 371
16.1 概述 371
16.2 对外部函数的要求 371
16.3 调用扩展资源 372
16.3.1 调用一个DLL函数 372
16.3.2 调用一个Windows API 373
16.3.3 启动另一个安装程序 373
16.3.4 启动另一个应用程序 376
16.3.5 使用一个COM对象 376
17.1.1 检查逻辑错误 379
17.1.2 解决逻辑错误 379
第17章 调试安装脚本 379
17.1 调试安装脚本 379
17.2 脚本窗口 380
17.2.1 语法着色提示 381
17.2.2 执行点 381
17.2.3 使用步控制(Step controls) 381
17.2.4 使用断点 381
17.2.5 检查、监视和修改变量 381
17.2.6 跟踪用户自定义函数 382
17.2.7 单步执行用户自定义函数 382
17.2.8 设置断点 382
17.2.10 清除一个断点 383
17.2.11 检查一个变量 383
17.2.9 执行到一个断点 383
17.2.12 监视一个变量 384
17.2.13 改变变量的值 385
17.2.14 监视内建函数返回值 385
17.2.15 在Watch窗口中删除一个变量 385
17.2.16 停止无限循环中的脚本 385
17.2.17 与脚本编辑器一起使用调试器 386
17.2.18 调试安装程序 386
17.3 故障分析 387
17.3.1 常见脚本错误 387
17.4 调试时解决问题的措施 389
17.4.1 驱动程序 389
17.4.2 减少错误产生 390
17.4.3 其他措施 390