InstallShield 7.0 脚本学习之路
本人因工作需要,学习了一下Installshield的脚本,现写一下需求与解决方法:
- 在安装和升级时显示不同的Components(或者说是Feature)
- 文件拷贝与进度条同步显示
- 执行可执行程序(exe)
- 函数执行顺序
- 文件复制
在安装和升级时显示不同的Components(或者说是Feature)
这种情况可以通过SdAskOptionsList函数的不同参数来实现,这个函数创建一个对话框,供用户选择需要安装的组件。第三个参数默认为”“时,表示显示所有visible为yes的组件。否则,显示指定的组件,关于指定方法,是直接将第三个参数设置为所需显示组件的父组件。例如第三个参数为A,则显示A下一级的所有visible为yes的组件。
注意!!!当某个Components的visible属性被设置为No,或者通过SdAskOptionsList函数的参数控制不显示某个Components时,不显示的Components默认是安装的。即假如总共有4个Components,如果用户选择的时候只显示了2个,那么另外两个默认安装。
另外,添加的文件组的文件只能通过Features来进行赋值安装,即通过安装组件来实现文件的拷贝,无法自主操作文件组的文件。
文件拷贝与进度条同步显示
文件拷贝:
XcopyFile:支持拷贝多个文件
CopyFile:将一个文件从某个文件夹拷贝到另一个文件夹
进度条同步显示:
1.调用SdStartCopy
2.调用SetStatusWindow
-SetStatusWindow函数介绍
语法:SetStatusWindow (nPercent, szString);
说明:SetStatusWindows函数为进度指示器(状态条)设置完成指示器的百分比的初始值或当前值,并指定在进度指示器(状态条)最高行显示的当前消息。
通过调用ComponentTransferData或ComponentMoveData来传输文件的安装必须在文件传输开始之前调用SetStatusWindows,这是为了设置完成指示器百分比为0%而且清除指示器最高行。不再需要另外调用SetStatusWindows。每一个组件的文件被装入时,该组件的 ‘状态文本’字符串会在状态条最高行自动显示。
使用CopyeFile或XcopyFile函数装入文件的安装程序在相继调用CopyFile或XcopyFile之间,可能需要多次调用SetStatusWindows来改变指示器最高行的信息。
在传输文件前,你的安装程序还应该调用StatusUpdate函数激活文件传输过程中百分比完成指示器的自动更新。为了使得在状态条第二行显示正被安装文件的名称和路径,需在传输文件前带参数INDVFILESTATUS来调用Enable函数。在这些调用后,百分比完成指示器在文件传输过程中被平滑更新,每个文件的文件名在被传输时将显示。
参数:
nPercent
指定0到100之间的一个数值来表示百分比完成指示器显示的百分比。若要改变显示在状态条最高行的信息而不改变百分比完成指示器,则指定该参数为-1。
szString
指定显示在状态条最高行的字符串。注意如果一个’DisplayText’参数已被指定给该组件(在IDE中),那么当调用ComponentTransferData时该字符串将自动改写任何该参数指定的文本。
返回值:该函数没有返回值。
3.设置enableÿ