Archive for 09月, 2006

(转)ScriptControl控件的用法

ScriptControl控件的用法

Microsoft(R) Script 控件使用户可以创建运行任何 ActiveX(R) scripting 引擎,例如 Microsoft(R) Visual Basic 
(R) Scripting Edition 或Microsoft(R) JScript(TM) 的应用程序。用户可以将任何 Automation 对象的对象模型添加 
到 Script 控件中,这样该对象的方法和属性就可以为 scripting 引擎所使用。通过将某个应用程序的对象模型和某个 
scripting 引擎加以综合,用户就可以创建一个结合了两方面优点的 scripting 应用程序。应用程序不但具有 
scripting 语言的简单化特点,而且综合了一种更高级、具有完整特性的专业应用程序的对象、方法,以及属性。 
创建 Script 控件的实例 
Microsoft Script 控件可作为一个控件或者作为一个独立的 Automation 对象创建出来。该特性可以使得用任何语言书写 
的应用程序都可以用 ScriptControl 宿主任何兼容的 scripting 语言。 
下面的示例可使用任意格式。请注意变量 sc 并未声明为类型 ScriptControl,因为该控件不是,也不必要是工程中所引 
用的。只要 Script 控件出现并进行注册,下面的代码就可正常工作: 

Private Sub Command1_Click() 
Dim sc 
Dim strProgram As String 
strProgram = ”Sub Main” & vbCrLf & _ 
“MsgBox ””Hello World””” & vbCrLf & _ 
“End Sub” 
Set sc = CreateObject(”ScriptControl”) 
sc.language = ”VBScript” 
sc.addcode strProgram 
sc.run ”Main” 
End Sub 
如果用户在自己的工程中的引用中对 Script 控件进行显式引用,那么用户就可以用下面的代码创建 Script 控件的一个 
实例: 
Dim sc As ScriptControl 
显示用户接口元素 
AllowUI 属性决定了 scripting 引擎是否可以显示用户接口元素。这可以应用于 Script 控件本身,例如显示超时消息。 
这也可以应用于使用 ActiveX scripting 接口的 scripting 引擎。例如,下面的代码将在试图显示 Hello World 消息框 
时产生一个错误: 
ScriptControl1.AllowUI = False 
Dim strX As String 
strX = ”Sub Hello” & vbCrLf & _ 
“MsgBox ””Hello World””” & vbCrLf & _ 
“End Sub” 
ScriptControl1.AddCode strX 
ScriptControl1.Run ”Hello” ’ 没有允许的 UI! 
创建 Scripting 代码 
Microsoft Script 控件使用户可以创建一个运行 scripting 语言,例如 VBScript 或 JScript 的应用程序。例如,假设 
用户在窗体上有一个按钮,用户希望在按下该按钮时运行某些 VBScript 代码。该按钮称为 Run NameMe,而用户希望 
scripting 代码运行一个叫 NameMe 的过程。意图是当用户单击 Run NameMe 按钮时,VBScript scripting 引擎执行 
NameMe 过程。 
这个 Run NameMe 按钮使用 Script Control 的 Run 方法来执行脚本。下面就是应当出现在 Run NameMe 按钮的 Click 
事件中的代码: 
‘ Script Control 的名字是 ScriptControl1。 
Private Sub RunNameMe_Click() 
ScriptControl1.Run ”NameMe” 
End Sub 
为了创建该脚本所需要代码的其余部分,请选择一种 scripting 语言,并将代码添加到某个过程中,然后运行该过程。 
选择一种 Scripting 语言 
第一步是为 Script Control 配置正确的 scripting 语言。当在某页上作为控件创建 Script Control 时,Language 属 
性就被自动初始化为 ”VBScript”。当作为一个 Automation 对象来创建 Script Control 时,则 Language 属性留作未初 
始化的状态,而必须由代码作者对其进行设置。 
若要将 Language 属性设置为 JScript,可使用 Properties 窗口。用户也可以在代码中使用 Language 属性,如下所 
示: 
ScriptControl1.Language = ”JScript” 
其他 scripting 语言,例如 PERL 和 REXX,都不是由 Microsoft 所提供的,也可以为 Script 控件所用。 
将代码添加到某个过程中 
在用户运行 NameMe 过程之前,可使用 AddCode 方法将完整的过程添加到 Script 控件中。如果用户试图将一个不完整的 
过程(一个没有 End Sub 或者 End Function 的过程)添加进去,则将会出错。下面的代码将过程代码添加到 Script 
Control 中: 
‘ 当 ScriptRun 应用程序加载时,添加下面的代码 
‘ 将 NameMe 过程添加到 Control 中。 
Private Sub Form_Load() 
Dim strCode As String 
strCode = ”Sub NameMe()” & vbCrLf & _ 
“ Dim strName As String” & vbCrLf & _ 
“ strName = InputBox(””Name?””)” & vbCrLf & _ 
“ MsgBox ””Your name is ”” & strName” & vbcrLf & _ 
“End Sub” 
ScriptControl1.AddCode strCode 
End Sub 
另外,用户也可以从某个 TextBox 控件添加过程代码: 
Private Sub Form_Load() 
‘ 该代码包含在名为 frmScript 的窗体上 
‘ 名为 txtScript 的 Textbox中。 
ScriptControl1.AddCode frmScript.txtScript.Text 
End Sub 
用户可以将参数添加到某个过程或者函数中。 
Private Sub EvalFunc() 
‘ 创建函数。 
Dim strFunction As String 
strFunction = _ 
“Function ReturnThis(x, y)” & vbCrLf & _ 
“ ReturnThis = x * y” & vbCrLf & _ 
“End Function” 
‘ 添加代码,然后运行该函数。 
ScriptControl1.AddCode strFunction 
MsgBox ScriptControl1.Run(”ReturnThis”, 3, 25) 
End Sub 
运行过程 
Run 方法运行任何已被添加到 Script 控件中的完整过程。下面的代码段运行三个已定义过程: 
ScriptControl1.Run ”FindName” 
ScriptControl1.Run ”AddName” 
ScriptControl1.Run ”Quit” 
执行 Scripting 语句,并计算结果 
用户可以用 ExecuteStatement 方法执行一条 scripting 语句。用户可以用 eval 方法计算某个表达式值。在下面的示例 
中,用 ExecuteStatement 方法将值 100 赋给变量 x。下面的两行用 eval 方法来测试语句 x = 100 和 x = 100/2。第 
二行返回 True;而第三行则返回 False。 
Private Sub TryThis() 
ScriptControl1.ExecuteStatement ”x = 100″ 
MsgBox ScriptControl1.Eval(”x = 100″) ’ 返回 True 
MsgBox ScriptControl1.Eval(”x = 100/2″) ’ 返回 False 
End Sub 
使用 Error 属性 
Script 控件错误有两个可能来源:Script 控件自身,或者该控件试图运行的 script。为了对 scripting 代码进行调 
试,可使用 Error 属性,该属性返回对 Error 对象的引用。利用 Error 对象,Script 控件可以返回错误数目和对它的 
描述,以及错误在 script 中出现的行号。 
运行下面的代码,查看 Script 控件发现错误的一个示例: 
Private Sub MyError() 
‘ 下面的代码被零除导致 
‘ 一个错误。 
Dim strCode As String 
strCode = _ 
“Sub DivideByZero()” & vbCrLf & _ 
“Dim prime” & vbCrLf & _ 
“prime = 3″ & vbCrLf & _ 
“MsgBox prime/0″ & vbCrLf & _ 
“End Sub” 
On Error GoTo scError 
With ScriptControl1 
.AddCode strCode 
.Run ”DivideByZero” 
End With 
Exit Sub 
scError: 
‘ 使用 Error 对象向用户通告 
‘ 错误,以及出错行。 
Debug.Print ScriptControl1.Error.Number & _ 
“:” & ScriptControl1.Error.Description & _ 
“ in line ” & ScriptControl1.Error.Line 
Exit Sub 
End Sub

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

(整)InstallShield内部库函数全集一(中文版)

InstallShield内部库函数全集一(中文版)

目录
1. 库函数综述
2. 用户界面函数
3. 信息函数
4. 内部对话框函数
5. Sd对话框函数
6. 自定义对话框函数
7. 组件函数
8. 文件配置函数
9. 文件和文件夹函数
10. 长文件名函数
11. INI文件函数
12. 共享和锁定文件函数
13. 字符串函数
14. 路径缓冲函数
15. 注册表函数
16. 列表处理函数
17. 外壳函数
18. 扩展函数
19. 批处理函数
20. 卸载函数
21. 版本检测函数
22. 杂项函数

下载整个文档

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

InstallShield内部库函数全集一(1)

InstallShield内部库函数全集一(1)
1.库函数综述
InstallShield包含300多个内部库函数,用户可在安装脚本中调用它们来创建程序组,操作文件夹,处理目录,监督安装状态,创建对话框,操作文件及其它更多工作。因为InstallShield脚本编译器已经识别这些库函数名,所以用户在使用它们之前无须说明。
为了成功调用一个内部库函数,用户必须知道库函数名称及使用格式。InstallShield 库函数参阅附录D库函数索引。在接下去的几节中我们将对其中主要的一些库函数作详细介绍。在这里先简单向用户描述一下库函数的构成。
如:AskYesNo是一个库函数,它在对话框中显示一个询问,然后等待最终用户通过点击按扭来响应,Yes或No。AskYesNo格式如下: AskYesNo(szQuestion,nDefault)。这个格式显示了正确的函数名,括号中显示了函数的参数列表。在函数的详细说明帮助中,每个参数用匈牙利标记法表示,指出每个参数位置上可被接受的数值类型。AskYesNo要求两个参数:第一个是字符类型,第二个是数值型。
与C语言一样,InstallShield区分大小写,因此用户要严格注意库函数名称中大写字母。
在用户的脚本中使用任何库函数,传递的参数数目一定要正确,并且要确保传递的每个参数值符合该位置规定的类型。如果用户传递了错误的参数数目或者在任何一个或几个参数位置传递了不相符的数值类型,脚本都不能被编译。
注意:
.作为参数传递的字符串必须包括在单引号或者双引号内。
如:“Please wait while files are transferred”,或‘This is a string’或“c:\\Myfolder\\myfile.txt”
.InstallShield 不允许将一个赋值语句作为参数传递。另外,用户在一个函数变量中不能使用&&或||运算符。
.由一个调用传递给一个函数的可变长字符串变量在被调用函数中不能自变长。如果函数试图赋一个值,该值的长度超过参数的现有长度,则会发生401运行错误。为避免这个错误,在调用将字符串传递给一个函数时就要为字符串指定一个特定长度。

InstallShield内部库函数全集一(2)

InstallShield内部库函数全集一(2)

2 用户界面函数
用户界面函数允许用户自定义特定的错误信息及错误框标题。然而,一些在安装开发中遇到的内部错误信息是不能由用户界面函数来修改的。这部分主要对用户界面函数的语法、描述、参数等作详细说明。
 2.1  Disable函数
语法:Disable(nConstant)
说明:Disable函数使由参数nConstant指定的用户界面对象或安装特性无效。
参数:
nConstant
指定用户界面对象或可操作特性使其无效,在这个参数位置传递下列预定义常量之一:
BACKBUTTON:使在一些内部对话框中显示的Back按钮无效(即使其变灰显示),Back按钮缺省置为有效。
BACKGROUND:使安装主背景窗口无效且隐藏。注意:当安装处于全屏幕方式时该参数不起作用。
BILLBOARD:在安装过程中取消布告板的显示。
DIALOGCACHE:使对话缓冲机制无效。有关对话缓冲的详细说明,请参阅Enable。
HOURGLASS:使光标由一个“忙”光标(缺省为沙漏光标)改变为标准光标(缺省为一个指针)。
INDVFILESTATUS:使路径及文件名在文件传输时不显示在进度指示器(状态条)中。
LOGGING:不记录卸载信息,使信息不记录在卸载日志文件中。注意:记录功能由函数DeinstallStart自动置为有效。在调用DeinstallStart之前置记录卸载信息无效将不起任何作用,因为当DeinstallStart被调用时,记录功能将被自动激活,用户必须就在不应被记录的卸载操作执行之前手控禁止记录。
NEXTBUTTON:使一些内部对话框的Next按钮无效(使其变灰显示)。Next按钮缺省置为有效。
SELFREGISTERBATCH:使注册自注册文件的批处理方法无效。详细说明请参阅Enable。
SATAUS:使标准进展指示器(状态条)无效且隐藏。
STATUSDLG:使对话框形式的进展指示器(状态条)无效且隐藏。
STATUSEX:禁止以显示安装状态对话框来取代进度指示器(状态条)。
STATUSOLD:使原风格的进度指示器(状态条)无效且隐藏。
返回值:
 0:说明函数成功禁止了由参数nConstant指定的用户界面对象或安装特性。
<0:说明函数未能禁止由参数nConstant指定的用户界面对象或安装特性。
注解:
?如果用户的脚本中调用Disable函数来禁用Next或Back按钮,那么在函数被调用后的所有对话框中该按钮均被禁用,为激活Next或Back按钮,用户需带相应的常量来调用Enable。
?DIALOGCACHE在没有Next 或Back按钮的对话框中不起作用。
2.2  Enable函数
语法:Enable (nConstant);
说明:Enable函数激活由参数nConstant指定的用户界面对象或安装特性。
参数:
nConstant
指定你要激活的用户界面对象或操作特性。在该参数位置传递下列预定义常量之一:
BACKBUTTON:激活显示在一些内部对话框中的Back按扭。缺省时Back按扭是被激活的,但可以通过调用Disable函数来禁用它。
BACKGROUND:当安装是在窗口方式时,显示安装主背景窗口。当安装是缺省的全屏幕方式时,该常量没有作用。为激活窗口方式,你必须以常量DEFWINDOWMODE或 FULLWINDOWMODE来调用Enable。
DEFWINDOWMODE:配置主背景窗口为一个有标题栏的标准窗口。如果背景窗口被激活,它的外观将会立即改变。如果背景窗口被禁用,屏幕不会被修改直到带常量BACKGROUND调用Enable时。
DIALOGCACHE:激活对话框缓冲机制,它可以消除在显示对话框之间出现的屏幕闪烁。这种屏幕闪烁在运行于窗口方式的安装的标题栏中特别明显。注意对话框缓冲机制仅工作于有BACK和NEXT按扭的对话框。缺省时对话框缓冲被禁用。
FULLWINDOWMODE:设置主背景窗口为一个有标题栏的最大化窗口。如果背景窗口被激活,它的外观将会立即改变。如果背景窗口被禁用,屏幕不会被修改直到带常量BACKGROUND来调用Enable时。
HOURGLASS:使光标改变为“忙”光标,缺省为一个沙漏光标。
INDVFILESTATUS:当调用ComponentTransferData、 CopyFile、 或XcopyFile并且进度指示器被激活时,激活显示每个文件的全限定名(在进度指示器的第二行中显示)。注意,在一个运行基于事件的脚本的安装程序中,ComponentTransferData被自动调用。
LOGGING:激活存入卸载记录功能。当存入功能被激活时,InstallShield存入的卸载记录的操作结果将被记录在卸载日志文件中,并将在卸载过程中被反向。自动调用DeinstallStart激活存入功能;因此,你不需要手动激活存入功能除非你先前用Disable函数禁用了它。
NEXTBUTTON:激活显示在一些内部对话框中的Next按扭。Next 按扭缺省为激活。
SELFREGISTERBATCH:激活注册自注册文件的批处理方法。该方法使用来避免和自注册文件相关联的依赖性问题。缺省为标准(非批处理)自注册。
    有关批处理方法的更多信息如下:
?在文件组窗格中,高亮显示你的自注册文件的文件组文件夹。它的属性表在打开在右边。
?双击Self-Registered域,则自注册页打开。
?选择"Yes, all the files in this file group are self-registering"单选钮。
?打开你的安装脚本(在Scripts窗格中找到Setup.rul)。
` 在你传输文件前,以SELFREGISTERBATCH选项调用Enable函数。所有自注册文件放在一个内部队列中,也就是,当它们被安装时它们会被立即注册。(在一个使用基于事件脚本的安装程序中,OnBegin处理程序被调用前,Enable(SELFREGISTERBATCH)会被自动调用。)
传输文件后,以SELFREGISTRATIONPROCESS选项调用Do函数。当你调用Do(SELFREGISTRATIONPROCESS)时,InstallShield注册所有自注册文件。如果当Do被调用时,系统变量BATCH_INSTALL等于TRUE(表明需要一个重启来完成该安装),则注册自注册文件被延迟到重启后。
  在你调用Do(SELFREGISTRATIONPROCESS)后,你可以检查自注册是否成功。如果因任何原因Do失败了,它会返回-1。那些自注册失败的文件的名称被保存在系统变量ERRORFILENAME中,由一个分号分隔。
例如,下列代码将所有自注册文件注册在文件媒体库中。
// Enable batch method to queue self-registering files.
Enable ( SELFREGISTERBATCH );
// Install files.
nResult = ComponentTransferData( MEDIA );
// Register the files, check for errors.
if Do ( SELFREGISTRATIONPROCESS ) < 0 then
szMsg = "File(s) failed to self-register: [...]

InstallShield内部库函数全集一(3)

InstallShield内部库函数全集一(3)

3.信息函数
下列信息函数提供操作环境中有效资源的数据:磁盘空间,内存和操作模式:
GetDiskSpace
返回指定磁盘的有效字节数(未使用的)(最高为2GB)。
GetDiskSpaceEx
以bytes、kilebytes、megabytes或gigabytes为单位返回一个磁盘的空闲空间,。
GetEnvVar
返回一个环境变量的当前值。
GetExtents
返回屏幕大小。
GetMemFree
返回运行在Microsoft Windows下的一个应用程序的可用内存。
GetSystemInfo
检索系统信息。
GetValidDrivesList
返回目标系统中所有有效驱动器。
GetWindowHandle
返回主安装窗口的句柄。
Is
提供文件和路径检查服务,查找一个数学协处理器,检测 Windows NT下的管理状态,确定Microsoft Windows是否从网络的共享版本运行。
3.1  GetDiskSpace
语法:GetDiskSpace (szDrive);
说明:GetDiskSpace函数返回指定驱动器上的空闲磁盘空间。
参数:
szDrive
指定一个驱动器指示符(驱动器字符后随一个冒号)。你也可在该参数位置指定一个通用导航计算机路径。
返回值:
XXXX:在指定驱动器上的空闲字节数。最大的返回值是2GB。超过2GB的空闲空间也返回2GB。当你需要检测超过2GB的空闲空间时需调用GetDiskSpaceEx。
< 0:表明GetDiskSpace未能获得空闲磁盘空间值。
3.2  GetDiskSpaceEx
语法:GetDiskSpaceEx (szDrive, nUnits);
说明:GetDiskSpaceEx函数返回指定驱动器的空闲磁盘空间值。传递给nUnits的值确定GetDiskSpaceEx的返回值是以bytes、 kilobytes、 megabytes 或 gigabytes度量。
参数:
szDrive
指定一个驱动器指示符(驱动器字符后随一个冒号)。用户也可在该参数位置指定一个通用导航计算机(UNC)路径。
nUnits
传递下列预定义常量之一来指明度量单位:
BYTES:指明GetDiskSpaceEx须返回空闲byte数。
KBYTES:指明GetDiskSpaceEx须返回空闲kilobyte数。
MBYTES:指明GetDiskSpaceEx须返回空闲megabyte数。
GBYTES:指明GetDiskSpaceEx须返回空闲gigabyte数。
返回值:
XXXX:在指定驱动器上的空闲bytes、kilobytes、megabytes或 gigabytes数,度量单位视nUnits值而定。
< 0:表明GetDiskSpaceEx未能获得空闲磁盘空间值。
3.3  GetEnvVar
语法:GetEnvVar (szParameter, svValue);
说明:GetEnvVar函数检索一个环境变量的当前值。
参数:
szParameter
指定其值要被检索的环境变量的名称。
svValue
返回该环境变量的当前值。
返回值:
0:表明函数检索到环境变量的值。
< 0:表明函数未能检索到环境变量的值。
注解:
?InstallShield没有提供一个改变一个环境变量值的机制。在Microsoft Windows 3.x  和 95环境中,建议用户不要改变环境变量值。如果用户需要设置一个新的环境变量,在Autoexec.bat文件中设置然后重启系统。对于Windows NT,查看如何在Windows NT下设置环境变量。
3.4  GetExtents
语法:GetExtents (nvDx, nvDy);
说明:GetExtents函数检索屏幕大小。屏幕宽以像素点为单位返回给nvDx,高以像素点为单位返回给nvDy。如:一个标准的VGA监控器返回nvDx为640,nvDy为480。
参数:
nvDx
以像素点为单位返回屏幕的宽。
nvDy
以像素点为单位返回屏幕的高。
返回值:
0:表明函数成功检索到屏幕的大小。
< 0:表明函数未能检索到这些值。
3.5  GetMemFree
语法:GetMemFree ( );
说明:GetMemFree函数返回运行在Microsoft Windows下的一个应用程序可用的内存大小。因为Microsoft Windows是一个虚拟内存系统,该函数不会返回实际物理内存(称为RAM)而是Windows应用程序可用的内存。要确定目标系统上可用的实际物理内存大小,可调用GetSystemInfo。
参数:
GetMemFree不带参数。以空参数表调用函数,如下所示:
   GetMemFree();
返回值:
XXXX:XXXX是应用程序可用的空闲内存的字节数。
< 0:GetMemFree未能返回空闲内存的大小。
注解:
?脚本每执行一个函数,InstallShield返回一个数值来指示函数运行结果。如果你要在该脚本后面部分要用到该函数的返回值,则将该值赋给一个数值型变量。
3.6  GetSystemInfo
语法:GetSystemInfo (nItem, nvResult, svResult);
说明:GetSystemInfo函数检索目标系统的信息。
参数:
第一个参数,nItem,用来指定要检索的信息的类型。参照下面这个你可传递给该参数的常量列表来检索系统信息。注意使用特定的常量时(如DISK_TOTALSPACE_EX),你必须在调用该函数前为参数nvResult和/或svResult指定附加信息。
系统信息返回给nvResult和/或svResult。数值型数据返回给nvResult。字符串型数据返回给svResult。下表列出了你可以传递给nItem的各个常量的返回值类型。
——————————————————————————–
nItem:BOOTUPDRIVE
nvResult:启动驱动器的?ID,1=A:,2=B:,3=C:。可以通过给该数值加上64(十进制)将该数字转换为相应的驱动器字符,然后给该值设置一个字符串变量。使用下面的语法进行转换:
svResult[0]=64+nvResult;
svResult:返回启动驱动器的驱动器指示符(驱动器字符后随一个冒号)。
——————————————————————————–
nItem:CDROM
nvResult: TRUE或FALSE指示CD ROM是否可用。
SvResult: N/A
——————————————————————————–
nItem: COLORS
nvResult:返回用户系统可用颜色数目。结果从对目标系统的视频驱动器检索而得,而不是从视频卡得到。如果该卡支持256色但驱动器只能处理16色,返回的颜色值是16。
svResult::N/A
——————————————————————————–
nItem:CPU
nvResult:返回下列常量之一:
IS_UNKNOWN    用户CPU未知。
IS_386           用户有一个386处理器。
IS_486           用户有一个486处理器。
IS_PENTIUM     用户有一个PENTIUM 处理器。
IS_ALPHA        用户有一个ALPHA处理器。
SvResult: N/A
——————————————————————————–
nItem:   DATE
nvResult: N/A
svResult: [...]

InstallShield内部库函数全集一(4)

InstallShield内部库函数全集一(4)
4.内部对话框函数
   下列函数创建简单对话框,如Yes/No对话框和消息框。一些函数允许你简单地显示公用对话框的各种类型。
有Cancel按扭的内部对话框当该按扭被选中时不返回CANCEL(2)值。而是调用当前定义的退出处理程序。
注意:作为缺省,InstallShield  Professional 6以Windows 2000 风格显示最终用户对话框,该风格遵照Windows用户界面的Microsoft的最新准则。为相应显示Windows 95风格的对话框,用户需做下列工作:
通过重命名或移至其它文件夹,将<InstallShield Professional 6文件夹>、Redistributable\Compressed Files\0009-English\Intel 32\_isres.dll备份。
将文件_isres.old 从<InstallShield Professional 6 文件夹>\Program\Migration\0009-English\Intel 32拷贝至<InstallShield Professional 6 文件夹>\Redistributable\compressed Files\0009-English\Intel 32。
改变文件名_isres.old为isres.dll。
单击建立工具栏Build toolbar’的建立当前媒体按钮Build Current Media或从建立菜单选择建立<媒体名称>媒体来建立用户的媒体。
具体函数包括以下这些:
AskDestPath
显示一个要求目标路径信息的对话框。
AskOptions
显示一个对话框,提示最终用户通过复选框或单选钮来选择选项。
AskPath
显示提示最终用户输入一个路径的对话框。
AskText
显示提示最终用户输入文本的对话框。
AskYesNo
显示一个对话框,提示最终用户通过点击Yes或No按扭来响应问题。
ComponentDialog
显示一个对话框,让最终用户选择组件和指定一个目标位置。
EnterDisk
显示一个对话框,提示最终用户一个指定的磁盘。
MessageBox
在对话框中显示一条信息。
RebootDialog
显示一个对话框,使最终用户可以选择重启Windows或重启计算机。
SelectDir
显示一个对话框,允许最终用户选择一个文件夹。当文件夹不存在时SelectDir创建该文件夹。
SelectDirEx
显示一个对话框,允许最终用户选择一个文件夹。
SelectFolder
显示一个对话框,允许最终用户从程序文件夹列表中选择一个文件夹。
SetupType
显示一个对话框,允许最终用户选择典型、简易、自定义安装。
SprintfBox
返回一个由一个或多个字符、数字或字符串值组成的格式化的字符串。
Welcome
显示欢迎信息的对话框。
4.1  AskDestPath
语法:AskDestPath (szTitle, szMsg, svDir, nReserved);
说明:AskDestPath函数显示一个对话框,允许最终用户指定安装中文件安装到的目标文件夹。对话框还包括一个浏览按扭,允许最终用户选择一个存在的文件夹或指定一个新的文件夹。注意最终用户选择的文件夹必须可写;不可写的文件夹不被接受。如果你希望最终用户可以选择不可写的文件夹,可调用AskPath函数。
    为从选择目标位置对话框中打开选择文件夹对话框,最终用户必须点击浏览(Browse)按钮。选择文件夹对话框显示所有有效文件夹列表。最终用户可选择一个存在的文件夹或者输入一个新的文件夹名。如果最终用户输入一个不存在的文件夹名,该文件夹被创建。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择目标位置”),传递一个空字符串给该参数。
szMsg
指定要显示的消息。为在该参数传递多行静态文字,在行需要间断处插入新行转换符序列(\n)。为显示该对话框的缺省指令,传递空字符串(””)给该参数。
svDir
指定打开对话框时显示的缺省路径;返回到达最终用户选择的文件夹的路径。更多信息请看下面的注解。
nReserved
该参数的值必须是0。
返回值:
NEXT (1):表明Next按钮被选中。
BACK (12):表明Back按钮被选中。
注解:
?如果由svDir指定的缺省文件夹不存在于最终用户系统中,它不会被创建,除非最终用户按下选择按钮并且从选择文件夹对话框中按步骤创建它。因此,当用户指定一个希望在调用ComponentTransferData(它在必要时会创建文件夹)前使用的缺省文件夹时,用户必须在AskDestPath返回时调用ExistDir以此来确定文件夹是否存在。如果它不存在,调用CreatDir来在最终用户系统中创建它。注意一个运行基于事件的脚本的安装程序会自动调用ComponentTransferData。
? 运行在静止方式(silent mode)的安装程序,若缺省文件夹不存在,则必须在调用AskDestPath前创建它。
4.2  AskOptions
语法:AskOptions (nValue, szMsg, szText1, bvCheck1, szText2, bvCheck2[, szTextn, bvCheckn] [,..., ]);
说明:AskOptiona 函数格式化并显示提示最终用户选择一个或多个选项的对话框。对话框的缺省标题是“选择组件”。为改变标题栏的内容,在调用AskOptions前调用SetDialogTitle。该对话框将显示多至九个选择控件,复选框或单选钮,根据nValue的值而定。
参数:
nValue
指定要显示的控件。在该参数位置传递下列预定义常量之一:
EXCLUSIVE:指定单选按钮,允许最终用户仅选择一个选项。
NONEXCLUSIVE:指定复选框,允许最终用户选择一个以上的选项。
szMsg
指定在对话框显示的消息。你可以使用该消息来描述选项和/或要求最终用户选择一个或多个选项。如果消息多于一行,使用换行符(\n)插入行的间隔处。
szText1
指定一个最多达47个字母的文本标签,它相邻显示于第一个复选框或单选钮。为建立一个快捷键,在用户为该目的指定的字母前插入一个“与符号”(&)。该字母带下划线显示来指示它的功能。例如,自定义Alt+C为快捷键,传递“&Custom”。自定义Alt+S为快捷键,传递”Cu&stom”。
bvCheck1
指定对话框打开时第一个选择框或单选钮的初始状态;对话框关闭时返回第一个选择框或单选钮的状态。在该参数位置传递下列常量:
TRUE:第一个选择框或单选钮被选。
FALSE:第一个选择框或单选钮未被选中。
szText2
指定相邻显示于第二个选择框/单选钮的最多达47个字母的文本标签。创建一个快捷键的方法同szText1处。
bvCheck2
指定对话框打开时第二个选择框或单选钮的初始状态;对话框关闭时返回第二个选择框或单选钮的状态。在该参数位置传递下列常量:
TRUE:第二个选择框或单选钮被选。
FALSE:第二个选择框或单选钮未被选。
    可以定义多达七个附加选项。每个附加选项由一对参数指示:一个字符串参数定义一个标签和一个数值型变量定义AskOptions返回时的选项状态。为设置一个选项的初始状态,在调用AskOptions前给数值型变量赋值为TRUE 或FALSE。
    若nValue是EXCLUSIVE并且一个以上的选项设置的初始状态设置为TRUE,AskOptions将预选设置为TRUE的参数序列的第一个选项。
返回值:
NEXT (1):表明Next按钮被选。控件的状态由各个bvCheck变量返回。
BACK (12):表明Back按钮被选。控制的状态由各个bvCheck变量返回。
4.3  AskPath
语法:AskPath (szMsg, szDefPath, svResultPath);
说明:AskPath函数指定一个对话框,提示最终用户输入目标位置的路径。对话框包括一个单行编辑区,你可以在此显示一个缺省路径。最终用户有三个选择:
接受缺省路径
编辑缺省路径
显示选择文件夹Choose [...]

InstallShield内部库函数全集一(5-02)

InstallShield内部库函数全集一(5-02)
5.Sd对话框函数
5.19  SdLicense
语法:SdLicense (szTitle, szMsg, szQuestion, szLicenseFile);
说明:SdLicense函数显示一个对话框,包含一个在多行编辑区的许可证协议。许可证协议保存在一个由参数szLicenseFile指定的文本文件中。
    用户可以上下滚动来阅读协议,然后必须选择Yes、No或Enable、Back按钮。因为这可能是你将显示的第一个对话框,你可能要禁止Back按钮。如果用户选择了Yes,安装将继续。如果用户选择了No,InstallShield将显示退出安装对话框。
参数:
szTitle
指定对话框标题。为显示缺省标题(“软件许可证协议”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在多行编辑区上方的静态文本区中的消息。为显示缺省指示,传递一个空字符串。
szQuestion
指定显示在多行编辑区下方的静态文本区中的文本。你可能在这儿放置一个问题,用户必须选择Yes 或 No来响应它。为显示缺省指示,给该参数传递一个空字符串(“”)。
szLicenseFile
指定包含许可证协议的文本文件名。该文件必须被加到安装文件窗格中适当语言文件夹中。
返回值:
YES (1):表明用户选择了Yes按钮。
BACK (12):表明用户选择了Back按钮。
注解:
?该函数不能返回NO,因为,如果用户选择了No按钮,将显示退出安装对话框。
?你也可以通过输入全限定名,在引号中,或一个Universal Naming Convention (UNC)路径来指定szLicenseFile。
?在szLicenseFile中的文本在超过1024个字符的一行后必须包含硬回车。该文件的文本必须以1024字节为间隔读入字符串列表。如果从szLicenseFile的文本不包含硬回车,单词会在SdLicense对话框中意外地回绕。
5.20  SdLoadString
语法:SdLoadString (nID);
说明:SdLoadString函数返回与指定的资源ID相联系的字符串值。安装引擎首先在_isuser.dll(如果该文件存在)中查找资源;如果资源没有找到,安装引擎在_isres.all中查找。
参数:
nID
指定一个在_isuser.dll或 _isres.dll中的字符串资源的标识符。一些nID的有效值可以在InstallShield  Professional  文件夹的 Script\Ifx\Include 的子文件夹的 Ifx.h文件中找到。
返回值:
非空字符串值
SdLoadString成功检索到字符串值。
空字符串值(“”)
表明SdLoadString失败。
5.21  SdMakeName
语法:SdMakeName (svSection, szDlg, szUnused, nvDlgName);
说明:SdMakeName函数为一个自定义对话框创建一个节名。该节名在写到一个.iss文件或从中读出时被使用,由InstallShiled Silent使用。
参数:
svSection
指定节名(InstallShield使用变量szDlg和 nvDlgName来给该变量置一个值)。该值由SilentReadData和 SilentWriteData.使用。
szDlg
指定自定义对话框的名称。
szUnused
该参数不使用,给它传递一个空字符串(“”)。
nvDlgName
指定记录SdMakeName被由szDlg命名的对话框调用的次数的计数器。InstallShield自动增加该计数器。为每个自定义对话框使用一个唯一的变量名。(可参阅下面的注解)
返回值:  无。
注解:
?为使节被适当命名,你必须在每个不同的自定义对话框的第四个参数使用一个唯一的变量名。做到这一点的简单方法是在szDlg使用对话框名来命名该变量。例如,当szDlg是“MyDlgOne”,命名在第四个参数的变量为nvMyDlgOne;当szDlg是“MyDlgTwo”,命名该变量为nvMyDlgTwo。
5.22  SdOptionsButtons
语法:SdOptionsButtons (szTitle, szMsg, listButtons, listDescription);
说明:SdOptionsButtons函数显示一个对话框,包含一到四个位图按钮和一个简短的对每个按钮的文本说明。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择组件”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。为显示该对话框缺省指示(“请选择你要安装的组件”),给该参数传递一个空字符串(””)。
listButtons
指定一个包含一到四个元素的字符串列表。每个元素是一个格式化的指定显示在按钮上的位图的字符串。一个按钮将被用来显示列表中的每个字符串元素。字符串列表元素必须有下列格式:
 “@<位图ID>;<位图图标标志>;<透明颜色>”
由@符号开始字符串并后随位图ID。<位图图标标志>域是1(真)或0(假),表明位图被显示时在<透明颜色>域指定的颜色是否要透明显示。<透明颜色>域指定一个RGB值,它是位图的透明颜色。注意分号将ID和图标标志、图标标志和透明颜色分隔。
更多的信息可参阅下面的注解部分。
listDescription
指定一个包含一到四个字符串元素的字符串列表,每个相对应于参数listButtons中的一个字符串。每个字符串是一个和它相应按钮一起显示的文本说明。
返回值:
NEXT (1):表明单击了NEXT按钮。
BACK (12):表明单击了Back按钮。
101:对应于listButtons中的第一个字符串元素的按钮被选定。
102:对应于listButtons中的第二个字符串元素的按钮被选定。
103:对应于listButtons中的第三个字符串元素的按钮被选定。
104:对应于listButtons中的第四个字符串元素的按钮被选定。
注解:
?虽然SdOptionsButtons可以被使用为一个安装类型对话框,但还是推荐使用SdSetupTypeEx对话框来允许最终用户选择一个安装类型,因为它不需要任何用户化。注意如果你调用SdOptionsButtons来得到最终用户的安装类型选择,你必须然后调用ComponentButtons来为你的安装建立选择的安装类型。
?InstallShield提供可以被该函数调用的四个_isres.dll中的缺省位图。这些位图有从12001到12004的ID和在脚本范例中相应的典型、可移植、简易和自定义安装类型。
?如果你使用该对话框作其它用途或你想要使用_isres.dll中提供的类型之外的安装类型,你必须将你自己的自定义按钮加入到_isuser.dll对话框模板中并且然后在你的安装中包含自定义的_isuser.dll。
?为防止用户没有单击一个特定按钮时就退出对话框,在你调用SdOptionsButtons前调用Disable函数来禁止Next按钮。
5.23  SdProductName
语法:SdProductName (szProductName);
说明:SdProductName函数使得你的产品名对所有的%P位置夹都有效。%P位置夹在一些Sd对话框中的静态文本区中找到。另外,一些Sd对话框函数,如SdFinish,允许你在作为函数参数的字符串中包含%P。
参数:
szProductName
指定被安装的产品名。该名称将取代在Sd对话框的适当静态区出现的任何产品名位置夹(%P)。
返回值:
该函数没有返回值。
5.24  SdRegisterUser
语法:SdRegisterUser (szTitle, szMsg, svName, svCompany);
说明:SdRegisterUser函数创建一个对话框,检索用户姓名和公司名称。如果svName和svCompany都包含空字符串,InstallShield将从注册表中得到用户姓名和公司名称。
    仅当两个编辑区都存在数据时Next按钮才被激活。如果InstallShield可以从系统查找缺省姓名和公司名称,Next按钮被自动激活。完成时,SdRegisteruser调用RegDBSetDefaultRoot来将注册表开关键设置给HKEY_CLASSES_ROOT。
参数:
szTitle
指定对话框标题。为显示缺省标题(“用户信息”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。该文本被看作为一个静态控制。为显示该对话框缺省指示,给该参数传递一个空字符串(””)。
svName
返回由用户输入的姓名。注意SdRegisterUser显示该参数的初始值由用户进行编辑。如果svName和svCompany都是空字符串,在目标系统注册表中被找到的用户姓名将被显示来进行编辑。
svCompany
返回由用户输入的公司名称。注意SdRegisterUser显示该参数的初始值由用户进行编辑。如果svName和svCompany都是空字符串,在目标系统注册表中被找到的公司名称将被显示来进行编辑。
返回值:
NEXT (1):表明单击了NEXT按钮。
BACK (12):表明单击了Back按钮。
5.25  SdRegisterUserEx
语法:SdRegisterUserEx (szTitle, szMsg, svName, [...]

InstallShield内部库函数全集一(5-01)

InstallShield内部库函数全集一(5-01)

5.Sd对话框函数
    InstallShield提供一些Sd对话框函数,用户可自定义和显示。Sd对话框使用可以创建用户输入的对话框的特殊脚本定义函数来创建。然后该对话框根据所作选择返回值给脚本。
    Sd对话框有一个Cancel按钮,当它被选中时不返回一个CANCEL值。而是调用缺省的退出处理。
下面是所有有效的Sd对话框函数的列表:
DialogSetInfo
改变由一些内部对话框函数呈现的对话框的显示元素。
SdAskDestPath
呈现一个对话框,允许最终用户指定安装的一个目标位置。
SdAskOptions
创建一个对话框,它比标准AskOptions函数更灵活。
SdAskOptionsList
呈现一个对话框,允许最终用户选定和撤消选定一个列表中的项目。
SdBitmap
在对话框中显示一个位图。
SdComponentDialog
显示一个对话框,允许最终用户选择安装的组件和目标文件夹。
SdComponentDialog2
显示一个对话框,允许最终用户选择要安装的文件夹、组件和子部件。
SdComponentDialogAdv
显示一个对话框,允许最终用户选择安装的组件和目标文件夹。
SdComponentMult
显示一个对话框,允许最终用户选择安装的组件和子部件。有关磁盘空间的附加信息也被提供来确定安装的最佳位置。
SdComponentTree
显示一个有树形控制控件的对话框,允许最终用户选择安装的组件和子部件。有关磁盘空间的附加信息也被提供来确定安装的最佳位置。
SdConfirmNewDir
提示用户确认文件夹的选择。
SdConfirmRegistration
提示最终用户确认输入到由SdRegisterUser或SdRegisterUserEx呈现对话框中的信息。
SdDisplayTopics
显示主题列表。
SdExceptions
显示一个对话框,通知最终用户遇到一个共享、锁定(在使用中)或只读文件。
SdFinish
显示一个对话框,通知最终用户安装完成并提供一个选项的选择,如是否要查看信息文件或运行一个应用程序。
SdFinishEx
显示一个对话框,通知最终用户安装完成。
SdFinishReboot
显示一个对话框,通知用户安装完成并提供一个重启Windows 和计算机选项的选择。
SdInit
准备一个调用Sd对话框函数的安装。
SdLicense
显示一个许可证协议并给最终用户一个接受或拒绝许可证条款的选项。
SdLoadString
返回和一个指定资源ID相联系的字符串值。
SdMakeName
创建一个自定义对话框的节名。该节名在向一个 .iss文件写或从一个.iss文件读时使用。.iss文件由 InstallShield Silent使用。
SdOptionsButtons
显示一个有用户定义按钮的对话框,提供给最终用户不同选择。
SdProductName
在脚本对话框的特定静态区中插入你的产品名。
SdRegisterUser
显示一个可输入用户名和公司名的对话框。
SdRegisterUserEx
显示一个对话框,最终用户可在里面输入用户姓名、公司名称和应用程序序列号。
SdSelectFolder
呈现一个对话框,允许最终用户从程序文件夹列表中选择一个文件夹。
SdSetupType
显示一个对话框,使最终用户能选择三种标准安装类型之一:典型、简易或自定义。
SdSetupTypeEx
显示一个对话框,允许最终用户选择标准或自定义安装类型。
SdShowAnyDialog
显示一个资源DLL的通用对话框。当用SdShowAnyDialog函数显示一个对话框时你不能从最终用户接受任何输入。
SdShowDlgEdit1
显示一个对话框,它有一个单行的编辑区和其它静态控件。
SdShowDlgEdit2
显示一个对话框,有两个单行的编辑区和其它静态控件。
SdShowDlgEdit3
显示一个对话框,有三个单行的编辑区和其它静态控件。
SdShowFileMods
呈现一个对话框,预览对文件的可能修改并允许最终用户同意修改、拒绝修改或要求将修改写到一个文件中。
SdShowInfoList
在一个对话框中显示一个可滚动的消息列表。
SdShowMsg
在一个小窗口中显示一个消息。
SdStartCopy
呈现一个对话框,显示已经由最终用户指定的选项和设置。
SdWelcome
显示一个通用欢迎。
SdWelcomeMaint
显示一个在维护安装开始时使用的对话框。
5.1  DialogSetInfo
语法:DialogSetInfo (nInfoType, szInfoString, nParameter);
说明:DialogSetInfo函数修改下列在InstallShield对话框中显示的元件:
显示的图象;
得到最终用户选择的复选框的风格;
指示有效和所需磁盘空间值的精度。
    通过调用DialogSetInfo产生的修改对安装的剩余部分保持为有效或直到它们又被随后的对DialogSetInfo的调用修改。如果你的脚本在调用任何Sd对话框函数前调用DialogSetInfo,在 DialogSetInfo的调用前必须先调用SdInit。否则,对DialogSetInfo的调用无效。
参数:
nInfoType
指定要修改的显示特征。在该参数位置传递下列预定义的常量之一:
DLG_INFO_USEDECIMAL:缺省时,显示的指示组件大小、有效磁盘空间和所需磁盘空间的值被四舍五入到最近的KB或MB。下列对话框受该参数影响:ComponentDialog, SdComponentDialog, SdComponentDialog2, SdComponentDialogAdv 和SdComponentMult。
DLG_INFO_KUNITS:缺省时,显示的指示组件大小、有效磁盘空间和所需磁盘空间的值以KB为度量。传递该参数同时nParameter设置为FALSE时则以MB为度量显示这些值。下列对话框受该参数影响:SdComponentTree, ComponentDialog, SdComponentDialog, SdComponentDialog2, SdComponentDialogAdv 和SdComponentMult。
DLG_INFO_ALTIMAGE:指定一个显示在该对话框中的候选位图。如果nParameter设置为TRUE,szInfoString必须指定在该对话框显示的图象。该参数应用于所有在对话框右上角显示标准安装图象的InstallShield对话框(和图象显示在对话框左边一个大图象的右上角的Welcome, SdWelcome和SdFinish对话框)。更多的信息可查看下面参数nParameter处描述的“当nInfoType是.DLG_INFO_ALTIMAGE”。
    由SetDisplayEffect设置的显示效果不能应用到交替图象,通常它们显示时没有任何特殊效果.
DLG_INFO_CHECKSELECTION:指定选择方法将由nParameter传递的常量确定。注意SdComponentTree不支持改变复选框类型。
szInfoString
当DLG_INFO_ALTIMAGE传递给nInfoType时,该参数指定要显示的候选位图的文件名和一组位图属性(可选)。如果包括了位图属性,传递给该参数的字符串必须如下格式化:
 “位图文件名;透明标志;<未用>;<未用>;透明色”
位图文件名:
指定位图文件名。如果文件名未限定(也就是说,如果它不包括一个驱动器指示符和路径),InstallShield在SUPPORTDIR查找该位图。
透明标志:
指示是否透明显示位图。当该标志是1(真)时,该位图中所有其颜色是由szInfoString的透明色参数指定的RGB值的部分都透明显示。该参数缺省为0(非透明)。
未用:
格式行的这些部分都被忽略,但它们必须被包括。也就是说,格式行串必须包括四个分号,三个分号在透明标志和透明色之间。
透明色:
指示透明显示的颜色。透明色必须用一个RGB值来表示,也就是,三个数值型值由逗号分隔。如果没有指定值,即使透明标志设置为1,位图也不会被透明显示。
    下面的例子将显示MyBitmap.bmp文件的位图,它位于SUPPORTDIR文件夹。位图所有黑色部分(RGB值为0,0,0)将被透明显示。
“MyBitmap.bmp;1;;;0,0,0″
注意:标准位图为57×53。一个候选位图必须也约是这个大小。如果位图大于这个大小,它会在标题区中垂直置中,位图的右边将和对话框的右边对齐。(在Welcome, SdWelcome, 和 SdFinish对话框中,位图的右边将和它所呈现在的更大的位图的右边对齐)。位图左边将尽可能扩展到对话框左边。位图扩展在对话框标题区下的任何部分将被剪切掉。如果位图小于57×53,它将被正确显示,但它将不被调整大小或被扩展。
    当缺省位图被重新装入或nInfoType不是DLG_INFO_ALTIMAGE时该参数被忽略
nParameter
和nInfoType相联系一起来指定对话框特性。
当nInfoType是DLG_INFO_CHECKSELECTION时,传递下列预定义常量之一来指定复选框风格:
CHECKBOX:指定Windows 3.1风格的复选框。
CHECKBOX95:指定标准(Windows 95 风格)复选框。如果不调用DialogSetInfo,这是缺省的复选框风格。
CHECKLINE:指定复选行风格的复选框。
CHECKMARK:指定复选标记风格的复选框。
当nInfoType是DLG_INFO_ALTIMAGE,传递下列预定义常量之一来指定显示位图:
-1:指定对话框必须显示缺省位图。
TRUE:指定由szInfoString指示的位图必须在随后的对话框中使用,就如前面在szInfoString下描述的一样。
当nInfoType是DLG_INFO_KUNITS 或DLG_INFO_USEDECIMAL时,传递下列预定义常量之一来指定大小如何显示:
TRUE:指定大小按照nInfoType指示的显示。
FALSE:指定大小按照缺省风格显示。
返回值:
0  表明函数成功设置了指定的风格。
< 0  表明函数未能设置该风格。
注解:
?为预览调用DialogSetInfo的效果,运行InstallShield范例,改变对话框的属性(通过单击属性按钮),然后检验如SdComponentDialog2和 SdComponentMult的对话框的改变。
?每次你要改变一个对话框的细节方面时都必须调用DialogSetInfo。
你可以使用DLG_INFO_ALTIMAGE参数来激活16色、256色或真彩色(24位)的位图。注意当256色的位图在16色系统中显示或真彩色位图在256色系统中显示时会有颜色失真。建议你指定一与目标系统的颜色模式兼容的候选图象。
5.2  SdAskDestPath
语法:SdAskDestPath (szTitle, szMsg, svDir, nReserved);
说明:SdAskDestPath函数创建一个对话框,允许最终用户选择一个候选目标路径。当你单击对话框中的浏览按钮,SelectDir函数被调用来打开一个二次对话框使最终用户可以选择一个存在的文件夹或输入一个新的文件夹名。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择文件夹”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的文本。该文本被考虑为一个静态控件。在你的消息字符串中使用%P位置夹来插入已经由先前的一个对SdProductName的调用指定的产品名称(如果有)。为显示对话框的缺省指示,传递一个空字符串(“”)。
svDir
指定缺省选定的目录名。返回由最终用户选定的目录名。
nReserved
给该参数传递0。不允许其它值。
返回值:
NEXT (1):指定Next按钮被单击。
BACK (12):指定Back按钮被单击。
注解:
?运行在静止方式的安装程序必须创建在调用SdAskDestPath前不存在的新文件夹。这样可以确保确认对话框不被显示。没有这一步骤,则需要两个响应文件来处理两种可能情况。
5.3  SdAskOptions
语法:SdAskOptions (szTitle, szMsg1, szMsg2, szId, szComponents, nExclusiveFlag);
说明:SdAskOptions 函数创建一个对话框,提供安装选项。你可以使用复选框或单选钮作为选择按钮。显示在按钮旁边的信息从一组选项中检索得到。选项的缺省数目是4。必要时你可以增加或减去组中选项的数目。
    SdAskOptions运行于由系统变量MEDIA指定的当前媒体上。在安装的初始化中,InstallShield给MEDIA赋缺省媒体名(“DATA”),它和你的文件媒体库(Data1.cab)相联系。为显示脚本创建的组件,可按4.6中的相同步骤进行:
  如果你的安装不使用一个安装类型的对话框,你必须在调用SdAskOptions之前调用ComponentSetupTypeSet来指定一个已经在IDE安装类型窗格中定义的安装类型
  系统变量MEDIA的值在安装初始化过程中被设置为’DATA’。如果你改变该变量的值来指向一个脚本创建组件组,你必须在调用ComponentTransferData, CreateShellObjects, 或 CreateRegistrySet前将值修改回’DATA’。注意运行一个基于事件的脚本的安装中,ComponentTransferData被自动调用。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择组件”) ,给该参数传递一个空字符串(””)。
szMsg1
指定显示在对话框的消息。该静态区的ID是801。为显示该对话框的缺省指示,给该参数传递一个空字符串(“”)。
szMsg2
指定在对话框显示的一个二次消息。该静态区的ID是802。
SzId
指定一个候选数值型对话框ID。仅使用以字符串形式表示的数值型ID(例如,ID 13001 为“13001”)。你可以拷贝SdAskOptions对话框资源,对它做有限的修改,给它一个唯一数值型ID,并通过以字符串传递它的ID给szId来调用对话框。参考下面的注解部分。为创建标准的四选项的SdAskOptions对话框,给该参数传递一个空字符串(“”)。
szComponents
指定要显示的包含子部件的组件名称。子部件前面有复选框或单选钮。为显示所有顶层组件,给该参数传递一个空字符串(””)。
SdAskOptions在由系统变量MEDIA指定的文件媒体库或脚本创建组件组中查找所需组件。
nExclusiveFlag
指定你要在对话框中显示的按钮类型。在该参数位置传递下列预定义常量之一:
EXCLUSIVE:指定单选钮。
NONEXCLUSIVE:指定复选框。
  如果你的安装包括必需的可见的组件,不要调用SdAskOptions来得到安装选项。而是,以非静止方式调用ComponentDialog, SdComponentDialog, SdComponentDialogAdv, SdComponentMult 或SdAskOptionsList。
  必需组件可以这么理解:当活动组件(在组件窗格中被选择的组件)被安装时,你要添加组件到必须被安装的组件列表中或从该组件列表中删除组件。
其中控件有:
所需组件(列表框):列出活动组件要求的组件。
组件(列表框):列出所有定义的组件。活动组件有一个复选标记;所需组件有一个红圈和斜杠。
添加(按扭):将在组件列表框中选定的组件添加到所需组件列表框中。
删除(按扭):从所需列表框中删除选定的组件。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
注解:
?你可以通过使用资源编辑器拷贝SdAskOptions对话框资源(位于_isres.dll),对拷贝作有限的修改,并给它一个唯一ID来创建多个SdAskOptions类型的对话框。当你调用SdAskOptions并在参数szId传递对话框的自定义拷贝时,自定义拷贝被显示。限制对存在的静态文本区作编辑修改和增加静态文本区。不建议添加需要处理程序的控件,因为它需要改变SdAskOptions的资源脚本。
5.4  SdAskOptionsList
语法:SdAskOptionsList (szTitle, szMsg, szComponents, nStyle);
说明:SdAskOptionsList函数创建一个对话框,显示一个自定义安装的组件列表。
SdAskOptionsList运行在由系统变量MEDIA指定的当前媒体上。在安装的初始化中,InstallShield给MEDIA赋缺省媒体名(“DATA”),它和你的文件媒体库(Data1.cab)相联系。为显示脚本创建的组件,按4.6中的相同步骤进行。
系统变量MEDIA的值在安装初始化过程中被设置为’DATA’。如果你改变该变量的值来指向一个脚本创建组件组,你必须在调用ComponentTransferData, CreateShellObjects, 或 CreateRegistrySet前将值修改回’DATA’。注意运行一个基于事件的脚本的安装中,ComponentTransferData被自动调用。
  如果你的安装不使用一个安装类型对话框,你必须在调用SdAskOptionsList前调用ComponentSetupTypeSet来指定一个已经在IDE安装类型窗格中定义的安装类型。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择组件”) ,给该参数传递一个空字符串(””)。
szMsg
指定对话框中显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。
szComponents
指定要显示的包含子部件的组件名称。为显示所有顶层组件,给该参数传递一个空字符串。
SdAskOptionsList在由系统变量MEDIA指定的文件媒体库或脚本创建组件组中查找所需的组件。
nStyle
指定最终用户的选择是否受限。在该参数位置传递下列预定义常量之一:
EXCLUSIVE:允许最终用户仅从列表中选择一个项目。如果任何szComponents’的子部件是所需组件,则不使用EXCLUSIVE模式。
NONEXCLUSIVE:允许最终用户从列表中选择多个项目,包括多个非邻接的选项。两个按钮被显示:Select All 和Clear All,,允许通过单击一个按钮选择所有选项或清除所有选项。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
5.5  SdBitmap
语法:SdBitmap (szTitle, szMsg, szBitmap);
说明:SdBitmap函数在一个对话框中显示一个位图。位图所允许的最大大小是宽440个像素点、高275个像素点。仅当你使用一个资源编辑器来修改SdBitmap对话框资源使得显示消息的控件成为可见时,你才可以在SdBitmap对话框中显示一个消息,查看下面注解。
参数:
szTitle
指定对话框标题。为显示缺省标题(“欢迎”) ,给该参数传递一个空字符串(””)。
szMsg
给该参数传递一个空字符串(“”),除非你使用一个资源编辑器修改SdBitmap对话框来显示一个消息,查看下面注解。
szBitmap
指定要显示的位图的文件名和一组位图属性(可选)。如果包括位图属性,传递给该参数的字符串必须如下格式化:
 “位图文件名;透明标志‘3-D标志;背景颜色”
位图文件名
指定位图文件名。如果文件名未限定(也就是说,如果它不包括一个驱动器指示符和路径),InstallShield在SUPPORTDIR查找该位图。
透明标志
指示是否透明显示位图。当该标志是1(真)时,该位图所有紫红色(RGB值:255,0,255)部分都透明显示。该参数的缺省值是0(非透明)。
3-D 标志
指示是否要绕着包含位图的静态区的边缘增加一个3-D边框。缺省为0(非3D边框)。
背景色
指示作为静态文本区背景的颜色。 注意该颜色仅当位图小于它所显示在的静态文本区或透明标志设置为1并且位图有透明区域时才会可见。背景色必须以RGB值表示,也就是三个由逗号分隔的数值型的值。
  下面的例子将从MyBitmap.bmp文件显示位图,它位于SUPPORTDIR文件夹。该位图将被置于一个黑色背景上。它有一个3-D边框。该位图的任何紫红色的部分将被显示为背景色-黑色。
    ”MyBitmap.bmp;1;1;0,0,0″
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
注解:
?你可以使用一个资源编辑器来修改SdBitmap对话框资源,使得一个传递给参数szMsg的消息字符串在SdBitmap对话框中显示。
?SdBitmap 对话框资源包括在_isres.dll中。该资源包含一个静态文本控件,它接收由参数szMsg传递的字符串。然而,该静态文本控件缺省为在SdBitmap对话框中不可查看(在对话框下)。SdBitmap也使用一个静态文本控件显示位图图象。你可以调整位图图象静态文本控件的大小和移动消息静态文本控件进入对话框来查看。
改变位图图象静态文本控制的大小可能影响你位图图象的显示。位图图象必须足够小来避免当它被SdBitmap在位图图象静态文本控制置中时被剪切掉。
?该函数不支持透明位图。如果你以该函数来使用一个透明位图,透明部分将被正常显示。
?SdBitmap不支持图元文件。
5.6  SdComponentDialog
语法:SdComponentDialog (szTitle, szMsg, svDir, szComponents);
说明:使用SdComponentDialog函数创建一个对话框。显示当前媒体上用户可以安装的的组件列表和每个组件将占用的磁盘空间。该函数和SdComponentDialogAdv相同。
    目标目录可以使用Browse按钮来修改;在其它驱动器上的可用磁盘空间可以使用Disk Space 按钮来检查。
SdComponentDialogt运行在由系统变量MEDIA指定的当前媒体上。在安装的初始化中,InstallShield给MEDIA赋缺省媒体名(“DATA”),它和你的文件媒体库(Data1.cab)相联系。为显示脚本创建的组件,按4.6中的相同步骤进行。
    如果你的安装不使用一个安装类型的对话框,你必须在调用SdComponentDialog之前调用ComponentSetupTypeSet来指定一个已经在IDE安装类型窗格中定义的安装类型。
    系统变量MEDIA的值在安装初始化过程中被设置为’DATA’。如果你改变该变量的值来指向一个脚本创建组件组,你必须在调用ComponentTransferData, CreateShellObjects, 或 CreateRegistrySet前将值修改回’DATA’。注意运行一个基于事件的脚本的安装中,ComponentTransferData被自动调用。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择组件”) ,给该参数传递一个空字符串(””)。
szMsg
指定对话框中显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。
svDir
指定缺省选定的文件夹名;返回最终用户选择的文件夹名。注意由svDir指定的目标文件夹不会自动赋给TARGETDIR或其它任何系统变量。如果它要被使用,为将svDir值提供给安装,你必须将它赋给TARGETDIR或一个脚本定义的变量。
    我们建议用户给该参数传递TARGETDIR而不是一个字符串变量。如果你在该参数不传递TARGETDIR,当最终用户在一个不同驱动器选择一个目标时显示在对话框的所需磁盘空间不会被重算。
szComponents
指定其子部件要被显示的组件名称。为显示所有主组件,给该参数传递一个空字符串(“”)。
SdComponentDialog在由系统变量MEDIA指定的文件媒体库或脚本创建组件组中查找所需的组件。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
注解:
?一个组件在被选定前,其大小都显示为0。一旦它已经被选定,它的实际大小被显示。
?若有必要,组件名被截尾来允许显示最大可能的组件大小。显示大小的必要空间依赖于最大组件大小本身(2GB)、当前使用的组件大小选项、和用来在对话框显示组件信息的字体。组件大小选项由DialogSetInfo函数设置。
?一旦显示最大可能大小所需的空间被确定,若有必要,所有组件名均自动被截尾以适应剩余空间。这确保组件名不会覆盖组件大小。
?注意在这种方法下需要较少空间显示大小(或没有被选)的组件的名称仍然会被截尾。为了最大化执行并确保组件名完整显示,使组件名小于在组件对话中的有效空间。
?如果由svDir指定的缺省文件夹不存在于最终用户系统,除非最终用户按下Browse按钮并按下列步骤从选择文件夹对话框创建它,否则它不会被创建。因此,无论何时用户想在调用ComponentTransferData(必要时,它会创建文件夹)前指定一个要使用的缺省文件夹,为了确定该文件夹是否存在,当SdComponentDialog返回时都必须调用ExistDir 。如果不存在,调用CreatDir在最终用户系统上创建它。
?运行在静止方式(silent mode )的安装,如果在调用SdComponentDialog前文件夹不存在,必须创建该新文件夹。这样可以确保确认对话框不被显示。没有这一步,需要两个响应文件来处理两个可能情况。
?Disk Space按钮的ID是101。该按钮自动显示有效磁盘空间对话框。如果愿意你可以删除该按钮/选项。目录静态区需要一个ID为851。列表框ID有一个多选项风格。
5.7  SdComponentDialog2
语法:SdComponentDialog2 (szTitle, szMsg, szDir, szComponents);
说明:SdComponentDialog2函数创建一个对话框,显示一个用户可以安装的当前媒体上的组件列表。显示在组件窗口中的组件可以有子部件。如果一个组件有子部件,Change按钮将成为有效。单击Change按钮将生成选择子部件对话框,可以作进一步的选择。对每个组件和子部件,也提供说明。当用户选择或高亮显示组件时,其说明显示在对话框的说明区下。
    SdComponentDialog2运行在由系统变量MEDIA指定的当前媒体上。在安装的初始化中,InstallShield给MEDIA赋缺省媒体名(“DATA”),它和你的文件媒体库(Data1.cab)相联系。为显示脚本创建的组件,按4.6中的相同步骤进行。
    如果你的安装不使用一个安装类型的对话框,你必须在调用SdComponentDialog之前调用ComponentSetupTypeSet来指定一个已经在IDE安装类型窗格中定义的安装类型。
    系统变量MEDIA的值在安装初始化过程中被设置为’DATA’。如果你改变该变量的值来指向一个脚本创建组件组,你必须在调用ComponentTransferData, CreateShellObjects, 或 CreateRegistrySet前将值修改回’DATA’。注意运行一个基于事件的脚本的安装中,ComponentTransferData被自动调用。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择组件”) ,给该参数传递一个空字符串(””)
szMsg
指定对话框中显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。
szDir
指定目标目录的名称(目标位置)。注意由svDir指定的目标文件夹不会自动赋给TARGETDIR或其它任何系统变量。如果它要被使用,为将svDir值提供给安装,你必须将它赋给TARGETDIR或一个脚本定义的变量。
szComponents
指定其子部件要被显示的组件名称。为显示所有主组件,给该参数传递一个空字符串(“”)。
    SdComponentDialog2在由系统变量MEDIA指定的文件媒体库或脚本创建组件组中查找所需的组件。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
注解:
?一个组件在被选定前,其大小都显示为0。一旦它已经被选定,它的实际大小被显示。 
?若有必要,组件名称被截尾来允许显示最大可能的组件大小。显示大小的必要空间依赖于最大组件大小本身(2GB),当前使用的组件大小选项,和用来在对话框显示组件信息的字体。组件大小选项由DialogSetInfo函数设置。
?一旦显示最大可能大小所需的空间被确定,若有必要,所有组件名均自动被截尾以适应剩余空间。这确保组件名不会覆盖组件大小。
?注意在这种方法下需要较少空间显示大小(或没有被选)的组件的名称仍然会被截尾。为了最大化执行并确保组件名完整显示,使组件名小于在组件对话框中的有效空间。
?当且仅当被选定的组件有任何子部件时Change按钮才为有效。否则,它将变灰。
?如果一个组件被撤消选定,它的子部件也必须缺省为撤消选定。同样的,如果一个组件的所有子部件缺省为撤消选定,则父组件也必须缺省为撤消选定。有关组件和子部件的缺省选定设置请参考ComponentAddItem函数。
?当用户选定一个显示在对话框中的组件或子部件时,缺省选定设置被清除。如果用户撤消选定一个组件,所有它的子部件也将被撤消选定。如果用户撤消选定一个组件的所有子部件,该组件也将被撤消选定。
5.8  SdComponentDialogAdv
语法:SdComponentDialogAdv (szTitle, szMsg, svDir, szComponents);
说明:使用SdComponentDialogAdv函数创建一个对话框。显示当前媒体上用户可以安装的组件列表和每个组件将占用的磁盘空间。该函数和SdComponentDialog相同。
    目标目录可以使用Browse按钮来修改:同时在其它驱动器上的可用磁盘空间可以使用Disk Space 按钮来检查。
SdComponentDialogtAdv运行在由系统变量MEDIA指定的当前媒体上。在安装的初始化中,InstallShield给MEDIA赋缺省媒体名(“DATA”),它和你的文件媒体库(Data1.cab)相联系。为显示脚本创建的组件,按4.6中的相同步骤进行。
  如果你的安装不使用一个安装类型的对话框,你必须在调用SdComponentDialog之前调用ComponentSetupTypeSet来指定一个已经在IDE安装类型窗格中定义的安装类型。
    系统变量MEDIA的值在安装初始化过程中被设置为’DATA’。如果你改变该变量的值来指向一个脚本创建组件组,你必须在调用ComponentTransferData, CreateShellObjects, 或 CreateRegistrySet.前将值修改回’DATA’。注意运行一个基于事件的脚本的安装中,ComponentTransferData被自动调用。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择组件”) ,给该参数传递一个空字符串(””)。
szMsg
指定对话框中显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。
svDir
指定缺省选定的文件夹名;返回最终用户选择的文件夹名。注意由svDir指定的目标文件夹不会自动赋给TARGETDIR或其它任何系统变量。如果它要被使用,为将svDir值提供给安装,你必须将它赋给TARGETDIR或一个脚本定义的变量。
    我们建议用户给该参数传递TARGETDIR而不是一个字符串变量。如果你在该参数不传递TARGETDIR,当最终用户在一个不同驱动器选择一个目标时显示在对话框的所需磁盘空间不会被重算。
szComponents
指定其子部件要被显示的组件名称。为显示所有主组件,给该参数传递一个空字符串(“”)。
SdComponentDialogAdv在由系统变量MEDIA指定的文件媒体库或脚本创建组件组中查找所需的组件。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
注解:
请参阅5.7。
5.9  SdComponentMult
语法:SdComponentMult (szTitle, szMsg, szTargetDir, szComponents);
说明:SdComponentMult函数创建一个对话框,提供给最终用户一个选项来从当前媒体上的一个组件和子部件列表中选择。对话框有两个子窗口。如果被选定的组件有子部件,它们在第二个窗口中显示。对话框也显示所需的磁盘空间(依赖于被选定的组件和子部件)和目标目录的空闲磁盘空间来在安装过程中提供帮助。组件和/或子部件的说明可以通过单击它的名称在说明区中查看。
有关组件和子部件的详细情况请参阅7.1。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择组件”) ,给该参数传递一个空字符串(””)
szMsg
指定对话框中显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。
szTargetDir
指定将应用程序安装到的目标文件夹名。注意由svTargetDir指定的目标文件夹不会自动赋给TARGETDIR或其它任何系统变量。如果它要被使用,为将svTargetDir值提供给安装,你必须将它赋给TARGETDIR或一个脚本定义的变量。
szComponents
指定其子部件要被显示的组件名称。为显示所有主组件,给该参数传递一个空字符串(“”)。
SdComponentMult在由系统变量MEDIA指定的文件媒体库或脚本创建组件组中查找所需的组件。
    太长不能适应选择窗口的组件名将被从右截尾以适应有效空间。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
注解:
请参阅5.7。
5.10  SdComponentTree
语法:SdComponentTree (szTitle, szMsg, szDir, szComponents, nLevel);
说明:SdComponentTree函数显示一个对话框,它包含下列内容:
一个树形控件,最终用户可以在其中选定在他们系统上需要的组件和不选定在他们系统上不需要的组件。
选定组件的说明(组件属性说明文本)。
需要用来执行树形控件中指定的文件操作的磁盘空间,和由szDir指定路径的磁盘的有效空间。(所需磁盘空间的计算考虑在szDir指定的磁盘的簇的大小。)
SdComponentTree运行在由系统变量MEDIA指定的当前媒体上。在安装的初始化中,InstallShield给MEDIA赋缺省媒体名(“DATA”),它和你的文件媒体库(Data1.cab)相联系。为显示脚本创建的组件,按4.6中的相同步骤进行。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择组件”) ,给该参数传递一个空字符串(””)。
szMsg
指定对话框中显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。szDir
指定在计算所需和有效磁盘空间中用到的磁盘的路径。
szComponents
指定其子部件要被显示的组件名称。为显示所有主组件,给该参数传递一个空字符串(“”)。
nLevel
指定当对话框第一次被显示时在树形控件中打开多少层组件和子部件。(例如,nLevel为2,则对话框首次显示时,第三和更低层的子部件在树形控件中被关闭。)
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
5.11  SdConfirmNewDir
语法:SdConfirmNewDir (szTitle, szDir, nReserved);
说明:SdConfirmNewDie函数创建一个对话框,显示一个文件夹名和一个确认的提示。如果最终用户单击Yes按钮,则一个新文件夹自动由该函数创建。
参数:
szTitle
指定对话框标题。为显示缺省标题(“确认新文件夹”) ,给该参数传递一个空字符串(””)。
szDir
指定要确认的目录名称。(通过调用SdAskDestPath来得到该信息)
nReserved
给该参数传递0。不允许其它值。
返回值:
YES (1):表明单击了Yes按钮并且目录已经被确认并将被创建。
NO (0):表明单击了No按钮,并且指定的目录不会被创建。
<0:表明Yes被选定了但函数未能创建新目录。
5.12  SdConfirmRegistration
语法:SdConfirmRegistration (szTitle, szName, szCompany, szSerial, nReserved);
说明:SdConfirmRegistration函数创建一个对话框,显示用户名、公司名称和序列号。如果在该对话框的任何区域输入一个空字符串(””),显示的区域将为空。
参数:
szTitle
指定对话框标题。为显示缺省标题(“注册认可”) ,给该参数传递一个空字符串(””)。
szName
指定最终用户姓名。
szCompany
指定公司名称。
szSerial
指定序列号。如果该参数包含一个空字符串(””),序列号区不在对话框显示。
nReserved
给该参数传递0。不允许其它值。
返回值:
YES (1):表明单击Yes按钮。
NO (0):表明单击No按钮。
注解:
?为得到序列号和最终用户的姓名和公司名,调用SdRegisterUserEx。只要得到姓名和公司名,调用SdRegisterUser。
5.13  SdDisplayTopics
语法:SdDisplayTopics (szTitle, szMsg, listTopics, listDetails, nReserved);
说明:SdDisplayTopics 函数创建一个对话框,显示基于主题数据(资料)的信息。对话框提供一个标题然后是标题的主题和说明。你可以修改说明文本的字体风格以让它和标题(主题)文本想区别。消息和主题标题通常是粗体。可使用该对话框显示帮助主题、例子等。
参数:
szTitle
指定对话框标题。为显示缺省标题(“自定义安装帮助”) ,给该参数传递一个空字符串(””)。
szMsg
指定对话框中显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。
listTopics
指定要显示的包含主题的字符串列表。
listDetails
指定包含每个主题的说明的字符串列表。
nReserved
给该参数传递0。不允许其它值。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
注解:
?消息静态区必须以801为ID。主题标识符ID必须在802-849的范围之内。说明区ID必须在851-899的范围之内。
?静态说明区的空间由对话框的大小固定。你不能动态改变listDetails列表的空间。如果主题和说明的数目小于静态区的数目,在空白区不显示任何内容,但对话框大小不会改变。
5.14  SdExceptions
语法:SdExceptions (nExceptionType, szFilename);
说明:SdExceptions函数显示一个对话框,通知最终用户遇到一个共享,锁定(在使用中)或只读的文件并提供适当的选项。
参数:
nExceptionType
指定遇到文件问题的类型。在该参数位置传递下列预定义常量之一:
SHARED:一个共享的文件,其引用计数器已经减为0。
READONLY:遇到一个只读文件。
LOCKED:遇到一个锁定文件。
szFilename
指定遇到问题的文件名。
返回值:
ERR_RETRY (4):表明选定了Retry按钮。
ERR_IGNORE (5):表明选定了Ignore按钮。
ERR_YES (6):表明选定了Yes按钮。
ERR_NO (7):表明选定了No按钮。
ERR_PERFORM_AFTER_REBOOT (100):表明选定了Reboot按钮。
<0:表明对话框不能被显示。
5.15  SdFinish
语法:SdFinish (szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bvOpt1, bvOpt2);
说明:SdFinish函数显示一个对话框,通知最终用户安装已完成并给用户信息或选择。SdFinish对话框显示两个消息和两个复选框选择选项。例如,你可能想要提供给用户查看README文件或运行应用程序的选择。
    为在消息中或复选框说明中插入产品名称,在szMsg1, szMsg2, szOpt1, 和szOpt2传递的字符串中使用位置夹%P。
参数:
szTitle
指定对话框标题。为显示缺省标题(“安装完成”) ,给该参数传递一个空字符串(””)。
szMsg1
指定在对话框顶端显示的消息。为显示通知用户安装完成的缺省指示,给该参数传递一个空字符串(””)。
szMsg2
指定在对话框底部显示的消息。为显示缺省指示(“单击Finish按钮完成安装”),给该参数传递一个空字符串(””)。
szOpt1
指定显示在第一个复选框旁边的文本。给该参数传递一个空字符串(“”)来隐藏复选框。
szOpt2
指定显示在第二个复选框旁边的文本。给该参数传递一个空字符串(“”)来隐藏复选框。
bvOpt1
返回第一个复选框的选择状态(TRUE或FALSE)。
bvOpt2
返回第二个复选框的选择状态(TRUE或FALSE)。
返回值:
NEXT (1):表明单击了Finish按钮。
注解:
?SdFinish没有选项来终止安装和重启最终用户的计算机。当SdFinish返回时,安装继续执行。当有必要提供给用户重启的选项时,可用调用SdFinishReboot来代替。
?因为SdFinish被设计为宣告安装结束,所以Back按钮被禁用。
5.16  SdFinishEx
语法:SdFinishEx (szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bvOpt1, bvOpt2);
说明:SdFinishEx函数调用SdFinish或SdFinishReboot来显示一个对话框,通知最终用户安装已完成并给用户信息或选择。如果系统变量BATCH_INSTALL等于FALSE(表明安装过程中没有遇到锁定文件),SdFinishEx调用SdFinish来显示对话框。如果BATCH_INSTALL等于TRUE,SdFinishEx调用SdFinishReboot来显示对话框。
    为在消息中或复选框说明中插入产品名称,在szMsg1, szMsg2, szOpt1, 和szOpt2传递的字符串中使用位置夹%P。
参数:
参数和SdFinish的相同。如果BATCH_INSTALL等于TRUE,这些参数被忽略并调用 SdFinishReboot(“”,””,SYS_BOOTMACHINE,””,0)。
返回值:
0:表明调用了SdFinish。
NEXT (1):表明调用SdFinishReboot并且最终用户不重启计算机。
<0:表明调用SdFinishReboot并且最终用户选择重启计算机,但重启失败。
5.17  SdFinishReboot
语法:SdFinishReboot (szTitle, szMsg1, nDefOption, szMsg2, nReserved);
说明:SdFinishReboot函数在你的安装结尾宣告安装完成并提供给用户重启系统的选项。重启系统允许修改Autoexec.bat,Config.sys和一些.ini文件使其起作用。
    SdFinishReboot对话框在静态文本区中显示两个消息。用参数szMsg1和szMsg2来设置这些区域的值。为在消息中或复选框说明中插入产品名称,在szMsg1和szMsg2传递的字符串中使用位置夹%P。
参数:
szTitle
指定对话框标题。为显示缺省标题(“安装完成”) ,给该参数传递一个空字符串(””)。
szMsg1
指定在对话框顶端显示的消息。为显示通知用户安装完成的缺省指示,给该参数传递一个空字符串(””)。
nDefOption
指定一个缺省单选按钮选项选择。在该参数位置传递下列预定义常量之一:
SYS_BOOTMACHINE:安装结束时重启计算机。
0:不重启计算机。.
szMsg2
指定显示在对话框底部的文本,提供用户要做什么的信息。为显示缺省指示,传递一个空字符串(””)。
nReserved
给该参数传递0。不允许其它值。
返回值:
WILL_REBOOT:表明用户选择重启系统。
NEXT (1):表明用户没有选择重启系统或Windows。
<0:表明用户选择重启系统或Windows,但重启失败。
注解:
?因为当其它InstallShield实例运行时,InstallShield将尽力不重启计算机,所以你必须在允许SdFinishReboot重启Windows或系统前关闭所有其它InstallShield实例。另外,你给用户的消息必须要求他们以后若要重启系统,则他们必须确保首先关闭所有其它的应用程序。
?InstallShield自动确保锁定的.dll和.exe文件在下一次系统启动时将被更新。
?因为SdFinishReboot被设计为宣告安装结束,所以Back按钮被禁用。
5.18  SdInit
语法:SdInit ( );
说明:SdInit函数准备一个调用Sd对话框函数的安装:装入所需的资源字符串,还原最小化的InstallShield窗口,并指定在Sd对话框中Windows 95风格的复选框。
参数:
该函数没有参数。
返回值:
0:表明安装为调用Sd对话框函数作好初始化。
1:表明为调用Sd对话框函数,安装已经被初始化。
注解:
?该函数由每个Sd函数自动调用。没有必要显式调用SdInit,除非你的脚本在调用任何Sd对话框函数前调用了DialogSetInfo。这种情况下,你的脚本必须在调用DialogSetInfo前调用SdInit;否则对DialogSetInfo的调用不起任何作用。

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

InstallShield内部库函数全集一(6)

InstallShield内部库函数全集一(6)
6.自定义对话框函数
    下列函数处理自定义对话框进程。你使用一个资源编辑器来创建对话框并可用这些函数把它插入脚本中。
    任何你可以创建的Windows对话框都可以被使用在一个安装脚本中。对话框可以有单行或多行编辑框,单个或多个选择列表框,组合框,单选钮,复选框和下按按扭作为标准控件。对于更复杂的控件,则提供高级函数,如CmdGetHwndDlg, LOWORD和HIWORD。
CmdGetHwndDlg
检索一个对话框的句柄。
CtrlClear
删除一个编辑、静态、列表框或组合框控件。
CtrlDir
用一个目录列表或一个文件列表来填充一个列表框或组合框。
CtrlGetCurSel
从一个列表框或组合框中选择项目。
CtrlGetMLEText
从一个多行编辑或静态区域中检索文本。
CtrlGetMultCurSel
从一个多选列表框中返回选定项目。
CtrlGetState
从一个对话框中检索一个单选扭,复选框或下按按扭控件的状态。
CtrlGetSubCommand
检索在一个WaitOnDialog函数调用后对控件执行的操作。
CtrlGetText
从一个编辑区,一个静态区或一个组合框的编辑区中检索文本。
CtrlPGroups
检索在目标系统上存在的程序组列表。
CtrlSelectText
选择显示在一个编辑区中文本。
CtrlSetCurSel
在一个列表框或组合框中查找和设置当前选择。
CtrlSetFont
指定对话框中一个控件的字体。
CtrlSetList
把一个列表的内容放至一个列表框或组合框中。
CtrlSetMLEText
设置在一个多行编辑区中的文本。
CtrlSetMultCurSel
设置在一个多选列表框中的当前选择。
CtrlSetState
设置一个复选框,单选钮或下按按扭的当前状态。
CtrlSetText
设置在一个编辑区,一个静态文本区或一个组合框的编辑区中的文本。
DefineDialog
用InstallShield注册一个自定义对话框。
EndDialog
关闭一个自定义对话框。
EzDefineDialog
用InstallShield注册一个自定义对话框。
GetFont
检索一个字体的处理程序。
HIWORD
从一个32位的整数中检索高位字。
LOWORD
从一个32位的整数中检索低位字。
ReleaseDialog
释放一个对话框的关联内存。
SdMakeName
SdMakeName为一个自定义对话框创建一个节名。该节名在向一个.iss文件写或从一个.iss文件中读时使用,.iss文件由InstallShield Silent使用。
SilentReadData
指示InstallShield Silent为一个自定义对话框读取.iss文件对话数据。
SilentWriteData
指示InstallShield Silent为一个自定义对话框写对话数据到.iss文件。
WaitOnDialog
显现一个自定义对话框。
6.1  CmdGetHwndDlg
语法:CmdGetHwndDlg (szDialogName);
说明:CmdGetHwndDlg函数检索由szDialogName标识的对话框的窗口句柄。该对话框必须已经由EzDefineDialog (或DefineDialog)定义,并以通过调用WaitOnDialog而被初始化。
参数:
szDialogName
指定已经由EzDefineDialog (或DefineDialog)定义的对话框的名称。
返回值:
> 0:由szDialogName指定的对话框的窗口句柄。
< 0:CmdGetHwndDlg未能检索到句柄。请确认szDialogName指向的是一个已经正确定义并已被初始化的对话框。
注解:
?当一个对话框用WaitOnDialog函数初始化时,则为它分配一个窗口句柄;该句柄只和该对话框关联,直到一个对EndDialog的调用来关闭该对话框。如果你调用WaitOnDialog来打开在你脚本中先前已经被打开和关闭的一个对话框,你必须再次调用CmdGetHwndDlg来得到新句柄。老的句柄不再有效。
?通常,CmdGetHwndDlg在一个自定义对话框的DLG_INIT例程中被调用。该对话框的句柄被赋给HWND变量来供其它需要它的函数使用。
6.2  CtrlClear
语法:CtrlClear (szDialogName, nControlID);
说明:CtrlClear函数清除各种控件的内容;它删除一个自定义对话框中一个单行或多行编辑区,静态文本区,单或多选列表框或一个组合框的编辑区的内容。
参数:
szDialogName
指定包含有要被删除控件的对话框的名称。
nControlID
指定由szDialogName标识的对话框的控件ID。
返回值:
0:CtrlClear成功删除指定控件的内容。
< 0:CtrlClear未能删除对话框的内容。
6.3  CtrlDir
语法:CtrlDir (szDialogName, nControlID, szDir, nItems);
说明:CtrlDir函数用一个与szDir指定的路径或文件名相匹配的文件列表来填充一个列表框或一个组合框控件。你可以在列表中包括文件名,子目录名和磁盘驱动器名。CtrlDir函数仅工作于自定义对话框。
参数:
szDialogName
指定一个对话框的名称。
nControlID
指定列表框或组合框控件的资源ID。
szDir
指定全限定路径或全限定文件名,可以包括通配符。
nItems
指定在控件中显示的列表的类型。在该参数位置传递下列预定义常量之一。为包含多个元素类型,将这些常量用按位或操作符(|)组合起来:
DLG_DIR_FILE:创建一个与文件说明szDir匹配的文件的列表。
DLG_DIR_DIRECTORY:创建一个存在于路径说明szDir中的子目录的列表。
DLG_DIR_DRIVE:创建一个驱动器列表。
返回值:
0:CtrlDir成功填充一个对话框中指定的控件。
< 0:CtrlDir未能填充指定控件。
6.4  CtrlGetCurSel
语法:CtrlGetCurSel (szDialogName, nControlID, svText);
说明:CtrlGetCurSel函数从一个自定义对话框中的一个单选列表框或组合框控件中检索当前选定的项目。调用CtrlGetMultCurSel来从多选列表框中检索项目。
参数:
szDialogName
指定包含要被检索的项目的自定义对话框的名称。
nControlID
指定单选框或组合框控件的资源ID。
svText
返回nControlID指定的控件中当前被选定的项目。
返回值:
0:CtrlGetCurSel成功检索对话框中当前被选定的项目。
< 0:CtrlGetCurSel未能检索被选定的项目。
6.5  CtrlGetMLEText
语法:CtrlGetMLEText (szDialogName, nControlID, listID);
说明:CtrlGetMLEText函数检索一个自定义对话框中一个多行编辑控件的内容。InstallShield把多行编辑区中的每行放到由listID标识的一个字符串列表中。调用CtrlGetText来检索一个单行编辑区控件的内容。
参数:
szDialogName
指定一个自定义对话框的名称,该对话框包含了其内容要被检索的多行编辑控件。
nControlID
指定多行编辑控件的资源ID。
listID
返回nControlID标识的编辑区中的行的一个字符串列表。由listID标识的字符串列表必须已经通过调用ListCreate而被初始化。
返回值:
0:CtrlGetMLEText成功检索一个多行编辑区的内容。
< 0:CtrlGetMLEText未能检索控件的内容。
6.6  CtrlGetMultCurSel
语法:CtrlGetMultCurSel (szDialogName, nControlID, listID);
说明:CtrlGetMultCurSel函数检索一个多选列表框控件中的当前被选定的行。多选列表框的每个被选定行被放到由listID标识的一个字符串列表中。为从一个单选列表框控件中检索被选定的文本,调用CtrlGetCurSel。CtrlGetMultCurSel只使用于自定义对话框。
参数:
szDialogName
指定一个自定义对话框的名称,该对话框包含了其内容要被检索的列表框控件。
nControlID
指定多行编辑控件的资源ID。
listID
返回由nControlID标识的列表框中的行。由listID标识的字符串列表必须已经通过调用ListCreat而被初始化。
返回值:
0:CtrlGetMultCurSel成功检索当前选定项目。
< 0:CtrlGetMultCurSel未能检索项目。
6.7  CtrlGetState
语法:CtrlGetState (szDialogName, nControlID);
说明:CtrlGetState函数得到一个自定义对话框中一个复选框或单选钮的当前状态。
参数:
szDialogName
指定包含该控件的对话框的名称。
nControlID
指定其状态要被检索的复选框或单选钮的资源ID。
返回值:
BUTTON_CHECKED (-1001):复选框或单选钮被选定。
BUTTON_UNCHECKED (-1002):复选框或单选钮未被选定。
DLG_ERR (-1):CtrlGetState不能确定控件状态。
6.8  CtrlGetSubCommand
语法:CtrlGetSubCommand (szDialogName);
说明:CtrlGetSubCommand函数检索对一个自定义对话框中的一个控件所执行的操作。例如,CtrlGetSubCommand可以告诉你用户单击或双击了一个列表框或组合框控件。它也可以告诉你一个编辑区的内容被修改了。
    高级开发人员可以调用CmdGetHwndDlg来处理附加信息。
参数:
szDialogName
指定自定义对话框的名称。
返回值:
EDITBOX_CHANGE (-1007):编辑框的内容已经改变。
LISTBOX_ENTER (-1008):用户双击了一个列表框项目。
LISTBOX_SELECT (-1009):用户单击了一个列表框项目。
6.9  CtrlGetText
语法:CtrlGetText (szDialogName, nControlID, svText);
说明:CtrlGetText函数从一个自定义对话框中的一个编辑区,静态文本区或按扭控件中检索文本。为从多行编辑区控件中检索文本,调用CtrlGetMLEText。
参数:
szDialogName
指定一个对话框的名称,该对话框包含了其文本要被检索的区域或控件。
nControlID
指定编辑区,静态文本区或下按按扭控件的资源ID。
svText
从由nControlID标识的控件或区域中返回的文本。
返回值:
0:CtrlGetText成功检索控件的内容。
< 0:CtrlGetText未能检索内容。
6.10  [...]

InstallShield内部库函数全集一(7)

InstallShield内部库函数全集一(7)

7.组件函数
下列函数允许你控制文件媒体、创建和处理脚本创建的组件组:
ComponentAddItem
增加一个新的组件到脚本创建的组件组中。
ComponentCompareSizeRequired
确定是否有足够的空闲磁盘空间给选定的组件。
ComponentDialog
呈现一个对话框,允许最终用户选择组件和指定一个目标位置。
ComponentError
当一个组件函数失败时,返回附加的错误信息。
ComponentFilterLanguage
激活和禁用基于语言的筛选(程序)。
ComponentFilterOS
激活或禁用基于操作系统的筛选。
ComponentGetData
检索一个组件的有关信息。
ComponentGetItemSize
确定一个指定组件的大小。
ComponentGetTotalCost
确定已经被指定的组件安装和卸载所需的总的空间。
ComponentInitialize
准备供存取的文件媒体库。
ComponentIsItemSelected
确定指定的组件是否已由最终用户选定。
ComponentListItems
创建一个文件媒体库中或一个脚本创建的组件组中的组件列表。
ComponentMoveData
传输和解压缩与文件媒体库中被选组件相关联的文件。
ComponentReinstall
配置安装,使得下一个对ComponentTransferData的调用执行上一次安装运行时指定的文件传输。
ComponentRemoveAll
配置安装,使下一个对ComponentTransferData的调用卸载掉安装。
ComponentSelectItem
选定或撤消选定组件。
ComponentSetData
为指定的组件设置属性和数据。
ComponentSetTarget
指定一个用户定义的变量,放置在一个组件的<TARGETDIR>域。
ComponentTransferData
执行已经被指定的组件安装和卸载。
ComponentSetupTypeEnum
列举与指定的文件媒体库相关联的安装类型。
ComponentSetupTypeGetData
检索和一个指定的已经在InstallShield IDE中创建的安装类型相关联的数据。
ComponentSetupTypeSet
选择与指定的安装类型相关联的所有组件。
ComponentTotalSize
以字节为单位计算选定的组件和子部件的总的大小。
ComponentValidate
确认整个文件媒体库的或在文件库媒体中的一个指定组件的口令。
SdSetupType
显示一个对话框,使最终用户选择三个标准安装类型:典型、简明或自定义中的一个。
SdSetupTypeEx
显示一个对话框,使最终用户选择标准和自定义的安装类型。
7.1  ComponentAddItem
语法:ComponentAddItem (szComponentSet, szComponent, nDataSize, bSelected);
说明:ComponentAddItem函数增加一个组件到一个脚本创建的组件组中。如果一个由szComponentSet指定的脚本创建组件组不存在,它将被创建。每次要增加一个组件到给定的脚本创建组件组中,都要调用ComponentAddItem。你可以创建多个脚本创建组件组,每个都有一个唯一的名称(参数szComponentSet)。
    为显示一个供选择的单级组件,使用ComponentDialog, SdComponentDialog, 或SdComponentDialogAdv。使用SdComponentDialog2或r SdComponentMult来显示组件和它们的子部件。
    该函数不能使用到文件媒体库。
参数:
szComponentSet
指定要增加一项的脚本创建的组件组的名称。如果脚本创建组件组不存在,ComponentAddItem将创建它。
szComponent
指定要增加的组件名称。不要使用一个空字符串(“”)。
下面是有关指定在函数调用中的组件和子部件的信息:
(指在函数调用中的组件和子部件)
组件是一个涉及一组文件组和/或子部件的通用术语。一个子部件也只是一个组件。它位于其它组件下面,这与和文件夹和子文件夹的关系相似。
“顶层组件”是在分层结构中的最高层组件。顶层组件从不作为子部件被引用。
一些InstallShield组件函数要求你指向一单个组件,而其它的要求你指向多个组件。
为指向一单个组件,使用该组件的名称。为指向一个子部件,使用一个路径形式的表达式,其中分层结构中引向该组件的每个组件的名称由双反斜杠分隔。例如,为指定顶层组件帮助文件下的子部件教学,在你的脚本中使用下列表达式。
szComponent = "Help Files\\Tutorials";
为引用教学下的子部件CBT,使用下列表达式:
szComponent = "Help Files\\Tutorials\\CBT";
一些组件和安装类型对话框函数,如SdComponentMult,显示多个组件和它们的子部件。这些情况下,你可指向多个组件,只要指定在分层结构中就在它们上层的组件即可。如果组件是顶层组件,使用一个空字符串(“”)来引用它们。
例如,如果你传递一个空字符串给SdComponentMult函数,在组件窗口中将显示你的文件媒体库中的所有顶层组件或你的脚本创建的组件组中的所有顶层组件,依赖于系统变量MEDIA的值。所有子部件将显示在Subcomponents窗口中。
另一方面,如果你传递一单个顶层组件(如上例中的帮助文件)给SdComponentMult函数,它将在Components窗口中显示它的子部件(如上例,在教学层)和在Subcomponents窗口中显示它的下一个更低层的子部件(如上例,在CBT层)。
nDataSize
以字节数指定组件代表的数据的大小。如果组件是一个文件序列,该参数指定所有文件的总的非压缩大小。
bSelected
指定组件的缺省选择设置。在该参数位置传递下列预定义的常量之一:
TRUE:表明该组件缺省为选定。如果TRUE传递给一个子部件,而它的父亲组件是撤消选定的,则尽管给参数bSelect传递了TRUE,该子部件也将被撤消选定。
FALSE:表明组件缺省为撤消选定。
当用户选择显示在对话框中的一个组件或子部件时,缺省选择设置被清除。如果用户撤消选定一个组件,所有它的子部件将被撤消选定。如果用户撤消选定一个组件的所有子部件,该组件将被撤消选定。
返回值:
0:ComponentAddItem成功将数据项加入到组件或子部件。
< 0:ComponentAddItem未能将数据项加入到组件或子部件。调用ComponentError看附加信息。
注解:
?组件名必须不包含这些字符,它们是在资源管理器处理程序下的非法文件名字符;包括下列字符:/ \ ?? “ < > |。试图创建一个包含一个或多个这些字符的组件名将导致ComponentAddItem失败。
?你可以使用ComponentAddItem和脚本创建的组件组来允许用户从文件媒体组件选项之外的选项中选择。
?由调用ComponentAddItem开始,创建一个脚本创建的包含你需要的选项的组件组。
然后通过调用SdAskOptions 或 SdAskOptionsList来显示那些供选择的选项,它们的参数szComponent传递脚本创建的组件组的名称。最后,通过调用ComponentIsItemSelected确定被选定的选项。
7.2  ComponentCompareSizeRequired
语法:ComponentCompareSizeRequired (szMediaLibrary, svTarget, nvSize);
说明:ComponentCompareSizeRequired 函数确定目标文件夹是否能提供给选定组件足够空闲空间,这些组件由szMediaLibrary(必须是一个文件媒体库)指定。如果目标文件夹没有足够空闲空间,由参数svTarget返回全限定文件夹名,并且由参数nvSize返回所需空闲空间大小。
    注意参数svTarget仅被用来返回一个文件夹名。你不能使用该参数来指定一个目标文件夹。ComponentCompareSizeRequired检查目标文件夹指示的驱动器,目标文件夹是你为每个组件在属性表上指定的。如果szMediaLibrary是一个文件媒体库,它有要被安装在通用应用目的文件夹上的组件,你必须在调用ComponentCompareSizeRequired 前将目标路径赋给TARGETDIR。你可以通过调用AskDestPath或一个组件对话框从一个最终用户那儿得到一个目标路径。
    如果你的安装程序将在运行时为一个文件库中的一个组件指定一个目标文件夹,它必须在用ComponentCompareSizeRequired检查空闲空间前,通过调用ComponentSetTarget来做到这一点。
    该函数不能使用到脚本创建的组件组。
参数:
szMediaLibrary
指定文件媒体库的媒体名,该库所包含的组件的总的大小将和目标驱动器上的空闲空间进行比较。如果该参数包含一个脚本创建的组件组的名称,该函数将失败。
svTarget
如果在目标驱动器上有足够的有效空闲空间,返回一个空字符串(“”)。如果在目标驱动器上没有足够空闲空间,返回目标路径。
nvSize
如果在目