日志存档:09, 2006

(转)ScriptControl控件的用法

2006-09-30,星期六 | 分类:未分类 | 126 views

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内部库函数全集一(中文版)

2006-09-28,星期四 | 分类:未分类 | 196 views

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)

2006-09-28,星期四 | 分类:未分类 | 115 views

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)

2006-09-28,星期四 | 分类:未分类 | 117 views

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: \n" + ERRORFILENAME;
MessageBox (szMsg, WARNING);
endif;
STATUS:激活显示标准进度指示器(状态栏)。
STATUSDLG:激活显示对话框风格的进度指示器(状态栏)。
STATUSEX:激活显示安装状态对话框来取代进度指示器(状态栏)。
STATUSOLD:激活显示旧风格进度指示器(状态栏),它没有一个 Cancel按扭。
返回值:
0:表明函数成功激活由参数nConstant指定的用户界面对象或安装特性。
< 0:表明函数未能激活由参数nConstant指定的用户界面对象或安装特性。
注解:
?缺省时,安装运行在全屏方式;主背景窗口显示为一个没有标题栏的全屏窗口。这种方式中,主安装窗口不能被调整大小并且没有一个可见的标题栏。为激活窗口方式,你必须以常量DEFWINDOWMODE 或 FULLWINDOWMODE来调用Enable。
?如果你的脚本中调用Disable函数来禁用Next或Back按钮,那么在函数被调用后的所有对话框中该按钮均被禁用,为激活Next或Back按钮,你需带相应的常量来调用Enable。
?DIALOGCACHE在没有Next 或Back按钮的对话框中不起作用。

2.3  FindWindow
语法:FindWindow (szClassName, szWinName);
说明:FindWindow 函数通过指定一个窗口的窗口类和窗口名为高级开发人员提供一个得到窗口句柄的方法。如果你知道了一个应用程序的窗口类和窗口名,就可得到它的句柄。然后你可以通过这个句柄直接发送信息给该窗口。
参数:
szClassName
指定窗口所属类的名字。若指定为“任意类”,则在该参数处传递一个空字符串。
szWinName
指定窗口标题。为返回指定类中最顶层窗口的句柄,在该参数处传递一个空字符串(“”)。
返回值:
XXXX:窗口的句柄。
NULL (0):FindWindow根据指定的窗口名和类名不能找到该窗口。
注解:
?要找到一个窗口的类和名字,可运行Microsoft Spy.exe程序。

2.4  PlaceBitmap
语法:PlaceBitmap (szName, nID_BITMAP, nDx, nDy, nDrawOp);
说明:PlaceBitmap函数在安装窗口中插入一个图象。图象来源由szName指定,它可以是一个位图文件(.bmp),图元文件(.wmf),或者是动态链接库(.dll)。InstallShield支持2色、16色、256色和真彩色位图(bitmap)。2色、16色、256色位图可有透明部分。
    透明位图在显示可与背景窗口组合显示的图象时有用。在位图中与指定的透明色匹配的像素不会被显示;在该位置的背景像素保持可见。在安装中,一个有技巧的设计常常用包含有公司名称和徽标的透明位图来作为安装窗口的标题。
    为指定一个透明位图,你必须给参数nDrawOp位置传递一个常量BITMAPICON。你也必须考虑在一个位图中什么颜色被置为透明。缺省的透明色是purple(RGB(255,0,255))。要指定一个不同的透明色,可用下面描述的参数szName来指定。
因为图元文件(metafile)是绘制的,而不是放置的,它们固有为透明。如果BITMAPICON被指定为一个图元文件,则该参数被忽略。
    通过使用SetDisplayEffect函数可以显示非透明位图的许多特殊显示效果。该函数也为图元文件提供了有限的显示效果。
窗口中位图的位置可以用两种方法中的一种来指定:
?通过参数nDrawOp来传递位置常数。
?通过参数nDx与nDy来传递距安装窗口边缘的垂直和水平位移。
通常可通过调用PlaceBitmap(将参数nDrawOp设置为REMOVE)来删除任何不再需要的位图文件和图元文件。建议删除不需要的位图,即使该位图可以被其他位图完全覆盖,因为第一个位图的调色板入口只有在位图被删除后才会被释放。
  一个真彩色位图显示在一个运行于16色或256色模式的系统上时,只用那些在调色板中有效的颜色;不会给位图分配附加的颜色,即使附加调色板入口是有效的。若你希望含有24位位图的安装可在16色或256色的系统中运行,需要包含该位图的16色或256色的版本。然后在选择要显示的位图前带参数COLORS调用GetSystemInfo来确定当前颜色模式。
参数:
szName
指定要被显示图象的位图文件、图元文件的全限定名或动态链接。InstallShield通过扩展名来识别位图文件和图元文件。位图文件必须有扩展名.bmp,图元文件必须有扩展名.wmf.动态链接必须有扩展名.dll。如果一个文件名指定为没有扩展名,InstallShield将假定其扩展名为.dll。
  为指定一个候选透明色,在文件名后放置一个分号(;),后随一组RGB颜色值(RGB颜色由三个数值指定,由逗号分隔)。该颜色被用作由szName指定的位图的透明色。注意它对于已经被显示的位图不起作用,也不会成为随后调用PlaceBitmap而显示的位图的缺省透明色。
下面的参数指定白色为透明色:
SUPPORTDIR ^ "Bitmap.bmp;255,255,255"
当nDrawOptions设置为 REMOVE时,该参数被忽略。
nID_BITMAP
指定驻留在一个.dll中的位图的资源ID。如果位图的源点是图元文件或位图文件,指定一个在当前显示的图象中没有使用的数值;所有同时显示的图象必须有其唯一的ID号。当nDrawOptions设置为REMOVE,该参数必须包含显示的图象的ID。
nDx
当nDrawOp设置为LOWER_LEFT, LOWER_RIGHT, UPPER_LEFT, 或 UPPER_RIGHT时以像素点指定安装窗口边缘和图象边缘之间的水平距离;否则该参数被忽略。
nDy
当nDrawOp设置为LOWER_LEFT, LOWER_RIGHT, UPPER_LEFT, 或 UPPER_RIGHT时以像素点指定安装窗口边缘和图象边缘之间的垂直距离;否则该参数被忽略。
nDrawOp
指定位图放置的位置,设置放置选项,或者删除先前放置的位图。给该参数传递下列预定义好的常数:
BITMAPICON:指出位图有透明部分。用户可以用按位或运算符(|)来将该常量和其他常量(除TILED、FULLSCREEN或FULLSCREENSIZE外)组合。当BITMAPICON和那些常量之一组合时,按位或运算被忽略,而只使用BITMAPICON。
TILED:位图在主安装窗口平铺。该常量通常被用来创建一个安装背景。当该常量被指定时,即使位置选项被忽略,特殊效果已被SetDisplaytEffect激活,位图仍正常显示。
FULLSCREEN:拖拉图象使其填充整个安装窗口。拖拉时图象不会被调整大小。如果一个位图图象比InstallShield主窗口小,它在窗口中被置中,背景由当前背景色填充。缺省值为深青色(teal);可以通过使用SetColor函数来改变。当这个常量被指定时,位置选项被忽略,即使一个特殊效果已经被SetDisplayEffect激活,位图仍正常显示。
FULLSCREENSIZE:拖拉和伸展图象使其填充满整个安装窗口。当这个常量被指定时,位置选项被忽略,即使一个特殊效果已经被SetDisplayEffect激活,位图仍正常显示。
CENTERED:将位图置于InstallShield安装窗口的中央。
LOWER_LEFT:将位图置于InstallShield安装窗口的左下角。
LOWER_RIGHT:将位图置于InstallShield安装窗口的右下角。
UPPER_LEFT:将位图置于InstallShield安装窗口的左上角。
UPPER_RIGHT:将位图置于InstallShield安装窗口的右上角。
REMOVE:删除一个先前放置的位图或图元。任何由SetDisplayEffect激活的特殊效果被忽略。
返回值:
0:表明函数成功找到和放置图象。
< 0:表明函数未能找到或放置图象。
注解:
?调用SetDisplayEffect来为非平铺、全屏幕、透明位图设置特殊效果;用户也可以用它为图元设置有限的特殊效果。
?InstallShield不支持24位透明位图。如果用户在一个24位位图中包含了透明色而且指定了BITMAPICON常量,该颜色将被正常显示。
?当你在运行256色模式的系统中放置一个256色的位图时,InstallShield将试图分配位图的调色板到系统调色板。如果多个256色位图被放置,InstallShield将试图将所有可视位图的调色板合并到系统调色板,优先为最近放置的位图。这种行为可能导致在其他位图被显示时先前放置的位图改变颜色。
?在一个运行在有256色抖动背景的256色模式的系统中,含有许多颜色的位图可能导致一些给背景使用的调色板入口被重新分配;这可引起在背景中出现一种梯度效果。如果安装中包含了使用多种颜色的位图,则当它们运行在256色系统中时应不要使用256色抖动背景。
?系统调色板仅存在于运行在256色模式的系统中。运行在windows 95和其后高彩色或者真彩色模式下的系统及运行在65525(16位)色模式Windows NT下的系统中都没有系统调色板。这些系统中不用考虑调色板句柄问题。颜色使用RGB值来直接显示。
?因为图元文件是被着色的,它们不包括一个自定义调色板。当一个图元文件在一个256色系统中显示时,不发生调色板处理;图元文件是用当前调色板中有用的颜色绘制而成。由此,若要运行在256色系统中,用户在安装程序中不应该使用显示颜色不同于标准16色的图元文件。

2.5  PlaceWindow
语法:PlaceWindow (nObject, nDx, nDy, nCorner);
说明:PlaceWindow函数改变用户界面对象的位置,包括布告牌。用nDx和nDy指定对象的边与屏幕边缘的距离。
参数:
nObject
指定要被改变位置的对象。在该参数位置传递下列预定义的常量之一:
BACKGROUND:移动背景窗口。
BILLBOARD:设置在文件传输过程中使用的布告牌的位置。
MMEDIA_AVI:设置要播放的下一个AVI文件的窗口位置。缺省时,AVI文件将在InstallShield客户窗口的左边位置窗口中播放,从左起10个像素点,从上起10个像素点。
STATUS:移动进度指示器。
STATUSDLG:移动对话框风格的进度指示器。
STATUSEX:移动安装状态对话框。
STATUSOLD:移动旧风格的进度指示器。
当你调用PlaceWindow来移动进度指示器或者状态对话框时,确信为你在安装中激活的反馈对象传递了正确常量。例如,如果你调用了Enable(STATUSOLD),则你必须传递STATUSOLD给PlaceWindow。
nDx
以像素点指定对象的边与屏幕边缘之间的水平距离。
nDy
以像素点指定对象的边与屏幕边缘之间的垂直距离。
nCorner
指定用nDx和nDy表示的距离是从哪个角度量所得。在该参数位置传递下列预定义的常量之一:
LOWER_LEFT:从InstallShield主窗口的左边度量得nDx,从底端度量得nDy。
LOWER_RIGHT:从InstallShield主窗口的右边度量得nDx,从底端度量得nDy。
UPPER_LEFT:从InstallShield主窗口的左边度量得nDx,从顶端度量得nDy。
UPPER_RIGHT:从InstallShield主窗口的右边度量得nDx,从顶端度量得nDy。
返回值:
0:表明函数成功改变了对象的位置。
< 0:表明函数未能改变对象的位置。
注解:
?使用该函数时要意识到一个安装程序要运行在不同的屏幕分辨率下。你在放置对象前可能要确定屏幕范围。距离以像素点度量,是对象边缘与指定的屏幕角落边缘之间的距离。
?用户不能用该函数定位消息框,因为消息框是由本机的Windows/PM API创建。一个消息框的位置由Windows/PM确定,而不是在InstallShield控制之下。另外,用户不能用该函数定位一个自定义对话框。

2.6  PlayMMedia
语法:PlayMMedia (nType, szFileName, nOperation, nReserved);
说明: PlayMMedia函数播放一个声音或AVI文件。MIDI或WAVE类型的声音文件和AVI(视频)文件既可以以同步方式也可以以异步方式播放。该函数也可以被用来连续播放一个文件。为了实现这个目的,一个标志可被按位或,来指示该文件以连续方式被播放。
    由于 AVI文件早被压缩而且往往大于1.4MB的软盘,因此,视频显示推荐于光盘安装。
参数:
nType
指定文件类型。在该参数位置传递下列预定义的常量之一:
MMEDIA_WAVE:文件是WAVE声音格式。
MMEDIA_MIDI:文件是MIDI声音格式。
MMEDIA_AVI:文件是一个AVI文件。
szFileName
指定要播放的声音/AVI文件的全限定名。
nOperation
指定播放方式。在该参数位置传递下列预定义的常量:
MMEDIA_PLAYSYNCH:同步播放。
MMEDIA_PLAYASYNCH:异步播放。该常量可以用或运算符(|)与MMEDIA_PLAYCONTINUOUS组合使用。
MMEDIA_PLAYCONTINUOUS:连续循环播放。当以同步方式播放一个声音/AVI文件时不能使用该值。它只使用于以异步方式播放的文件。用或运算符(|)将它与MMEDIA_PLAYASYNCH组合使用。
MMEDIA_STOP:停止播放。
nReserved
给该参数传递0值,不允许其他值。
返回值:
0:表明函数成功播放文件。
< 0:表明函数不能播放文件。

2.7  RGB
语法:RGB (constRed, constGreen, constBlue);
说明:RGB函数创建一个自定义颜色值,该颜色可被SetColor和SetTitle使用。
参数:
constRed
指定一个数值型常数,值域为0..255,指示在自定义色中红色的数量。
constGreen
指定一个数值型常数,值域为0..255,指示在自定义色中绿色的数量。
constBlue
指定一个数值型常数,值域为0..255,指示在自定义色中蓝色的数量。
返回值:
该函数返回一个调用SetColor和SetTitle时可被使用的自定义颜色的数值。

2.8  SetColor
语法:SetColor (nObject, nColor);
说明:SetColor函数设置主安装窗口的背景色。
参数:
nObject
指定要改变的用户界面对象。在该参数位置传递下列预定义的常量:
BACKGROUND
指示安装窗口的背景。缺省颜色为纯深青色(solid teal):RGB(0,128,128)。
nColor
为背景指定一种颜色。
对于一种过渡背景色,可传递下列常量之一:
BK_BLUE、BK_GREEN、BK_MAGENTA、BK_ORANGE
BK_PINK、BK_RED、BK_YELLOW 
对于一种纯背景色,可传递下列常量之一:
BK_SOLIDBLACK、BK_SOLIDBLUE、BK_SOLIDGREEN、BK_SOLIDMAGENTA
BK_SOLIDORANGE、BK_SOLIDPINK、BK_SOLIDRED、BK_SOLIDWHITE
BK_SOLIDYELLOW
对于一种自定义颜色,可在该参数位置传递RGB函数。
为了在使用自定义颜色绘制背景时得到光滑的效果(过渡),可将该颜色与预定义常量BK_SMOOTH按位或。注意当256色有效时光滑效果将更好。
返回值:
0:表明函数成功设置对象的颜色。
< 0:表明函数未能设置用户界面对象的颜色。
注解:
?当使用一个RGB值时,你可以应用Microsoft Windows的编程指南中描述的相同的方法。
你可以指定RED、GREEN、BLUE颜色的混合来“混合”颜色。用从0到255的数之一来表示使用颜色的数量。在RGB宏中的参数必须使用字面数值。你可以使用一个表示RGB颜色的长整型数来代替RGB语句。

2.9  SetDialogTitle
语法:SetDialogTitle (nDialogId, szTitle);
说明:SetDialogTitle函数改变显示在一些公用内部对话框标题栏的标题。用参数nDialogId指定对话框。如果你不使用SetDialogTitle,InstallShield显示缺省标题。一旦你为某一特定对话框设置了标题,除非你再次使用SetDialogTitle改变标题,否则InstallShield在每一个该类型对话框的实例中都使用该标题。
参数:
nDialogId
标识标题要被改变的内部对话框。在该参数位置传递下列预定义常量之一:
DLG_ASK_OPTIONS:改变AskOptions对话框标题。
DLG_ASK_PATH:改变AskPath对话框标题。
DLG_ASK_TEXT:改变AskText对话框标题。
DLG_ASK_YESNO:改变AskYesNo对话框标题。
DLG_ENTER_DISK:改变EnterDisk对话框标题。
DLG_MSG_INFORMATION:改变信息风格的消息框的标题。
DLG_MSG_SEVERE:改变严重警告风格的消息框的标题。
DLG_STATUS:改变对话风格进度指示器的标题。在带DLG_STATUS选项调用SetDialogTitle后,为了使标题修改有效,你必须通过调用Enable(STATUSDLG)来重新激活该对话风格进度指示器。
DLG_MSG_WARNING:改变警告风格的消息框的标题。
DLG_USER_CAPTION:当你使用用户定义的消息框风格时改变消息框的标题。
szTitle
指定新标题。
返回值:
0:表明函数成功修改了对话框标题。
< 0:表明函数未能修改对话框标题。
注解:
?你必须为每种你希望修改其标题的对话框分别调用SetDialogTitle。
?InstallShield使用标准Windows消息框函数创建消息框。Windows为这些消息框确定Ok和Cancel按扭文字。InstallShield不能控制在Windows 消息框中使用的按扭文字。

2.10  SetDisplayEffect
语法:SetDisplayEffect (nEffect);
说明:SetDisplayEffect函数指定用PlaceBitmap函数显示位图文件或图元文件时使用的显示效果。一旦显示效果被设定,所有随后由PlaceBitmap显示的位图文件将一直使用该效果显示,直到另一个对SetDisplayEffect的调用来设定一个新的显示效果。
参数:
nEffect
指定一个显示效果。在该参数位置传递下列预定义的常量之一。注意这些常量具有互斥性;它们相互之间不能使用按位或。而且,当用PlaceBitmap显示一个位图文件时指定了BITMAPICON、 FULLSCREEN、 FULLSCREENSIZE或 TILED时该参数无效:
EFF_FADE:位图或布告牌淡入淡出。
EFF_REVEAL:位图或布告牌逐渐从中央向四周填充。
EFF_HORZREVEAL:位图或布告牌从它的中央逐渐水平滚动出来。
EFF_HORZSTRIPE:位图或布告牌的一部分从外往里水平填充,然后剩余部分从中央部分往外填充。
EFF_VERTSTRIPE:位图或布告牌的一部分从外往里垂直填充,然后剩余部分从中央部分往外填充。
EFF_BOXSTRIPE:位图或布告牌的一部分从四周向里填充,剩余部分向四周填充。
EFF_NONE:该选项是缺省设置。使用它来清除调用其它任一选项后的显示效果。
只有EFF_REVEAL和EFF_HORZREVEAL可用于图元文件。
返回值:
0:表明函数成功设置显示效果。
< 0:表明函数未能设置显示效果。
注解:
?当位图是由PlaceBitmap带选项BITMAPICON、FULLSCREEN、FULLSCREENSIZE或TILED显示时,该位图不会按显示效果显示,而是正常显示。更多的信息可查阅PlaceBitmap。
?显示效果仅当放置位图时出现,当删除位图时不能使用显示效果。
?只有展示(EFF_REVEAL)和水平展示(EFF_HORZREVEAL)效果可用于图元文件。

2.11  SetErrorMsg
语法:SetErrorMsg (nErrorID, szText);
说明:SetErrorMsg函数定制InstallShield缺省错误信息。你可以使用该函数来指定显示这些错误信息的消息框的标题文本。
参数:
nErrorID
指定要替换的错误信息。在该参数位置传递下列预定义的常量之一:
ERR_BOX_BADPATH:当EnterDisk检测到一个由用户输入的错误路径时显示该信息。
ERR_BOX_BADTAGFILE:当EnterDisk检测到指定的标签文件不存在于磁盘上时显示该信息。
ERR_BOX_DISKID:当EnterDisk检测到由用户指定的驱动器不存在时显示该信息。
ERR_BOX_DRIVEOPEN:当EnterDisk检测到磁盘驱动器未关闭时显示该信息。
szText
指定要在消息框中显示的错误信息。
返回值:
0:表明函数成功改变错误信息。
< 0:
表明函数未能改变错误信息。

2.12   SetErrorTitle
语法:SetErrorTitle (nErrorID, szText);
说明:SerErrorTitle函数指定InstallShield内部错误消息框标题栏的自定义文本。你可以使用该函数来自定义错误消息文本。
参数:
nErrorID
指定标题要被替换的错误消息框。在该参数位置传递下列预定义的常量之一:
ERR_BOX_BADPATH:当EnterDisk检测到错误路径时显示该消息。
ERR_BOX_BADTAGFILE:当EnterDisk检测到指定的标签文件不存在于磁盘上时显示该消息。
ERR_BOX_DISKID:当EnterDisk检测到指定的驱动器不存在时显示该消息。
ERR_BOX_DRIVEOPEN:当EnterDisk检测到磁盘驱动器未关闭时显示该消息。
szText
指定显示在错误消息框中的标题。
返回值:
0:表明函数成功修改了标题栏的文本。
< 0:表明函数未能修改标题栏的文本。

2.13  SetFont
语法:SetFont (nItemID, nFontStyle, szFontName);
说明:SetFont函数设置显示的正文串的字体和风格。你可以在该函数使用标准Windows
      字体。
参数:
nItemID
指定其字体和字体风格要被设置的项。在该参数位置传递下列预定义的常量:
FONT_TITLE:指定安装过程的主标题,该主标题显示在安装窗口的左上角。
nFontStyle
指定字体风格。在该参数位置传递下列预定义的一个或多个常量。除STYLE_NORMAL之外的所有常量可以用按位或来指定多种风格:
STYLE_NORMAL:没有加粗、倾斜或阴影(不能被按位或)。
STYLE_BOLD:字体加粗。
STYLE_ITALIC:字体倾斜。
STYLE_SHADOW:字体有阴影底纹。
STYLE_UNDERLINE:加下划线。
szFontName
指定一个有效的Windows字体的名称。有效的字体名称包括Courier, Helv, Helvetica, Modern, Roman, Script, Terminal, Times 和TmsRmn。如果指定的字体没有找到指定的风格,就使用Arial。
返回值:
0:表明函数成功设置字体。
< 0:表明函数未能设置字体。

2.14  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时该字符串将自动改写任何该参数指定的文本。
返回值:该函数没有返回值。

2.15  SetTitle
语法:SetTitle (szTitle, nPointSize, nColor);
说明:SetTitle函数根据nColor的值在主窗口标题栏或在主窗口内显示一个标题。
参数:
szTitle
指定在主窗口标题栏或主窗口内显示的一个标题。如果标题要显示在窗口的标题栏,你必须在第三个参数位置指定预定义常量BACKGROUNDCAPTION。如果一个标题栏的标题不符合可用空间,那将被从右截尾并以省略号终止。缺省标题栏标题为“安装”。
当给第三个参数传递一个颜色值时,标题在主窗口的顶端左对齐显示。相对主窗口太宽的标题将被从右截尾显示。为创建一个占据多行的标题,可在你希望的行断开处嵌入换行符。
nPointSize
以点数来指定一个在主窗口显示的标题的字号。建议字号为24点数。注意当第三个参数为BACKGROUNDCAPTION时该参数被忽略。
nColor
指定一个颜色或预定义常量BACKGROUNDCAPION。为指示szTitle值应该在主窗口标题栏显示,则在该参数位置传递预定义的常量BACKGROUNDCAPTION。当用户指定了BACKGROUNDCAPTION,nPointSize被忽略;标题栏标题的颜色和字号将由最终用户的系统设置决定。注意该选项在不运行在窗口模式的安装程序中无效;请查看下面的注解。
为指示szTitle值应该在主窗口中显示,通过在该参数位置传递下列预定义的常量之一来指定该标题的颜色:BLACK,BLUE,GREEN,MAGENTA,RED,YELLOW或WHITE。用户也可以在该参数位置传递RGB函数来指定自定义颜色,如下面例子所示:
   SetTitle("FantasticApp", 24, RGB(78, 125, 161));
返回值:
0:表明函数成功设置安装的标题。
< 0:表明函数未能设置安装的标题。
注解:
?不运行于窗口模式下的安装中,第三个参数设置为BACKGROUNDCAPTION时调用SetTitle无效。为在一个标准窗口中运行安装程序,你必须首先以参数DEFWINDOWMODE或FULLWINDOWMODE来调用Enable,然后以参数BACKGROUND调用Enable来显示窗口。
?用SetColor来设置你安装的背景色。
?用SetFont来设置在背景窗口中显示的标题的字体和字体风格。

2.16  SizeWindow
语法:SizeWindow (nObject, nDx, nDy);
说明:使用SizeWindow函数来改变一个特定用户界面元件的大小。以像素点来指定新的
  大小。
参数:
nObject
指定要调整大小的对象。在该参数位置传递下列预定义的常量之一:
BACKGROUND:标识为主背景窗口。
METAFILE:标识为在文件传输过程中使用的布告牌。SizeWindow不支持位图文件(.bmp)。该参数对用SdBitmap函数显示的图元文件不起任何作用。SdBitmap自动调整被显示的图元文件的大小。
MMEDIA_AVI:设置播放下一个AVI文件的窗口的大小。所有AVI视频以一个缺省大小来显示。改变大小可能会改变视频的有效分辨率和明快度。
nDx
以像素点指定对象的水平大小。
nDy
以像素点指定对象的垂直大小。
返回值:
0:表明函数成功调整窗口大小。
< 0:表明函数未能调整窗口大小。
注解:
?安装程序可能运行于多个不同的屏幕分辨率下。因此,你需要使用GetExtents函数来确定屏幕的全屏大小,然后在你的SizeWindows函数调用中参数使用比率来指定用户界面对象的大小。
?该函数仅推荐给高级开发人员。

2.17  StatusUpdate
语法:StatusUpdate (bLink, nFinalPercent);
说明:StatusUpdate函数激活或禁用文件传输操作和状态条进度指示器之间的连接。当bLink是ON,连接被激活并且nFinalPercent指示一个在下一个文件传输结束时显示的最后百分比。在文件传输过程中,状态条平滑地从它的当前值更新到由nFinalPercent指定的值。当bLink是OFF,连接被禁用并且状态条的进度指示器在随后的文件传输中不会被自动更新。
如果文件传输中状态条被激活,则在每次调用CopyFile 或 XcopyFile之前调用StatusUpdate。在调用ComponentTransferData传输文件之前,带参数为ON和100来调用StatusUpdate;这将使状态条在安装的文件传输阶段平滑更新到100%。注意在一个运行基于事件脚本的安装中,ComponentTransferData被自动调用。
参数:
bLink
指定是否激活或禁用文件传输操作和状态条进度指示器之间的连接。在该参数位置传递下列预定义常量之一:
ON:指定状态条的进度指示器必须和文件传输操作相连接。
OFF:指定禁用状态条的进度指示器和文件传输操作之间的连接。连接保持为禁用直到它通过一个随后对StatusUpdate带参数bLink为ON的调用而得到重新建立。
状态条可以通过调用SetStatusWindow而被手动更新。
nFinalPercent
指定当bLink为ON时,状态条的进度指示器在下一个文件传输操作结束时必须达到的最后百分比。如果传递给nFinalPercent的值小于状态条的进度指示器的当前值,则进度指示器不会改变。当bLink为OFF时,该参数被忽略。
返回值:
0:表明函数成功。
< 0:表明函数不成功。
注解:
?该函数通过计算由任何文件传输函数传递的总的字节数来工作。然后它计算从进度指示器的当前位置开始到nFinalPercent中的最大值,需每隔多久增加一次进度指示器。
?StatusUpdate函数不能和VerUpdateFile 、VerSearchAndUpdateFile一起工作。当调用那些函数时,你必须禁用状态条或手动更新它。
?为设置状态条到一个初始百分比,在调用StatusUpdate之前调用SetStatusWindow。

 

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

2006-09-28,星期四 | 分类:综合分类|经典收藏 | 110 views

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: svResult:当前系统时间格式为MM-DD-YYYY。在月和日域的首零被删除。
——————————————————————————–
nItem:   DISK_TOTALSPACE
nvResult::返回由svResult指定的磁盘驱动器的总容量。最大返回值为2GB。总容量大于2GB的仍返回2GB。
SvResult:驱动器字符。注意该参数是传递给该函数的;也就是说,你必须在调用GetSystemInfo前给svResult赋值。还要注意你必须在驱动器字符后加上冒号;否则函数执行会失败。你也可以在该参数位置指定一个通用导航计算机(UNC)路径。
——————————————————————————–
nItem:   DISK_TOTALSPACE_EX
nvResult: 指定度量单位;在该参数位置传递下列预定义的常量之一:BYTES, KBYTES, MBYTES 或GBYTES。在svResult返回指定磁盘驱动器的总容量。
SvResult:驱动器字符。注意该参数是传递给该函数的;也就是说,用户必须在调用GetSystemInfo前给svResult赋值。还要注意必须在驱动器字符后加上冒号;否则函数执行会失败。用户也可以在该参数位置指定一个通用导航计算机(UNC)路径。
——————————————————————————–
nItem:   DRIVE
nvResult::在svResult返回指定驱动器的类型。将返回下列常量之一:
IS_UNKNOWN -目标驱动器未知。
IS_REMOVABLE -目标驱动器是软盘驱动器。
IS_FIXED -目标驱动器是硬盘驱动器。
IS_CDROM -目标驱动器是光盘驱动器。
IS_REMOTE -目标驱动器是一网络驱动器。
SvResult:驱动器字符后随冒号。注意该参数是传递给该函数的;也就是说,用户必须在调用GetSystemInfo前给svResult赋值。用户也可以在该参数位置指定一个通用导航计算机(UNC)路径。
——————————————————————————–
nItem:   EXTENDEDMEMORY
nvResult: NvResult:返回安装在机器上的内存大小。由于操作系统的限制,返回值可能会和安装在机器上的实际物理内存大小稍有差异。该值通常比实际值小100K。注意返回值以kb来度量。
SvResult: N/A
——————————————————————————–
nItem:    LANGUAGE
nvResult: nvResult:该参数返回目标系统的InstallShield语言常量。返回的常量可以用来确定使用ComponentFilterLanguage函数的安装中装入哪些语言专用文件组。
 For information about determining the default language of the target system, click here.
InstallShield International支持21种语言,Windows支持100多种语言。如果你想根据nvResult值筛选文件组,则必须使用一个开关语句根据该函数的返回常量来确定要使用的InstallShield语言标识号常量。带该参数时该函数的性能高度依赖于系统。
SvResult:该参数返回和nvResutl返回的语言常量等价的语言名称字符串。
——————————————————————————–
nItem:OS
nvResult:返回目标操作系统平台。返回下列常量之一:
IS_WINDOWSNT -  操作系统是Windows NT。
IS_WINDOWS9X -  操作系统是Windows 95或Windows 98。为确定是哪个,带WINMINOR调用GetSystemInfo来检测监控器版本。如果小于10,则操作系统是Windows 95;否则是Windows 98。
SvResult:N/A
——————————————————————————–
nItem:   PARALLEL
nvResult: 返回有效的物理并行口数目。
SvResult: N/A
——————————————————————————–
nItem:   SERIAL
nvResult: 返回有效的物理串行口数目。
SvResult: N/A
——————————————————————————–
nItem:   TIME
nvResult: N/A
svResult: 以HH:MM:SS格式返回当前系统时间。
——————————————————————————–
nItem: VIDEO
nvResult:nvResult:返回安装的视频适配器类型。(InstallShield不能检测CGA或单色视频驱动器)。返回下列常量之一:
IS_UNKNOWN -未知的用户视频适配器。
IS_EGA - EEGA分辨率。
IS_VGA - VGA分辨率。
IS_SVGA - SVGA(800×600)分辨率。
IS_XVGA - XVGA(1024×768)分辨率。
IS_UVGA -大于1024×768分辨率。
SvResult:N/A
——————————————————————————–
nItem:   VOLUMELABEL
nvResult: N/A
svResult: 传递你要检索其卷标号的驱动器的驱动器指示符(驱动器字符后随冒号)。该参数返回指定的驱动器的卷标号。如果该驱动器没有卷标号,返回空字符串。
——————————————————————————–
nItem:  WINMAJOR
nvResult:返回Windows的主版本号。
SvResult:以##.###格式返回一个字符串,指明Windows的主、次版本号。
——————————————————————————–
nItem:  WINMINOR
nvResult:返回Windows的次版本号。
SvResult:以##.###格式返回一个字符串,指明Windows的主、次版本号。
——————————————————————————–
返回值:
0:表明函数成功返回指定信息。
< 0:表明函数未能返回指定信息。

3.7  GetValidDrivesList
语法:GetValidDrivesList (listID, nDriveType, nMinDriveSpace);
说明:GetValidDrivesList函数检索目标系统的符合特定条件的所有驱动器列表。这个条件包括驱动器类型和驱动器的最小空间数。如果一个驱动器未关闭,该驱动器名仍加入列表。
你可以在驱动器罗列之前指定要查找的驱动器的类型(nDriveType)和可用的最小磁盘空间(nMinDriveSpace)。
参数:
listID
返回有效驱动器字符的一个列表。由listID标识的字符串列表必须通过对ListCreat的调用已被初始化。
nDriveType
指定要查找的驱动器的类型。在该参数位置传递下列预定义的常量之一:
-1:查找所有驱动器类型。
FIXED_DRIVE:仅查找硬盘驱动器。
REMOTE_DRIVE:仅查找远程驱动器。远程驱动器通常位于网络。
REMOVEABLE_DRIVE:仅查找可卸式驱动器。软盘驱动器是可卸式驱动器。
CDROM_DRIVE:仅查找光盘驱动器。
nMinDriveSpace
指定包括在返回列表中的驱动器所必须有的最小的空闲磁盘空间的字节数。如果nMinDriveSpace小于0,GetValidDrivesList将不检测驱动器的最小空间。这对软盘驱动器有用。
返回值:
0:函数成功检索所要求的列表。
< 0:函数未能检索到要求的序列。
注解:
?网络映射驱动器也可作为远程驱动器返回。该函数不会返回所有网络上的驱动器,仅返回那些标识为映射驱动器的驱动器。

3.8  GetWindowHandle
语法:GetWindowHandle (nHwndFlag);
说明:GetWindowHandle函数得到安装主窗口的句柄。
参数:
nHwndFlag
指定InstallShield主窗口的窗口句柄。在该参数位置传递预定义的常量HWND_INSTALL。
返回值:
X:X是窗口句柄。
< 0:函数未能检索到句柄。

3.9  Is
语法:Is (nIsFlag, szIsData);
说明:Is函数检索脚本中需要的公用信息。
参数:
nIsFlag
指定要检索的信息类型。在该参数位置传递下列预定义的常量之一:
DIR_WRITEABLE:能否写到由szIsData指定的目录?
FILE_EXISTS:由szIsData指定的文件是否存在?
FILE_LOCKED:文件是否锁定?
FILE_WRITEABLE:能否写到由szIsData指定的文件?
MATH_COPROCESSOR:在目标系统是否存在一个数学协处理器?
PATH_EXISTS:由szIsData 指定的路径是否存在?
USER_ADMINISTRATOR:当目标操作系统是Windows NT时,当前用户是否拥有管理员特权?运行于Windows 95或更高版本下的安装程序,Is通常在参数nFlag为 USER_ADMINISTRATOR时返回TRUE
VALID_PATH:由szIsData指定的路径是否一个合法路径?它不确认路径的存在与否,而仅检测它的语法。当你检索从用户处得到的路径信息时可以使用该常量。然后该函数会检测输入的路径信息是否正确。
WINDOWS_SHARED:Microsoft Windows是否从一个网络运行共享版本?
szIsData
指定信息,该信息依赖于传递给nIsFlag的常量,如下所示:
若nIsFlag是DIR_WRITEABLE,szIsData指定要被检测的全限定路径。
若nIsFlag是FILE_EXISTS,szIsData指定全限定文件名。
若nIsFlag是FILE_LOCKED,szIsData指定全限定文件名。
若nIsFlag是FILE_WRITEABLE,szIsData指定全限定文件名。
若nIsFlag是MATH_COPROCESSOR,szIsData指定的内容被忽略。
若nIsFlag是PATH_EXISTS,szIsData指定全限定路径。
若nIsFlag是USER_ADMINISTRATOR,szIsData被忽略。
若nIsFlag是VALID_PATH,szIsData指定全限定路径。
若nIsFlag是WINDOWS_SHARED,szIsData被忽略。
返回值:
TRUE (1):表明答复为真。
FALSE (0):表明答复为假。
< 0:函数未能答复问题。
注解:
?常量WINDOWS_SHARED仅能应用于Microsoft Windows版本。一个Microsoft Windows的共享版本安装于网络且有可被许多用户共享的公用文件。

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

2006-09-28,星期四 | 分类:未分类 | 104 views

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 Folder对话框来选择一个文件夹
  对话的缺省标题是选择目标位置Choose Destination Location。为改变该标题,在调用AskPath前调用SetDialogTitle。AskPath不检验最终用户输入路径的存在性。调用AskPath后调用CreatDir来创建该路径。
参数:
szMsg
指定显示在对话框中的消息。要显示该对话框的缺省指示,传递空字符串(“”)给该参数。
szDefPath
指定在编辑区显示的缺省路径。最终用户可以修改该字符串。
svResultPath
返回结果路径名,不管用户是否接受缺省路径,修改它,还是从选择文件夹Choose Folder对话框选择可选路径。AskPath在路径结尾加一个反斜杠,然后才把它赋给svResultPath。若必要,可在AskPath返回后通过调用StrResultPath 来删除反斜杠。如果用户按下返回按钮,svResultPath的值将不可预测。因此,如果用户在szDefPath和svResultPath使用相同的变量,那么确保当AskPath的返回值为BACK时重初始化该变量。
返回值:
NEXT (1):表明最终用户选择Next按钮。
BACK (12):表明最终用户选择Back按钮;svResultPath设置为空字符串(“”)。
注解:
?在对话框显示的编辑区可滚动以适应长字符串。
?因为可以输入至编辑区的字符数目不受限制,所以用户必须以不定长来说明svResultPath传递的变量。如果字符串变量不足以存储用户输入的文本,字符串将被截尾并且显示错误信息。同样要注意既然这个函数在字符串结尾附加一个反斜杠和一个空结束符,字符串的长度至少比用户输入的路径长两个字符。
?该函数将接受一个存在但不可写的文件夹。为限制最终用户只可选择可写的文件夹,可调用AskDestPath函数来替代。

4.4  AskText
语法:AskText (szQuestion, szDefault, svResult);
说明:AskText函数显示一个对话框,它包括一个静态文本区和一个编辑框。参数szQuestion指定静态文本区的缺省文本;参数szDefault指定编辑框的缺省文本。该对话框的缺省标题是输入信息Enter Information。为改变标题栏的内容,在调用AskText前调用SetDialogTitle。
参数:
szQuestion
指定要显示的问题或声明。如果该参数位置的字符串长度超过静态文本区宽度,一个或多个行分隔符将会被插入该字符串使得它在对话框多行显示。如果愿意,用户也可以自己通过插入换行符(\n)手动格式化该字符串。该参数没有一个缺省值。
szDefault
指定编辑区的缺省文本。
svResult
当Next按钮被用来关闭对话框时返回由最终用户输入的文本。如果用户按下Back按钮,svResult值将不可预测。因此,如果用户在szDefPath和svResultPath使用相同的变量,那么需确保当AskPath的返回值为BACK时重初始化该变量。
返回值:
NEXT (1):表明Next按钮被按下。
BACK (12):表明Back按钮被按下。
注解:
?用户在svResult传递的字符串变量必须足够大以适应输入到编辑区的文本。因此,用户必须使用自动调节大小的方法来声明变量。
?必要时,编辑区将会滚动来以适应一个长字符串。

4.5  AskYesNo
语法:AskYesNo (szQuestion, nDefault);
说明:AskYesNo函数呈现一个消息框,显示一个问题,最终用户可以通过单击Yes或No按钮来回答它。AskYesNo消息包含四个内容:
.问题标记图标  .问题文本  .Yes按钮  .No按钮
  缺省标题是Question。为改变标题栏的内容,在调用AskYesNo前调用SetDialogTitle。
AskYesNo消息框由直接调用相应的Windows API函数创建,它显示一个系统模态对话框。由于该对话框是由Windows显示的,按钮上的文本不能由安装改变。英语版本的文本’Yes’或’No’将由Windows 以适合运行安装的Windows版本的语言显示。如果用户需要显示另一个柔性对话框,直接调用一个Windows API函数或使用一个自定义对话框。
参数:
szQuestion
指定显示在消息框中的问题。如果消息超过一行,在消息中嵌入换行符(\n)来插入行间隔。
nDefault
指定缺省选定的按钮。在该参数位置传递下列预定义的常量之一:
YES:当对话框打开时Yes 按钮高亮显示。
NO:当对话框打开时No按钮高亮显示。
返回值:
YES (1):表明用户选择Yes 按钮。
NO (0):表明用户选择No按钮。

4.6  ComponentDialog
语法:ComponentDialog (szTitle, szMsg, svDir, szComponent);
说明:ComponentDialog函数显示一个对话框,允许最终用户从当前媒体上的组件列表中选择一项或多项。用户也可以选择一个目标位置。
    如果你的安装不使用一个安装类型对话,用户必须在调用ComponentDialog前调用ComponentTypeSet来指定一个已经在IDE安装类型窗格中定义的安装类型。
    当前媒体的名称存储在系统变量MEDIA中。在安装初始化过程中,InstallShield给MEDIA赋值为缺省媒体名称(“DATA”),它和用户文件媒体库(Data1.cab)相联系。显示脚本创建的组件时,按下列步骤进行:
保存MEDIA的当前值
将脚本创建组件组的名称赋给MEDIA
调用ComponentDialog得到最终用户的选择
将步骤1的值赋给MEDIA
    在安装初始化中系统变量MEDIA的值设置为’DATA’。如果用户改变该变量的值来引用脚本创建的组件组,用户必须在调用ComponentTransferData, CreateShellObjects 或CreateRegistrySet前将值改回’DATA’。注意在一个基于事件的脚本的安装中ComponentTransferData被自动调用。
    单击浏览按钮装入选择文件夹Choose Folder对话框,显示存在的文件夹列表。最终用户可以选择一个存在的文件夹或输入一个新的文件夹名称。ComponentDialog在svDir返回被选的文件夹名称。
如果用户输入一个不存在的文件夹,将出现一个消息框来询问最终用户是否要创建这个文件夹。如果是,则InstallShield创建指定的文件夹。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择组件Select Components”), 给该参数传递一个空字符串(””)。
szMsg
指定在对话框显示的消息。例如,消息可能为“请选择一个或多个下列组件安装在你的系统上” "Please select one or more of the following components to install on your system."。为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。
svDir
指定缺省目标位置。返回最终用户选择的文件夹。注意在svDir 返回的位置值不影响文件传输除非用户将它赋值给系统变量TARGETDIR或调用ComponentSetTarget来将它和一个用户定义的变量联系起来。
    我们建议用户给该参数传递TARGETDIR而不是一个字符串变量。如果你在该参数不传递TARGETDIR,当最终用户在一个不同驱动器选择一个目标时显示在对话框的所需磁盘空间不会被重算。
szComponent
指定组件,其子部件被显示以供选择。给该参数传递一个空字符串(””)来显示所有顶层组件。
ComponentDialog在文件媒体库或脚本创建的组件组中查找由系统变量MEDIA指定的所需组件。
返回值:
NEXT (1):表明最终用户选择Next按钮。
BACK (12):表明最终用户选择Back按钮。
< 0:未能显示ComponentDialog对话框。调用ComponentError查看附加信息。
注解:
?组件大小显示为0直到它被选中。一旦它被选中,它的实际大小被显示。
?若有必要,组件名称被截尾来显示最大可能的组件大小。显示大小的必要空间依赖于组件最大大小本身(2GB),当前使用的组件大小选项,和用来在对话框显示组件信息的字体。组件大小选项由DialogSetInfo函数设置。一旦显示最大可能大小所需的空间被确定,若有必要,所有组件名均被截尾以适应剩余空间。这确保组件名不会覆盖组件大小。注意,在这种方法下需要较少空间显示大小(或没有被选)的组件的名称仍然会被截尾。为了最大化执行并确保组件名称完整显示,使组件名小于在组件对话框中的有效空间。
?如果由svDir指定的缺省文件夹不存在于最终用户系统,它不会被创建除非最终用户按下浏览按钮并按下列步骤从选择文件夹对话框创建它。因此,无论何时用户想在调用ComponentTransferData(必要时,它会创建文件夹)前指定一个要使用的缺省文件夹,为了确定该文件夹是否存在,当ComponentDialog返回时都必须调用ExistDir 。如果不存在,调用CreatDir在最终用户系统上创建它。
?运行在静止方式的安装如果在调用ComponentDialog前文件夹不存在必须创建该新文件夹。这样可以确保确认对话框不被显示。没有这一步,需要两个响应文件来处理两个可能情况。

4.7  EnterDisk
语法:EnterDisk (szMsg, szTagFile);
说明:EnterDisk函数显示一个对话框,提示最终用户插入下一张磁盘。缺省标题是安装需要下一张磁盘。为改变该标题,在调用EnterDisk前调用SetDialogTitle。系统变量SRCDIR包含缺省路径,该路径显示在对话框中。最终用户可以修改缺省路径并通过输入一个新路径和单击OK来修改SRCDIR值。
    EnterDisk通过在磁盘查找由szTagFile指定的标签文件识别正确磁盘。如果磁盘不包含标签文件,会有一个错误消息提示用户输入正确磁盘。
参数:
szMsg
指定提示用户插入正确磁盘的消息。
szTagFile
指定标签文件名。EnterDisk在插入磁盘上查找该文件。如果文件没有找到,会显示一个消息要求用户插入正确的磁盘。如果用户给该参数传递一个空字符串(“”),函数不查找任何文件;而是假定安装了正确的软盘。
返回值:
OK (1):表明用户选择了OK按钮。
< 0:表明发生了一个未确定错误。
注解:
?InstallShield媒体生成器不会自动在磁盘映像文件夹上生成标签文件。为使用标签文件,将它们加到创建好的磁盘映像文件夹中。

4.8  MessageBox
语法:MessageBox (szMsg, nType);
说明:MessageBox函数呈现一个对话框,包含一个消息,一个指示消息自然属性的图标(信息,警告,或严重警告),和一个OK按钮。缺省标题依赖于nType值,nType值也指示图标类型。为改变消息框标题栏的内容,在调用MessageBox前调用SetDialogTitle。
参数:
szMsg
指定要显示的消息。InstallShield不会自动分隔消息文本为单独的行来适应消息框。如果消息长于一行,通过在字符串的合适位置嵌入换行符(\n)来插入行间隔。
nType
指定要创建的消息框类型和显示在消息框的图标类型。在该参数位置传递下列预定义的常量之一(显示资源管理器对象处理程序图标):
   INFORMATION   WARNING   SEVERE
任何Windows API MessageBox类型也可在该参数指定。多种风格可以被逻辑或来产生所需的MessageBox类型(请看下面的注解)。
返回值:
    除非你使用标准Microsoft Windows 消息框风格,返回值没有意义。如果你使用这些风格,返回值和MessageBox API函数的返回值一样。
注解:
?该函数使用Microsoft Windows API MessageBox。操作环境,而不是InstallShield,确定消息框的大小和位置(例如,操作系统运行所在的语言)。你可以改变该按钮的文本。考虑使用Windows MessageBox类型的更多信息,请在适当的Windows SDK中咨询MessageBox Windows API 函数的描述。
?当使用Windows 消息框常量时注意下列情况:
?Windows MessageBox 类型常量在Windows.h文件中声明,它不能包括在InstallShield 脚本中。当使用这些常量,用户必须在安装脚本的声明区定义它们(使用#define)。赋给这些常量的值通常可在一个适当的Windows SDK或开发工具提供的包含文件中找到。对于Microsoft Visual C++,大多数常量可在 Winuser.h文件中找到,它位于DevStudio\Vc\include 文件夹。
?Windows 和InstallShield消息框常量不能在一个安装中一起使用。如果一个InstallShield消息框常量和一个 Windows 消息框常量用一个或运算符组合,Windows 消息框常量将被忽略。
?一些Windows 消息框风格在一些Windows 平台不受支持。为确定一个特定的风格是否受安装确定的操作系统支持,咨询适当的Windows SDK。
?当MessageBox函数使用一个Windows 消息框风格时,消息框的标题是“安装“。如果用户需要显示不同的标题,可使用SprintfBox函数来替代。

4.9  RebootDialog
语法:RebootDialog (szTitle, szMsg, nDefChoice);
说明:RebootDialog函数显示一个对话框,允许最终用户重启计算机。被选的选项在安装的最后被执行。
参数:
szTitle
指定对话框标题。为显示缺省标题(“重新启动”),给该参数传递一个空字符串(“”)。
szMsg
指定对话框显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(“”)。
nDefChoice
指定缺省选定的单选钮内容。在该参数位置传递下列预定义常量之一:
SYS_BOOTMACHINE:重启计算机选项("Yes, I want to restart my computer now.")将成为缺省单选按钮选定内容。
0:不重启计算机选项("No, I will restart my computer later.")将成为缺省单选按钮内容。
返回值:
WILL_REBOOT:表明用户选择标签为"Yes, I want to restart my computer now."的单选钮。
0:表明用户选择标签为"No, I will restart my computer later."的单选钮。
注解:
?当你带SHAREDFILE或LOCKEDFILE选项来调用一个函数并且锁定遇到的.dll或.exe文件,锁定的文件的更新版本被拷贝至目标系统并且系统变量BATCH_INSTALL设置为TRUE。RebootDialog当系统重启时自动提交被锁定的文件以更新,除非用户选择"No, I will restart my computer later."选项。
?RebootDialog函数的一个完美候选是SdFinishReboot,它比RebootDialog对话框一个更好的外观和感觉。
?因为当InstallShield的其它实例运行时InstallShield会尽力不重启系统,所以用户必须确保所有其它InstallShield的实例在调用RebootDialog前停止执行。另外,你给用户的消息需要求他们确保在重启系统前所有其它应用程序停止执行。

4.10  SelectDir
语法:SelectDir (szTitle, szMsg, svDir, bCreate);
说明:SelectDir函数显示一个对话框,允许最终用户指定应用程序将被安装到的文件夹。最终用户可以输入一个全限定文件夹名或从列表中选择一个存在的文件夹。如果最终用户输入一个无效文件夹名或一个未限定文件夹名,将显示一个消息框提示最终用户输入一个有效名。选择文件夹的全限定名返回给svDir。
    如果指定的文件夹不存在并且参数bCreate是TRUE,显示一个消息框询问是否要创建文件夹。如果最终用户单击Yes, SelectDir自动创建指定的文件夹。如果参数bCreate设置为FALSE并且一个不存在的文件夹被选中,最终用户不会被告之,并且SelectDir不创建它。这种情况下,该由用户处理包含在svDir的选项。
    当最终用户单击呈现在由AskDestPath, SdAskDestPath 和其它获得一个文件夹名的InstallShield函数显示的对话框中的Browse按钮时SelectDir 被自动调用。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择文件夹”),给该参数传递一个空字符串(””)。
szMsg
指定用户要在该对话框显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(“”)。
svDir
指定将作为缺省选项显示的文件夹名。返回由最终用户选定的文件夹的全限定名。
bCreate
指定你是否要求InstallShield在指定文件夹不存在时创建它。在该参数位置传递下列预定义常量之一:
TRUE:表明如果文件夹不存在则需被创建。
FALSE:表明如果文件夹不存在不需被创建。
返回值:
IDOK (1):表明OK按钮被按下。
IDCANCEL (2):表明CANCEL按钮被按下。
< 0:表明该函数未能显示对话框并/或不能创建文件夹。

4.11  SelectDirEx
语法:SelectDirEx (szTitle, szMsg, szEditBoxStaticText, szTreeControlStaticText, nFlags, svDir);
说明:SelectDirEx显示一个对话框,允许最终用户从一个显示存在文件夹的树形控件中选择一个存在的文件夹。也显示一个编辑框,允许最终用户指定一个新文件夹。
    该函数调用Windows API函数SHBrowserForFolder来显示对话框。为得到SHBrowseForFolder更多信息,可查看Win32 SDK或访问
http://msdn.microsoft.com/library/ sdkdoc/ shellcc/shell/Function s/SHBrowseForFolder.htm.
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择文件夹”),给该参数传递一个空字符串(””)。
szMsg
指定用户要在该对话框显示的消息。为显示该对话框的缺省指示(“请选择安装文件夹”),给该参数传递一个空字符串(“”)。
szEditBoxStaticText
当nFlags 为BIF_EDITBOX时指定伴随编辑框的静态文本。如果nFlag不指定BIF_EDITBOX,该参数被忽略。
szTreeControlStaticText
当nFlags 指定BIF_STATUSTEXT时,指定伴随对话框的树形控件的静态文本。如果nFlags不指定BIF_STATUSTEXT,该参数被忽略。
nFlags
指定函数显示的对话框的外观和功能。传递任何下列常量:
BIF_BROWSEFORCOMPUTER:允许最终用户选择网络上的一特定计算机。当传递该常量时,对话框有如下行为(性能):
“网络邻居”文件夹在树形控件中被预选。
仅当选中树形控件中的一个有效计算机名时,OK按钮被激活。
即使BIF_EDITBOX指定时也不显示编辑框。
BIF_BROWSEFORPRINTER:允许最终用户选择一特定打印机。当传递该常量时,对话框有如下行为:
“网络邻居”文件夹在树形控件中被预选。
仅那些包括至少一台打印机的计算机在网络邻居文件夹中显示。
仅当选中树形控件中的一个有效打印机时,OK按钮被激活。
即使BIF_EDITBOX指定时也不显示编辑框。
BIF_DONTGOBELOWDOMAIN:域层下的网络文件夹不在树形控件中显示。
BIF_RETURNFSANCESTORS:如果一个文件系统祖先以外的任何对象被选中时OK按钮被禁用。
BIF_RETURNONLYFSDIRS:非文件系统某部分的一个文件夹被选中OK按钮被禁用。.
下列常量指定对话框的其它特征:
BIF_EDITBOX:显示一个编辑框,允许用户输入一文件夹名,在编辑框上部显示szEditBoxStaticText中的文本(除非指定BIF_BROWSEFORCOMPUTER 或BIF_BROWSEFORPRINTER)。当最终用户单击OK,SelectDirEx检查是否输入了一个有效文件夹名。如果不是(例如,如果输入了包含无效字符的名称),显示一个错误消息并且对话框不被消除。和SHBrowseForFolder不同,SelectDirEx对所有InstallShield支持的操作系统都支持该常量。
BIF_STATUSTEXT:在树形控件上部作为态文本显示szTreeControlStaticText。注意SelectDirEx不支持BIF_VALIDATE 和 BIF_USENEWUI常量,而SHBrowseForFolder支持它们。
svDir
指定作为缺省选择出现的文件夹名。返回由最终用户选择的文件夹的全限定名。如果该参数指定了一个存在于系统的有效文件夹名,该文件夹在树形控件中被预选。
返回值:
IDOK (1):表明OK按钮被按下。
IDCANCEL (2):表明CANCEL按钮被按下。
< 0:表明函数未能显示对话框。

4.12  SelectFolder
语法:SelectFolder (szTitle, szDefFolder, svResultFolder);
说明:SelectFolder函数显示一个对话框,允许最终用户在一个编辑区输入一个程序文件夹名或从一个列表中选择一个程序文件夹。该函数自动显示系统中所有的程序文件夹。SvDefFolder传递的一个缺省的文件夹名在编辑区显示。在svResultFolder返回被选的文件夹名。如果指定文件夹不存在,它不会被创建。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择程序文件夹”),给该参数传递一个空字符串(””)。
szDefFolder
指定作为缺省文件夹显示的文件夹名。
svResultFolder
返回由最终用户选中或指定的文件夹名。如果文件夹不存在,你必须调用CreateProgramFolder来创建它;SelectFolder不会创建该文件夹。
返回值:
NEXT (1):表明最终用户选择Next按钮。
BACK (12):表明最终用户选择Back按钮。
< 0:表明函数未能成功执行。

4.13  SetupType
语法:SetupType (szTitle, szMsg, szReserved, nType, nReserved);
说明:SetupType函数显示一个对话框允许最终用户选择三种标准安装类型之一。典型、简易或自定义。这些安装选项显示时有标准描述文本。如果你想加入其它安装类型或改变显示的安装类型名或描述,可调用SdSetupTypeEx。
    如果最终用户在使用组件对话框来选定和撤消选定与已选安装类型相联系的组件后,返回到安装类型对话框,那么那些选择将丢失。这种情况发生是因为SetupType函数每次被调用时自动根据选中的安装类型复位缺省组件选项。
参数:
szTitle
指定对话框标题。为显示缺省标题(“安装类型”) ,给该参数传递一个空字符串(””)。
szMsg
指定你要在对话框顶部显示的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。
szReserved
给该参数传递一个空字符串(“”),不允许其它值。
nType
当对话框打开时指定缺省安装类型。在该参数位置传递下列预定义常量之一:
TYPICAL:定义缺省安装类型为典型。
COMPACT:定义缺省安装类型为简易。
CUSTOM:定义缺省安装类型为自定义。
nReserved
给该参数传递0,不允许其它值。
返回值:
TYPICAL (301):表明选择了典型安装类型。
COMPACT (302):表明选择了简易安装类型。
CUSTOM (303):表明选择了自定义安装类型。
BACK (12):表明选定了Back按钮。

4.14  SprintfBox
语法:SprintfBox (nType, szTitle, szFormat [,arg] [,...]);
说明:SprintfBox函数呈现一个消息框,它包含三个图标之一,一个标题,和一个格式化的消息。该消息可以包含根据你输入的命令格式化的变量。
    SprintfBox和MessageBox相似,但SprintfBox对显示的内容允许更多的弹性控制。
参数:
nType
指定显示在消息框中的图标类型。在该参数位置传递下列预定义的常量之一(显示Windows 95图标):
INFORMATION信息
WARNING警告
SEVERE严重警告
szTitle
指定消息框标题。为显示缺省标题(“错误”) ,给该参数传递一个空字符串(””)。
szFormat
指定一个包含一个格式说明符的字符串,格式说明符是针对包含在消息中的每个参数的。
arg
指定包含在消息中的参数,至多可达10个。对消息中每个格式说明符必须有一个参数;每个参数类型必须和它各自的格式说明符相匹配。SprintfBox在下列情况下将产生一个编译错误或在运行时失败:
?指定多于十个格式说明符和参数:编译错误。
?参数数目和格式说明符数目不匹配。当一个说明符没有相应的参数,结果字符串将在说明符位置包括不可预测的字符。当参数多于说明符,多余的参数将被插入到结果字符串中。
?一个变量和它各自的格式说明符不匹配。结果字符串将在说明符位置包含不可预测字符。
返回值:
除非你使用本机的Windows 消息框风格(描述如下),返回值是没有意义的。
注解:
?该函数使用Microsoft Windows API MessageBox来创建消息框。消息框的OK按钮包含操作环境产生的文本。是操作环境而不是InstallShield确定消息框的大小和位置。
?熟悉Windows API的高级开发者可以通过在参数nType使用本机消息框风格常量来指定任何风格的消息框。查看你的操作环境编程手册中MessageBox 或WinMessageBox的说明。如果你使用任何本机消息框风格,InstallShiled SprintfBox函数将返回Windows API的返回值。因此,你必须在你的脚本中使用Windows API的返回值。
  例如,如果你传递 YES|NO|CANCEL作为第一个参数,SprintfBox消息框将有Yes,No和Cancel按钮。各个按钮返回值,如Windows API MessageBox定义,是6 (IDYES), 7 (IDNO), 和2 (IDCANCEL)。你必须在你的脚本中使用适当的常量值,作为数字或作为在你的脚本的声明区中定义为数字的常量。
?高级开发者可以直接使用MB_STYLE作为SprintfBox函数的第一个参数来代替常量SEVERE, WARNING或 INFORMATION。MB_STYLE的值列在Windows.h中。你可以给参数nType直接输入值,或可以使用#define 预处理程序指令来定义和该值联系的常量。
?当使用Windows消息框常量时注意下列问题:
? Windows MessageBox类型常量在Windows.h文件中声明,它不能被包括在一个InstallShield脚本中。当使用这些常量时,你必须在安装脚本的声明区定义它们(用#define)。赋给这些常量的值通常可以在由适当的Windows SDK或开发工具提供的一个包含文件中找到。对于Microsoft Visual C++,大多数常量可以在位于DevStudio\Vc\include文件夹的Windows.h文件中找到。
?Windows 和InstallShield消息框常量不能在一个安装中一起使用。如果一个InstallShield消息框常量和一个 Windows 消息框常量用一个或运算符组合,Windows 消息框常量将被忽略。
?一些Windows 消息框风格在一些Windows 平台不受支持。为确定一个特定的风格是否受安装确定的操作系统支持,咨询适当的Windows SDK。

4.15  Welcome
语法:Welcome (szTitle, nReserved);
说明:Welcome函数显示一个对话框来欢迎最终用户。
参数:
szTitle
指定该对话框的标题。为显示缺省标题(“欢迎”) ,给该参数传递一个空字符串。
nReserved
给该参数传递0。
返回值:
NEXT (1):表明最终用户选择NEXT按钮。
BACK (12):表明最终用户选择BACK按钮。
< 0:表明Welcome未能显示对话框。
注解:
?在一个过程脚本中,为使InstallShield可以在欢迎对话框的消息文本的第一段中插入产品名称,你必须在调用Welcome前调用SdProductName。(在一个基于事件的脚本中,在Begin事件前,SdProductName被自动调用,以PRODUCT_NAME字符串表入口为参数)。如果你不使用SdProductName来传递一个产品名称,InstallShield不能插入产品名称而是将插入一个附加的空格。

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

2006-09-28,星期四 | 分类:未分类 | 133 views

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, svCompany, svSerial);
说明:SdRegisterUserEx函数创建一个对话框,检索用户姓名、公司名称和序列号。如果svName和svCompany都包含空字符串,InstallShield将从注册表得到用户姓名和公司名称。
    仅当三个编辑区都存在数据时Next按钮才被激活。你不能让任何区域空白。
完成时,SdRegisteruser调用RegDBSetDefaultRoot来将注册表开关键设置给HKEY_CLASSES_ROOT。
参数:
szTitle
指定对话框标题。为显示缺省标题(“用户信息”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。该文本被看作为一个静态控件。为显示该对话框缺省指示,给该参数传递一个空字符串(””)。
svName
返回由用户输入的姓名。注意SdRegisterUserEx显示该参数的初始值由用户进行编辑。如果svName和svCompany都是空字符串,在目标系统注册表中被找到的用户姓名将被显示来进行编辑。
svCompany
返回由用户输入的公司名称。注意SdRegisterUserEx显示该参数的初始值由用户进行编辑。如果svName和svCompany都是空字符串,在目标系统注册表中被找到的公司名称将被显示来进行编辑。
svSerial
返回用户输入的序列号。你可以使用该信息并把它写入一个文件或者把它显示在一个确认对话框中。
返回值:
NEXT (1):表明单击了NEXT按钮。
BACK (12):表明单击了Back按钮。

5.26  SdSelectFolder
语法:SdSelectFolder (szTitle, szMsg, svDefGroup);
说明:SdSelectFolder函数显示供选择的程序文件夹。SdSelectFolder允许你提供一个缺省选择。用户也可以输入一个新的文件夹名。SdSelectFolder将仅返回被选择的或输入的文件夹名。它不能创建文件夹。
参数:
szTitle
指定对话框标题。为显示缺省标题(“选择程序文件夹”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。该文本被看作为一个静态控件。为显示该对话框缺省指示,给该参数传递一个空字符串(””)。
svDefGroup
返回被选文件夹的名称。
返回值:
NEXT (1):表明单击了NEXT按钮。
BACK (12):表明单击了Back按钮。
注解:
?运行在Windows NT下的一个安装中,如果在调用SdSelectFolder前调用ProgDefGroup,由SdSelectFolder显示的程序文件夹(公用或专用)将依赖于传递给ProgDefGroupType的参数。

5.27  SdSetupType
语法:SdSetupType (szTitle, szMsg, svDir, nReserved);
说明:SdSetupType函数显示一个对话框允许最终用户选择三种标准安装类型之一:典型、简易或自定义。这些安装选项显示时有标准描述文本。如果你想加入其它安装类型或改变显示的安装类型名或描述,调用SdSetupTypeEx来替代。
    对话框也显示一个缺省的目标路径。一个Browse按钮装入一个对话框,允许最终用户通过输入一个新文件夹名或从一个列表中选择存在的文件夹来修改目标路径。如果最终用户输入一个不存在的文件夹名,将显示一个消息框来询问是否要创建该文件夹。如果最终用户单击Yes,该函数自动创建指定文件夹。指定文件夹的全限定路径在svDir返回。
如果最终用户在使用组件对话框来选定和撤消选定与已选安装类型相联系的组件后,返回到安装类型对话框,那么那些选择将丢失。这种情况发生是因为SdSetupType函数每次被调用时自动根据选中的安装类型复位缺省组件选项。
参数:
szTitle
指定对话框标题。为显示缺省标题(“安装类型”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。该文本被看作为一个静态控件。为显示该对话框缺省指示,给该参数传递一个空字符串(””)。
svDir
指定一个缺省文件夹名。返回最终用户所选的文件夹名。
nReserved
保留为将来使用。给该参数传递0。
返回值:
TYPICAL (301):表明用户选择典型安装。
COMPACT (302):表明用户选择简易安装。
CUSTOM (303):表明用户选择自定义安装。
BACK (12):表明单击Back按钮。

5.28  SdSetupTypeEx
语法:SdSetupTypeEx (szTitle, szMsg, szReserved, svSetupType, nReserved);
说明:SdSetupTypeEx函数显示一个对话框,当你指定除典型、简易和自定义之外的安装类型时,允许最终用户选择安装类型。
参数:
szTitle
指定对话框标题。为显示缺省标题(“安装类型”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。为显示该对话框缺省指示,给该参数传递一个空字符串(””)。
szReserved
给该参数传递一个空字符串(“”)。不允许其它值。
svSetupType
指定一个缺省安装类型和返回由最终用户选择的安装类型。为使在列表中的第一次安装为缺省选择,给该参数传递一个空字符串(“”)。在该参数返回的字符串将和在IDE中指定的安装类型名相匹配。
nReserved
给该参数传递0。不允许其它值。
返回值:
0:表明SdSetupTypeEx成功。
BACK (12):表明单击了Back按钮。

5.29  SdShowAnyDialog
语法:SdShowAnyDialog (szTitle, szID, nID, nReserved);
说明:SdShowAnyDialog函数显示一个自定义或改进型对话框。该函数仅推荐给高级用户使用。
参数:
szTitle
指定对话框标题。为显示缺省标题(“欢迎”) ,给该参数传递一个空字符串(””)。
szID
指定标识对话框的标识符字符串。如果该参数包含一个空字符串(“”),SdShowAnyDialog使用nID的值。
nID
指定标识对话框的数值型值。如果szID包含一个空字符串(“”),该参数被忽略。
nReserved
给该参数传递0。不允许其它值。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
注解:
?为了使用SdShowAnyDialog函数,你必须知道你希望显示的_isres.dll中的改进型对话框或_isuser.dll中的自定义对话框的ID。
?如果对话框只有静态控件,你不需要修改SdShowAnyDialog脚本文件。但如果你的对话框有其它控件,为了处理用户的反馈,你必须修改Sdsadlg.rul文件,位于你的InstallShield程序文件夹中的Script/Srt文件夹,

5.30  SdShowDlgEdit1
语法:SdShowDlgEdit1 (szTitle, szMsg, szField1, svEdit1);
说明:SdShowDlgEdit1函数创建一个通用对话框,显示一个消息和一个单行编辑区。你可以为该对话框指定一个标题。
参数:
szTitle
指定对话框标题。为显示缺省标题(“编辑数据”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。为在该消息包含由先前调用SdProductName设置的产品名称,在该消息的任何地方插入位置夹%P。当消息被显示时,%P由产品名称代替。
szField1
指定显示在编辑区左边的域名。缺省的域名是“域1:”;为显示缺省名称,给该参数传递一个空字符串(“”)。可以被显示的字符数最大约为10。实际的最大值依赖于域名中每个字符的组合宽度。如果域名超出有效空间,则当对话框被显示时它将从右被截尾。
svEdit1
指定编辑区的初始值;当对话框被关闭时,返回编辑区的值。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。

5.31  SdShowDlgEdit2
语法:SdShowDlgEdit2 (szTitle, szMsg, szField1, szField2, svEdit1, svEdit2);
说明:SdShowDlgEdit2函数创建一个通用对话框,显示一个消息和两个单行编辑区。你可以为该对话框指定一个标题。
参数:
szTitle
指定对话框标题。为显示缺省标题(“编辑数据”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。为在该消息包含由先前调用SdProductName设置的产品名称,在该消息的任何地方插入位置夹%P。当消息被显示时,%P由产品名称代替。
szField1
指定显示在第一个编辑区左边的域名。缺省的域名是“域1:”;为显示缺省名称,给该参数传递一个空字符串(“”)。可以被显示的字符数最大约为10。实际的最大值依赖于域名中每个字符的组合宽度。如果域名超出有效空间,则当对话框被显示时它将从右被截尾。
szField2
为第二个编辑区指定域名。缺省为“域2:”。
svEdit1
指定第一个编辑区的初始值;当对话框被关闭时,返回第一个编辑区的值。
svEdit2
指定第二个编辑区的初始值;当对话框被关闭时,返回第二个编辑区的值。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。

5.32  SdShowDlgEdit3
语法:SdShowDlgEdit3 (szTitle, szMsg, szField1, szField2, szField3, svEdit1, svEdit2, svEdit3);
说明:SdShowDlgEdit2函数创建一个通用对话框,显示一个消息和三个单行编辑区。你可以为该对话框指定一个标题。
参数:
szTitle
指定对话框标题。为显示缺省标题(“编辑数据”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。为在该消息包含由先前调用SdProductName设置的产品名称,在该消息的任何地方插入位置夹%P。当消息被显示时,%P由产品名称代替。
szField1
指定显示在第一个编辑区左边的域名。缺省的域名是“域1:”;为显示缺省名称,给该参数传递一个空字符串(“”)。可以被显示的字符数最大约为10。实际的最大值依赖于域名中每个字符的组合宽度。如果域名超出有效空间,则当对话框被显示时它将从右被截尾。
szField2
为第二个编辑区指定域名。缺省为“域2:”。
szField3
为第二个编辑区指定域名。缺省为“域2:”。
svEdit1
指定第一个编辑区的初始值;当对话框被关闭时,返回第一个编辑区的值。
svEdit2
指定第二个编辑区的初始值;当对话框被关闭时,返回第二个编辑区的值。
svEdit3
指定第三个编辑区的初始值;当对话框被关闭时,返回第三个编辑区的值。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。

5.33  SdShowFileMods
语法:SdShowFileMods (szTitle, szMsg, szTargetFile, szAltFile, listChanges, nvSelection);
说明:SdShowFileMods函数创建一个对话框,显示你想要对一个文件进行的修改。下面这些选择是有效的:
修改目标文件。
修改替代文件,它是目标文件的拷贝,但非联合修改。
不作任何修改。SdShowFileMods不对文件作修改。你必须使用适当的文件函数把那些修改写入你的脚本。
参数:
szTitle
指定对话框标题。为显示缺省标题(“修改文件”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(“”)。
szTargetFile
指定要修改的文件名。它将和第一个单选按钮一起显示。
szAltFile
如果最终用户决定要作修改,指定该文件的替代名。这将和第二个单选按钮一起显示。为使用sztargetFile指定的扩展名为.bak的文件名,给该参数传递一个空字符串(””)。
listChanges
指定字符串列表名,它包含对文件所作修改的列表。该列表位于一个多行编辑区,允许最终用户选择要实现的修改。
nvSelection
返回最终用户选择的按钮的ID:
101: “让安装修改<szTargetFile>文件。”
102: “保存对<szAltFile>所要求的修改。”
103: “不作任何修改。”
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。

5.34  SdShowInfoList
语法:SdShowInfoList (szTitle, szMsg, listID);
说明:SdShowInfoList函数创建一个对话框,显示一个可滚动的消息列表。
参数:
szTitle
指定对话框标题。为显示缺省标题(“信息”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在信息框上方一行的消息。如果消息长于一行,将被从右截尾。如果消息包含一个换行符(\n),换行符后的文本不被显示。为显示缺省消息(”Text”),给该参数传递一个空字符串(“”)。
listID
指定显示在对话框的消息列表。所有显示在对话框的消息为只读。
返回值:
NEXT (1):表明单击了Next按钮。
BACK (12):表明单击了Back按钮。
注解:
?多行编辑区必须为只读。
?SdShowInfoList可以显示大约多达57200个字符的列表。

5.35  SdShowMsg
语法:SdShowMsg (szMsg, bShow);
说明:SdShowMsg函数打开或关闭一个小的非模态窗口,显示由szMsg指定的消息。当bShow为TRUE,窗口被打开,消息显示在窗口中,并且继续脚本中下一个语句的处理。注意SdShowMsg窗口被置于安装窗口的中央。当bShow为FALSE时,szMsg被忽略并且关闭SdShowMsg窗口。
参数:
szMsg
指定显示在窗口的消息。为显示缺省消息(“安装正查找已安装的组件”),给该参数传递一个空字符串(“”)。当bShow为FALSE时该参数被忽略。
bShow
指定是否要打开或关闭窗口。在该参数位置传递下列预定义常量之一:
TRUE:如果窗口没有打开则打开它。
FALSE:如果窗口打开了则关闭它。
返回值:
返回值总为0。
注解:
?SdShowMsg函数提供了一个简单方法使得脚本进程继续的同时,可以将一个显示丰富资料的消息保留在屏幕上。
?当SdShowMsg窗口是打开的,随后的对SdShowMsg(第二个参数为TRUE)的调用被忽略。为改变消息,你必须首先以第二个参数为FALSE调用SdShowMsg来关闭窗口,然后以第二个参数为TRUE,szMsg为新的消息再次调用SdShowMsg。
?SdShowMsg窗口水平调整大小来在一行上显示szMsg的值。如果消息的长度超过窗口的最大宽度,消息被截尾以适应窗口。
?SdShowMsg被设计为单行显示消息。不要在szMag中嵌入换行符(\n)。

5.36 SdStartCopy
语法:SdStartCopy (szTitle, szMsg, listData);
说明:SdStartCopy函数创建一个多行编辑区,显示安装过程中所作的设置和选择。为按需改变设置,用户可以单击对话框的Back按钮来返回到以前的对话框。在检索用户的选择后,开始文件传输处理之前调用SdStartCopy。
    使用一个字符串列表来收集安装过程中得到的信息。然后你可以将该字符串列表传递给SdStartCopy的参数listData。SdStartCopy将显示该列表并允许用户在继续文件传输处理之前确认这些信息是正确的。
参数:
szTitle
指定对话框标题。为显示缺省标题(“开始拷贝文件”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在多行编辑区上方的静态文本区的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(“”)。
listData
指定从最终用户检索得的信息字符串列表。SdStartCopy会自动将每个元素放置到多行编辑区。如果列表为空,该多行编辑区将被隐藏并且只有静态文本区为可见。
返回值:
NEXT (1):表明用户选定了Next按钮。
BACK (12):表明用户选定了Back按钮。

5.37  SdWelcome
语法:SdWelcome (szTitle, szMsg);
说明:SdWelcome函数显示一个对话框,欢迎最终用户。
参数:
szTitle
指定显示在对话框标题部分的文本。为显示缺省标题(“欢迎”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在欢迎对话框中的消息。为在该消息中包含先前调用SdProductName而设置的产品名称,在该消息的任意位置插入一个位置夹%P。当该消息被显示时,%P被产品名称代替。为显示缺省欢迎消息(“欢迎进入%P安装程序。该程序将在你的计算机上安装%P”),给该参数传递一个空字符串(“”)。
返回值:
NEXT (1):表明单击了Next按钮。

5.38  SdWelcomeMaint
语法:SdWelcomeMaint (szTitle, szMsg, nType);
说明:SdWelcomeMaint函数显示一个对话框 ,在一个维护型安装(也就是,一个已经被运行的安装的重运行)的开始时使用。该对话框包含修改、修复、删除选项按钮。
参数:
szTitle
指定对话框标题。为显示缺省标题(“欢迎”) ,给该参数传递一个空字符串(””)。
szMsg
指定显示在对话框的消息。为显示该对话框的缺省指示,给该参数传递一个空字符串(“”)。
nType
指定哪个选项按钮为缺省选择。你必须在该参数位置传递下列预定义常量之一,使在对话框中正确显示:
MODIFY:修改按钮为缺省选择。
REPAIR:修复按钮为缺省选择。
REMOVEALL:删除按钮为缺省选择。
返回值:
MODIFY (301):表明当单击Next按钮后修改按钮被选定。
REPAIR (302):表明当单击Next按钮后修复按钮被选定。
REMOVEALL (303):表明当单击Next按钮后删除按钮被选定。

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

2006-09-28,星期四 | 分类:未分类 | 113 views

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)

2006-09-28,星期四 | 分类:未分类 | 115 views

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  CtrlPGroups
语法:CtrlPGroups (szDialogName, nControlID);
说明:CtrlPGroups函数将一个现存程序文件夹列表放到一个列表框或组合框控件中。该函数仅工作于自定义对话框。
参数:
szDialogName
Specifies the name of a custom dialog box that contains the control to use.
指定自定义对话框的名称,该对话框包含要使用的控件。
nControlID
指定一个列表框或组合框控件的资源ID。
返回值:
0:CtrlPGroups成功把指定的程序文件夹列表放到控件中。
< 0:CtrlPGroups未能把指定的程序文件夹列表放到控件中。

6.11  CtrlSelectText
语法:CtrlSelectText (szDialogName, nControlID);
说明:CtrlSelectText函数选定一个编辑区或一个组合框的编辑区中的所有文本。如果该控件是一个多行编辑区,该函数选定所有行的所有文本。该函数仅工作于自定义对话框。
参数:
szDialogName
指定一个有效对话框的名称,该对话框包含要被选定的编辑区。
nControlID
指定要被选定的编辑区或组合框控件的资源ID。
返回值:
0:CtrlSelectText成功选定了区域中的所有文本。
< 0:CtrlSelectText未能选定文本。

6.12  CtrlSetCurSel
语法:CtrlSetCurSel (szDialogName, nControlID, szText);
说明:CtrlSetCurSel函数在指定的列表框或组合框控件中查找一个字符串。如果找到,CtrlSetCurSel选定(高亮显示)该项目。对多选列表框和组合框则调用CtrlSetMultCurSel。CtrlSetCurSel函数仅使用于自定义对话框。
参数:
szDialogName
指定一个有效自定义对话框的名称,该对话框包含要被查找的控件。
nControlID
指定包含查找字符串的控件的资源ID。
szText
指定查找字符串。如果该字符串被找到,则被选定(高亮显示)。
返回值:
0:CtrlSetCurSel成功找到和选定了指定的字符串。
< 0:CtrlSetCurSel未能找到和选定指定的字符串。

6.13  CtrlSetFont
语法:CtrlSetFont (szDialogName, hFont, nControlID);
说明:CtrlSetFont函数指定一个自定义对话框中一个控件的字体。在对话框消息处理循环中的DLG_INIT例程中调用该函数。
参数:
szDialogName
指定一个有效对话框的名称。
hFont
指定已经通过调用GetFont而被创建的一个字体的处理程序。
nControlID
指定其字体要被设置的控件的资源ID。为给对话框中的所有控件设置字体,给该参数传递预定义常量ALLCONTROLS。
返回值:
0:CtrlSetFont成功在一个对话框中设置所要求的字体。
< 0:CtrlSetFont未能在一个对话框中设置所要求的字体。

6.14  CtrlSetList
语法:CtrlSetList (szDialogName, nControlID, listID);
说明:CtrlSetList函数把一个字符串列表中的内容放到指定的单或多选列表框或组合框控件中。任何原先存在的内容被包含在listID中的项所置换。InstallShield将字符串列表中的每个元素放到列表框或组合框控件中的每个元素中。
参数:
szDialogName
指定包含列表框或组合框的对话框的名称。
nControlID
指定列表框或组合框的资源ID。
listID
指定一个字符串列表的名称,该列表包含要被拷贝到列表框或组合框控件中的元素。
返回值:
0:CtrlSetList成功将字符串的内容放到控件中。
< 0:CtrlSetList未能将字符串的内容放到控件中。

6.15  CtrlSetMLEText
语法:CtrlSetMLEText (szDialogName, nControlID, listID);
说明:CtrlSetMLEText函数设置一个多行编辑框控件中的文本。InstallShield 将listID中的每个字符串分别放进该多行编辑框控件中。该函数仅使用于自定义对话框。
参数:
szDialogName
指定一个对话框的名称。
nControlID
指定一个对话框中的多行编辑框控件的资源ID。
listID
指定一个有效字符串列表的名称 ,该列表包含了要被拷贝到多行编辑控件中的元素。
返回值:
0:CtrlSetMLEText将文本设置到控件中。
< 0:CtrlSetMLEText未能设置控件中的文本。

6.16  CtrlSetMultCurSel
语法:CtrlSetMultCurSel (szDialogName, nControlID, szText, nSelectFlag);
说明:CtrlSetMultCurSel函数查找指定的多选列表框或组合框控件。如果nSelectFlag 被设置为TRUE,CtrlSetMultCurSel选定(高亮显示)被找到的项目。该函数仅使用于自定义对话框。
参数:
szDialogName
指定一个自定义对话框的名称。
nControlID
指定对话框中多选列表框或组合框控件的资源ID。
szText
指定查找字符串。
nSelectFlag
指示当CtrlSetMultCurSel找到一个项目时是否要高亮显示它。在该参数位置传递下列预定义常量之一:
TRUE:表明该项目要被高亮显示。
FALSE:表明该项目不被高亮显示。
返回值:
0:CtrlSetMultCurSel在控件中找到文本,并根据nSelectFlag所指示的高亮显示它或不高亮显示它。
< 0:CtrlSetMultCurSel未能在控件中找到文本。

6.17  CtrlSetState
语法:CtrlSetState (szDialogName, nControlID, nState);
说明:CtrlSetState函数设置一个自定义对话框中的一个复选框或单选钮的当前状态。当你用一个资源编辑器或对话框编辑器创建单选钮和复选框时,你可以设置它们的某些特性。如果你因一个按扭的性能遇到了困难,则在编辑器中检查该控件的特性。
参数:
szDialogName
指定一个对话框的名称,该对话框包含复选框或单选钮控件。
nControlID
指定复选框或单选钮控件的资源ID。
nState
指定按扭控件的新状态。在该参数位置传递下列预定义常量之一:
BUTTON_CHECKED:设置按扭状态为CHECKED。
BUTTON_UNCHECKED:设置按扭状态为UNCHECKED。
返回值:
0:CtrlSetState成功设置复选框或单选钮控件的状态。
< 0:CtrlSetState未能设置该控件的状态。

6.18  CtrlSetText
语法:CtrlSetText (szDialogName, nControlID, szText);
说明:CtrlSetText函数设置一个自定义对话框中一个单行编辑区,静态文本区或按扭控件的文本。为设置多行编辑区中的文本,调用CtrlSetMLEText。
参数:
szDialogName
指定一个对话框的名称。
nControlID
指定其中的文本要被设置的单行编辑区,静态文本区或按扭控件的资源ID。
szText
指定放到控件中的文本。
返回值:
0:CtrlSetText成功设置控件中的文本。
< 0:CtrlSetText未能设置控件中的文本。

6.19  DefineDialog
语法:DefineDialog (szDialogName, hInstance, szDLLName, nDialogID, szDialogID,
  nReserved, hwndOwner, lMsgLevel);
说明:DefineDialog函数定义一个自定义对话框。当你需要指定一个其属性不能由EzDefineDialog指定的对话框的属性时,调用该函数而不是EzDefineDialog。注意DefineDialog不显示自定义对话框。为显示一个自定义对话框,你必须调用WaitOnDialog。
参数:
szDialogName
指定你要定义的自定义对话框的名称。该名称标识该对话框并使用在所有随后对自定义对话框函数的调用中。该对话框的名称是区分大小写的,你必须完全按照你在该参数指定的那样来使用它。
hInstance
指定对话框驻留其中的DLL的实例句柄。如果你在szDLLName指定DLL的全限定名,你可以将该参数指定为0。为得到一个DLL的实例句柄,调用Microsoft Windows API LoadLibrary。
szDLLName
指定包含对话框资源的DLL文件的全限定名。如果你不指定一个路径,InstallShield在Windows 文件夹中查找该DLL。如果在那儿没有找到,InstallShield查找在查找路径中指定的文件夹。如果你用参数hInstance指定DLL的实例句柄,你可以给该参数传递一个空字符串。当对话框位于_isuser.dll时,你可以为该参数指定一个空字符串。如果该参数指定为一个空字符串,InstallShield将自动检测_isuser.dll。
nDialogID
如果你使用一个数字(而不是一个字符串)来标识对话框资源时,该参数指定资源ID。该参数只在szDialogID是一个空字符串时被使用。建议使用该参数而不是szDialogID来标识对话框资源。
szDialogID
如果你使用一个字符串(而不是一个数字)来标识对话框资源时,该参数指定资源ID。如果该参数是一个空字符串,nDialogID被用来标识对话框资源。强烈提议使用nDialogID而不是szDialogID来标识对话框资源。
nReserved
给该参数传递0。不允许其它值。
hwndOwner
指定主窗口的窗口句柄。将该参数指定为HWND_INSTALL来使得InstallShield主安装窗口成为对话框的主窗口。
lMsgLevel
该参数指定哪些窗口消息要被发送到该对话框。你必须用或操作符来将下列常量之一和常量DLG_CENTERED组合:
DLG_MSG_STANDARD:筛选掉大多数Windows消息;只有那些直接和对话框控件关联的被传递到对话框。
DLG_MSG_ALL :传递大多数Windows消息。
返回值:
0:DefineDialog成功定义对话框。
DLG_ERR_ALREADY_EXISTS (-3):你正试图定义一个已经由DefineDialog定义的对话框。你不能用相同的名称定义两个对话框。
DLG_ERR (-1):表示发生一个未确定的错误。

6.20  EndDialog
语法:EndDialog (szDialogName);
说明:EndDialog函数关闭一个自定义对话框。它删除对话框并启动对话框关闭进程。当下列任意一种情况存在时,使用EndDialog:
Next按扭或其等效已经被处理。
Cancel按扭或其等效已经被处理。
Close系统菜单选项已经被选定(该行为发送DLG_CLOSE消息)。
用户结束对话框操作的任何其它情况。
参数:
szDialogName
指定要关闭的对话框的名称。
返回值:
0:EndDialog成功关闭对话框。
< 0:EndDialog未能关闭对话框。
注解:
?在调用EndDialog关闭一个自定义对话框后,调用ReleaseDialog函数来释放与该自定义对话框关联的内存。
?只要你还没有调用ReleaseDialog来把对话框从内存删除,你可以就通过调用WaitOnDialog来重新显示一个已经由调用EndDialog关闭的自定义对话框。然而要注意,如果你调用WaitOnDialog来打开一个在你脚本中已经被打开和关闭的对话框时,你必须再次调用CmdGetHwndDlg来得到新句柄。老的句柄不再有效。

6.21  EzDefineDialog
语法:EzDefineDialog (szDialogName, szDLLName, szDialogID, nDialogID);
说明:EzDefineDialog函数定义一个自定义对话框。注意EzDefineDialog不显示自定义对话框。为显示一个自定义对话框,你必须调用WaitOnDialog。
参数:
szDialogName
指定和由szDialogID 或 nDialogID指定的对话框相关联的名称。为处理该对话框,在随后的对自定义对话框函数的调用中使用该名称。注意该对话框的名称是区分大小写的,你必须完全按照你在该参数指定的那样来使用它。
szDLLName
指定包含对话框资源的DLL文件的全限定名。如果你不指定一个路径,InstallShield在Windows 文件夹中查找该DLL。如果在那儿没有找到,InstallShield查找在查找路径中指定的文件夹。如果你用参数hInstance指定DLL的实例句柄,你可以给该参数传递一个空字符串。当对话框位于_isuser.dll时,你可以为该参数指定一个空字符串。如果该参数指定为一个空字符串,InstallShield将自动检测_isuser.dll。
szDialogID
如果你使用一个字符串(而不是一个数字)来标识对话框资源时,该参数指定资源ID。如果该参数是一个空字符串,nDialogID被用来标识对话框资源。强烈提议使用nDialogID而不是szDialogID来标识对话框资源。
nDialogID
如果你使用一个数字(而不是一个字符串)来标识对话框资源时,该参数指定资源ID。该参数只在szDialogID是一个空字符串时被使用。建议使用该参数而不是szDialogID来标识对话框资源。
返回值:
0:EzDefineDialog成功定义对话框。
DLG_ERR_ALREADY_EXISTS (-3):你正试图定义一个已经由EzDefineDialog定义的对话框。你不能用相同的名称定义两个对话框。
DLG_ERR (-1):表示发生一个未确定的错误。

6.22  GetFont
语法:GetFont (szFontName, nPointSize, nAttributes);
说明:GetFont函数建立一个字体并检索它的句柄,你可以使用字体句柄来指定在一个自定义对话框中的控件使用的字体。
参数:
szFontName
指定你要建立的字体的名称。
nPointSize
指定你要建立的字体的点数。
nAttributes
指定字体风格。在该参数位置传递下列预定义常量之一。可以用按位或操作符(|)组合常量来指定多种风格:
STYLE_BOLD:指定一个粗体风格的字体。
STYLE_ITALIC:指定斜体风格。
STYLE_NORMAL:指定一个正常的系统字体。
STYLE_UNDERLINE:指定字符被加下划线。
返回值:
XXXX:XXXX是该字体的句柄。
0:GetFont未能建立所要求的字体。
注解:
?当安装中止时,InstallShield将删除所有由该函数创建的字体。另外,中止时,InstallShield释放所有系统资源。

6.23  HIWORD
语法:HIWORD (lValue);
说明:HIWORD函数从由lValue指定的32位整型值中析取和返回高位字(高16位)。
参数:
lValue
指定要从中析取高16位的32位整数。
返回值:
HIWORD返回lValue的高位字(高16位)。
注解:
?InstallShield的 HIWORD因使用符号扩展而和相应的C的宏不同。因此,如果lValue是一个负数,则由HIWORD返回的值的高位字节用1填充。如有必要,你可以将结果和0xFFFF按位与(AND)来生成一个正数,如下所示:
lValue = HIWORD(lValue);
lValue = lValue & 0xFFFF;

6.24  LOWORD
语法:LOWORD (lValue);
说明:LOWORD函数从由lValue指定的32位整型值中析取和返回低位字(低16位)。
参数:
lValue
指定要从中析取低16位的32位整数。
返回值:
该函数返回整数的低位字(低16位)。

6.25  ReleaseDialog
语法:ReleaseDialog (szDialogName);
说明:ReleaseDialog 函数释放与szDialogName标识的自定义对话框相关联的所有内存。调用EndDialog后调用该函数。在消息处理的case语句外面调用该函数。
参数:
szDialogName
指定要消除的对话框的名称。
返回值:
0:表明函数成功释放和对话框相关联的所有内存。
DLG_ERR (-1):函数失败。对话框名可能是无效的。
DLG_ERR_ENDDLG (-2):在调用EndDialog前调用了ReleaseDialog。你必须首先调用EndDialog来删除对话框。

6.26  SdMakeName
语法:SdMakeName (svSection, szDlg, szUnused, nvDlgName);
说明:SdMakeName函数为一个对话框创建一个节名。该节名在向一个.iss文件写或从一个.iss文件中读时使用,.iss文件由InstallShield Silent使用。
参数:
svSection
指定节名。InstallShield使用变量szDlg 和 nvDlgName来给该变量置一个值。该值由SilentReadData 和SilentWriteData使用。
szDlg
指定对话框的名称,用来创建一个节名。
szUnused
该参数未用;给该参数传递一个空字符串。
nvDlgName
指定计数器,它记录针对szDlg指定的对话框而调用SdMakeName的次数。InstallShield自动递增该计数器。为每个自定义对话框使用一个唯一的变量名。(看下面的注解)
返回值:
无。
注解:
?为正确命名节,你必须为每个不同的自定义对话框在第四个参数使用一个唯一的变量名。要做到这一点的简单的方法是:使用szDlg的对话框名来命名变量。例如,当szDlg 是 "MyDlgOne"时,命名第四个参数的变量为nvMyDlgOne;当szDlg 是 "MyDlgTwo"时,命名变量为nvMyDlgTwo。

6.27  SilentReadData
语法:SilentReadData (szSection, szValName, nValType, svVal, nvVal);
说明:当一个安装运行于静止方式(silent mode)时(带-s开关运行Setup.exe时),SilentReadData函数指示InstallShield Silent如何为一个自定义对话框读取.iss文件对话框数据。注意你可以通过调用SilentWriteData来创建一个.iss文件。
为在你的脚本中使用SilentReadData,构造逻辑结构因而它首先检测来确认安装运行于静止方式。把SilentReadData函数的调用放置在一个测试系统变量MODE的if-else语句中,如下所示:
if (MODE=SILENTMODE) then
// 在此调用SilentReadData。
else
// 在此调用一个正常的,non-silent 函数。
endif;
自定义对话框可以是在你的安装脚本中使用函数(如EzDefineDialog 和WaitOnDialog)调用和处理的资源,也可以完全是外部的,如调用DLL中的函数一样被执行。另外一种情况是,你必须使用SilentReadData从.iss文件中检索对话框按扭的返回值(Next、Back、Cancel等等。)和在变量中被设置或返回的值。
参数:
szSection
指定.iss文件中的对话框数据的节的名称。不要包括方括号([ ])。参数szSection的格式为<functionname>-<number>,<functionname>是在脚本中使用的对话框函数名,<number>是在脚本中对话框出现的次数,从0开始。例如,MyDialog函数对话框的第一次出现会有一个szSection值"MyDialog-0",第二次出现则为"MyDialog-1",第三次为"MyDialog-2",如此继续。
szValName
指定出现在.iss文件的对话框数据的节中的值名。每个对话框至少有一个给szValName的值,来标识对话框按扭控件(BACK, NEXT 或 OK, 或 CANCEL)返回的值。其它值名用来标识和其它对话框控件相关联的值和数据。
nValType
标识赋给szValName中的值名的值的数据类型。值本身被保存在svVal 或 nvVal中,视nValType的值而定。在该参数位置传递下列预定义常量之一:
DATA_STRING:赋给szValName中的值名的值是STRING类型。它的值将保存在svValue中。
DATA_NUMBER:赋给szValName中的值名的值是NUMBER类型。它的值将保存在nvValue中。
DATA_COMPONENT:赋给szValName中的值名的值是一个组件名。它的值将保存在svValue中。
DATA_LIST:赋给szValName中的值名的值是一个InstallShield列表的列表ID。它的值将保存在nvValue中。
svVal
指定当nValType是 DATA_STRING 或DATA_COMPONENT时,赋给szValName中的值名的值。
nvVal
指定当nValType是DATA_NUMBER 或 DATA_LIST时,给szValName中的值名的值。
返回值:
0:SilentReadData成功指示InstallShield Silent如何为自定义对话框读取对话框数据。
< 0:SilentReadData未能指示InstallShield Silent如何为自定义对话框读取对话框数据。
注解:
下列情况下SilentReadData将失败(返回值小于0):
.iss文件未找到。
脚本中的对话框次序没有和.iss文件中指定的对话框次序完全匹配。
指定的对话框数据节在.iss文件中没有被找到。
指定的关键字名没有在指定的对话框数据节中找到。
赋给指定的关键字名的值的数据类型和在SilentReadData调用中指定的不匹配。

6.28  SilentWriteData
语法:SilentWriteData (szSection, szValName, nValType, szVal, nVal);
说明:SilentWriteData函数记录安装过程中自定义对话框中所作的选择。该选择数据被写到一个.iss文件中,供InstallShield Silent使用。为在一个安装过程中写写一个.iss文件,带-r开关项运行Setup.exe。
    自定义对话框可以是在你的安装脚本中使用函数(如EzDefineDialog 和WaitOnDialog)调用和处理的资源,也可以完全是外部的,如调用DLL中的函数一样被执行。另外一种情况是,你必须使用SilentReadData从.iss文件中检索对话框按扭的返回值(Next, Back, Cancel,等等。)和在变量中被设置或返回的值。
参数:
与SilentReadData函数的参数相同。
返回值:
0:SilentReadData成功写自定义对话框的对话框数据到Setup.iss中。
< 0:SilentReadData未能写自定义对话框的对话框数据到Setup.iss中。

6.29  WaitOnDialog
语法:WaitOnDialog (szDlgName);
说明:WaitOnDialog函数显示一个自定义对话框。你的脚本可以根据该函数的返回值来处理用户的不同响应。
参数:
szDlgName
指定要显示的对话框的ID。
返回值:
dialog控件ID:接收到WM_COMMAND消息的对话框控件的ID。
DLG_CLOSE (-200):该消息作为对话框将要被关闭的信号。
DLG_ERR (-1):如果发生任何错误,则接收到该消息。
DLG_INIT (-100):就在对话框要被显示前接收到该消息。

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

2006-09-28,星期四 | 分类:未分类 | 117 views

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
如果在目标驱动器上有足够有效空闲空间,返回0。如果在目标驱动器上没有足够空闲空间,返回所需的大小(字节数)。
返回值:
0:ComponentCompareSizeRequired 成功。
< 0:ComponentCompareSizeRequired 失败。调用ComponentError看附加信息。

7.3  ComponentDialog
请参阅4.6

7.4  ComponentError
语法:ComponentError (svComponentSource, svComponent, svFileGroup, svFile, nvError);
说明:当一个组件函数返回值小于0时ComponentError函数得到辅助错误信息。下列代码段显示一个典型的ComponentError的实现:
   nResult = ComponentTransferData(MEDIA);
   if(nResult < 0) then
      ComponentError(svComponentSource, svComponent, svFileGroup, svFile, nvError);
      SprintfBox(INFORMATION, "ComponentTransferData Error Information",
         "ComponentTransferData had the following error:\n\n" +
         "Media Name: %s\nComponent: %s\nFile Group: %s\n" +
         "File: %s\nError Number: %ld"
         svComponentSource, svComponent, svFileGroup, svFile, nvError);
   endif;
    ComponentError函数必须只有在另一个组件函数返回值小于0时才被调用。如果当另一个组件函数没有返回小于0的值时调用ComponentError函数,则可能返回无效的错误代码。
    调用下列函数时ComponentError不返回有关发生的错误的辅助信息:
ComponentSetupTypeEnum
ComponentSetupTypeSet
参数:
svComponentSource
返回与由nvError指定的错误相关的文件媒体库或脚本创建的组件组的媒体名。
svComponent
返回与由nvError指定的错误相关的组件名。
svFileGroup
返回与由nvError指定的错误相关的文件组名。
svFile
返回与由nvError指定的错误相关的文件名。
nvError
返回一个代码,它标识先前调用一个组件相关函数时发生的错误类型。这些错误的代码描述如下:
下表描述了由ComponentError返回的错误代码。注意在纠正了涉及媒体的错误后,你必须重建工程。
代码
   描   述 
        原   因
-101
不能添加组件。
ComponentAddItem不能添加一个组件到脚本创建的组件组中。
-102
指定的组件已经存在。
ComponentAddItem被用相同的媒体名和组件名调用了两次。
-104
指定的组件名不是有效的。
传递给ComponentInitialize第二个参数的值不是有效的。
-105
指定的组件不能在媒体上找到。
试图访问一个不存在于指定媒体上的组件。当调用一个组件函数,而没有正确指定一个组件名时发生该错误。被指定的组件名必须和显示在组件窗格中或在对ComponentAddItem的调用中的完全相同。区分大小写。
-106
不能解压缩一个文件。
发生一个内部错误。技术支持请联系:
http://support.installshield.com/contact/req_sup.asp.
-107
在ComponentMoveData调用中,指定了一个无效的磁盘ID。
ComponentMoveData已经被调用来传输文件而还没有被重新初始化。为重新初始化ComponentMoveData,
以第一个参数为一个空字符串来调用该函数。
-108
磁盘空间溢出。
目标磁盘或目录没有足够的空闲空间;因为TARGETDIR无效,磁盘空间不能被确定;或一个组件的脚本创建的文件夹还没有被设置。
-109
EnterDisk函数调用失败。
发生内部错误。
-112
不能找到指定的文件。
为确定丢失了哪个文件,检查ComponentError返回的参数svFile的值。
-113
指定的文件为只读,不能被打开。
Data1.cab文件(或其它数据cab文件之一)丢失或破坏;或一个CD-ROM上的解压缩数据文件丢失。
-114
指定的文件不能以读/写打开。
不能增补到分类文件。技术支持请联系:
http://support.installshield.com/contact/req_sup.asp.
-115
指定的文件不能以写打开。
试图改写一个文件组中的一个锁定文件,该文件组没有锁定位(potentially locked )或共享属性设置为Yes或到目标文件夹的路径是无效的。
-117
不能读指定文件。
一个数据cab文件(.cab)或一个解压缩数据文件可能已毁坏。
-118
不允许试图操作脚本创建的组件组。
一个脚本创建的组件组名被传递给一个只在文件媒体上执行的组件函数。
-119
不能正确自注册一个文件。
该错误有许多可能的原因。详细情况可参阅InstallShield Knowledge Base中的Q101538文档。
-120
不能对ComponentMoveData中的共享文件进行更新。
内部错误。
-121
不能写文件。
内部错误。
-123
不能找到一个文件组。
不能找到指定的文件组。丢失的文件组名由ComponentError返回在参数svFileGroup。
-125
组件函数中指定的列表无效。
当调用ComponentListItems,ComponentSetupTypeEnum
时,确认你传递给函数的列表是有效的。
-126
不允许试图操作文件媒体库。
一个文件媒体名传递给一个只在脚本创建的组件集上执行的组件函数(如,ComponentAddItem)。
-127
媒体已经初始化。
ComponentInitialize被调用来初始化一个已经被初始化了的媒体。
-128
指定的文件媒体库没有由InstallShield媒体向导生成。
Data1.cab文件被破坏,或调用ComponentInitialize中指定的文件不是一个InstallShield生成的cab文件。
-132
指定的媒体没有被找到。
媒体已经被声明但还没有和任何组件相关联。确保脚本创建的组件或文件媒体组件和该媒体相关联。
-133
指定媒体发生一个错误。
ComponentMoveData已经被调用来传输文件但还没有被重新初始化。如果你的脚本调用ComponentMoveData超过一次,你必须每次调用后重新初始化它,可通过让它的第一个参数为一个空字符串来再次调用它而实现重新初始化。
-136
不能分配内存。
安装没有足够的有效内存。显示一个消息给最终用户,关闭所有其它的应用程序或取消安装,重启系统和重新开始安装。
-137
指定的选项是无效的。
给一个组件函数指定了一个无效的选项,例如,当一个文件组和文件名都需要时,只指定了一个文件组。
-139
指定的口令不符。
指定的口令与保存在指定的文件媒体库或组件中的口令不符。
-141
指定的口令不能被找到。
ComponentValidate被调用来验证一个没有被设置口令的组件或文件媒体库。
-142
媒体或组件的口令没有被确认。
在用ComponentMoveData传输那些组件前没有调用ComponentValidate来验证组件和/或文件媒体库。
-145
组件的目标路径没有找到。
一个脚本定义的文件的目标目录没有被设置或是无效的。增加或改正对ComponentSetTarget的调用;然后重建。
-147
传递无效值给一个组件有关函数。
传递给一个组件有关函数的一个值无效。例如,传递一个空字符串给ComponentAddItem函数的第二个参数可以引起该错误。
-148
数据不能从互联网读得。
当使用InstallFromTheWeb与InstallShield5连接时发生该错误。由于文件被破坏或Internet连接丢失并且不能通过InstallFromTheWeb重新建立连接,InstallShield不能从Internet读取数据
-149
Internet已经被断开。
当使用InstallFromTheWeb与InstallShield5连接时发生该错误。Internet连接已经丢失并且不能通过InstallFromTheWeb重新建立连接。
-150
cab文件(.cab)由InstallShield5的旧版本生成。
确保工程是由你的InstallShield5最新版本建立的。确保你不在使用由InstallShield5的不同版本生成的不匹配的cab文件(.cab)。
-620
第三方(third-party)外壳程序错误
咨询有问题的外、外壳程序的有关文档来确定它是否是100%兼容的开发人员外壳程序。
-623
重命名文件错误。
没有将Potentially Locked属性设置为Yes时,试图传递一个可执行文件(一个.exe或.cm文件)。
返回值:
0:ComponentError成功。
< 0:ComponentError失败。

7.5  ComponentFilterLanguage
语法:ComponentFilterLanguage(szMediaLibrary, nLangID, bFiltered);
说明:ComponentFilterLanguage函数从基于语言的文件传输中筛选(排除)文件。缺省时,包含在媒体库中的所有语言都是不筛选的(包含的)。给参数nLangID使用的语言ID选项不能用按位或操作(|)联接。你必须为你所希望筛选或不筛选的每个语言都调用ComponentFilterLanguage。
    当安装程序第一次运行时所做的任何筛选在一个维护安装程序中也必须做。确定在初始安装和维护安装过程中被执行的代码中都调用该函数。不要从下列事件处理程序中调用该函数:OnAppSearch, OnCCPSearch, OnFirstUIBefore, OnFirstUIAfter, OnMaintUIBefore, or OnMaintUIAfter。
在安装过程中,筛选语言具体文件组的最简单的方法如下所示:
通过调用ComponentFilterLanguage(参数nLangID为ISLANG_ALL,参数bFilter设置为TRUE时)来筛选(排除)所有语言。
对每个你要安装的语言,都需在nLangID设置为合适的语言常量并且参数bFiltered设置为FALSE时调用ComponentFilterLanguage。每个调用将不筛选(包含)nLangID指定的语言的文件组。
你不能通过或操作(|)在参数nLangID位置指定多个语言常量。指定多个语言常量将导致函数执行不正确。
当使用ComponentFilterLanguage时,记住在程序块前加入#include “Sdlang.h”。如果你使用由工程向导生成的Setup.rul,该行已经为你包括在里面了。
该函数不能工作于脚本创建的组件组。
参数:
szMediaLibrary
指定文件媒体库的媒体名。
nLangID
指定要筛选或不筛选的语言的ID。注意对每次函数调用仅能指定一个语言常量。为筛选所有语言,给该参数传递ISLANG_ALL。
bFiltered
指定是否筛选(排除)或不筛选(包含)nLangID指定的语言。在该参数位置传递下列预定义常量之一:
TRUE:筛选nLangID指定的语言;也就是,在文件传输中不包含它。
FALSE:不筛选nLangID指定的语言;也就是,在文件传输中包含它。
返回值:
0:ComponentFilterLanguage成功。
< 0:ComponentFilterLanguage失败。
注解:
?当将该函数与GetSystemInfo函数一起使用时,你必须考虑下列情况:被用来指定语言特定文件组的语言常量只是可以由GetSystemInfo返回的语言常量的一个小的子集。
?如果你的安装包含基于这些返回值的语言筛选,你必须使用一个switch语句来转换由该函数返回的常量为支持语言筛选的常量之一。
?任何InstallShield版本将允许你指定任何语言的文件组或由Windows支持的子语言;然而,对一个由媒体向导建立的语言具体文件组,你使用的InstallShield版本必须支持该文件组的语言。你的安装必须也支持文件组的语言。
?如果你的安装包含语言具体文件组,它被具体指定到一个不被你正使用的InstallShield或你的安装支持的语言,文件组将被媒体向导筛选(不包含)。

7.6  ComponentFilterOS
语法:ComponentFilterOS (szMediaLibrary, nUpperOS, nLowerOS, bFiltered);
说明:ComponentFilterOS函数筛选标志为指定操作系统的文件组。缺省时,不筛选操作系统。该函数不能使用到脚本创建的组件组。
安装初次运行时的任何筛选在一个维护安装时也必须做。确认在初始和维护安装中执行的代码中都调用了该函数。不要从下列事件处理程序中调用该函数:OnAppSearch, OnCCPSearch, OnFirstUIBefore, OnFirstUIAfter, OnMaintUIBefore, 或 OnMaintUIAfter。
参数:
szMediaLibrary
指定文件媒体库的媒体名。
nUpperOS
指定一个64位操作系统标识符域的高32位。目前,nUpperOs没有被使用。给该参数传递0。不允许其它值。
nLowerOS
指定一个64位操作系统标识符域的低32位。nLowerOS指定你希望筛选的操作系统。你可以使用按位或操作符(|)将值组合。
ISOSL_ALL、ISOSL_WIN95、ISOSL_WIN98、ISOSL_WIN2000
ISOSL_WIN2000_ALPHA、ISOSL_NT40、ISOSL_NT40_ALPHA、bFiltered
指定是否要筛选(排除)或不筛选(包括)在n LowerOS指定的操作系统。在该参数位置传递下列预定义常量之一:
TRUE:筛选指定的操作系统;也就是,在文件传输中不包括它们。
FALSE:不筛选指定的操作系统;也就是,在文件传输中包括它们。
返回值:
0:ComponentFilterOS 成功。
< 0:ComponentFilterOS 失败。调用ComponentError查看附加信息。

7.7  ComponentGetData
语法:ComponentGetData (szComponentSource, szComponent, nInfo, nvResult, svResult);
说明:ComponentGetData函数检索一个组件的信息。当szComponentSource指向一个脚本创建组件组时,一些信息不能被检索。
参数:
szComponentSource
指定其信息要被检索的组件所在的文件媒体库或脚本创建组件组的媒体名。
szComponent
指定其信息要被检索的组件名。参阅。
nInfo
指定要检索的信息类型。在该参数位置传递下列预定义常量之一:
COMPONENT_FIELD_DESCRIPTION:当组件在一个组件对话框中被选定时显示的说明。对于一个在文件媒体库中的组件,这是保存在组件属性窗口中说明域中的值。
COMPONENT_FIELD_FILENEED:定义组件文件对于安装的关键性程度。下列值之一将被设置到nvResult:
COMPONENT_VALUE_CRITICAL:该组件包含关键性文件。
COMPONENT_VALUE_HIGHLYRECOMMENDED:该组件被高度推荐。
COMPONENT_VALUE_STANDARD:该组件可以被包括也可以不包括。
COMPONENT_FIELD_FTPLOCATION:在组件窗格中指定FTP位置属性的内容。
COMPONENT_FIELD_HTTPLOCATION:在组件窗格中指定HTTP位置属性的内容。
COMPONENT_FIELD_STATUS(不针对脚本创建组件组):文件传输过程中显示在进度指示器中的状态文本。这是保存在组件属性窗口中状态文本域中的值。
COMPONENT_FIELD_VISIBLE:确定在一个组件选择对话框中组件是否可见。对于一个文件媒体库中的一个组件,这是保存在组件属性窗口中可见域的值。下列值之一将被设置到nvResult:
TRUE:组件可见。
FALSE:组件不可见。
COMPONENT_FIELD_PASSWORD (不针对脚本创建组件组):是否有一个口令和组件相联系(在组件属性窗口中的口令域中)。下列值之一将被设置到nvResult:
TRUE:该组件有一个口令。如果组件是口令保护的,你必须从最终用户处得到正确的口令并且在调用ComponentTransferData传输文件媒体库中的文件前用ComponentValidata检验它。
FALSE:该组件没有一个口令。
COMPONENT_FIELD_SELECTED:确定组件是否被选定:
TRUE:该组件被选。
FALSE:该组件没有被选。
COMPONENT_FIELD_SIZE(不针对文件媒体):指定组件的原始文件大小。你也可以使用ComponentGetItemSize来确定一个组件(不包括子部件)的大小。使用ComponentTotalSize确定所有选定组件和子部件的总的大小。
COMPONENT_FIELD_MISC:杂项文本。该域在运行时非常有用,因为你可以使用它用你希望的任何信息来标记或者标识组件。
COMPONENT_FIELD_DISPLAYNAME:显示在组件选择对话框中的组件名。对于在文件媒体库中的组件,这是组件属性窗口中显示名称域的值。
COMPONENT_FIELD_CDROM_FOLDER (不针对脚本创建组件组):仅对CD-ROM库类型。当“文件数据”在媒体向导的磁盘类型窗格中被检验时,指示与指定组件相联系的解压缩文件的位置。
nvResult
当nInfo产生一个数值型结果时返回一个数值型值。
svResult
当nInfo产生一个字符串型结果时返回一个字符串型值。
返回值:
0:ComponentGetData成功。
< 0:ComponentGetData失败。调用ComponentError查看附加信息。

7.8  ComponentGetItemSize
语法:ComponentGetItemSize (szMediaLibrary, szComponent, nvSize);
说明:ComponentGetItemSize 函数以字节数为单位检索一个指定组件的大小。子部件大小不包括在内。
该函数不能被使用到脚本创建组件组。
参数:
szMediaLibrary
指定包含了其大小要被检索的组件的文件媒体库的媒体名。
szComponent
指定其大小要被检索的组件的名称。
nvSize
以字节数为单位返回指定组件的大小。你也可以调用ComponentGetData来得到指定组件的原始文件的总的大小。调用ComponentTotalSize来确定所有被选组件和子部件的总的大小。
返回值:
0:ComponentGetItemSize成功。
< 0:ComponentGetItemSize失败。调用ComponentError查看附加信息。

7.9  ComponentGetTotalCost
语法:ComponentGetTotalCost (szMediaLibrary, szDir, nvTotalRequiredSpace);
说明:ComponentGetTotalCost函数确定在目标驱动器上对已指定组件(例如,由最终用户在组件和安装类型对话框中选择)进行安装和卸载所需的总空间(以字节数为单位)。确定所需驱动器空间时,该函数考虑在目标驱动器上的簇的大小。
参数:
szMediaLibrary
指定其组件已经被指定来安装和卸载的文件媒体库的媒体名。典型地,你必须给该参数传递系统变量MEDIA。
szDir
指定使用的驱动器,或者被使用驱动器的路径,以此来确定所需的驱动器空间。
nvTotalRequiredSpace
返回所需的驱动器空间。
返回值:
0:表明函数成功确定所需驱动器空间。
<0:表明函数未能确定所需驱动器空间。

7.10  ComponentInitialize
语法:ComponentInitialize (szMediaLibrary, szMediaLibraryFile);
说明:ComponentInitialize函数仅支持与InstallShield先前版本创建的脚本的兼容性。我们建议你不要在InstallShield Professional 6.0中使用多个文件媒体库。
ComponentInitialize函数将一个媒体名和一个文件媒体库联系起来并且准备该媒体库被访问。该函数不能被使用到脚本创建的组件组。
参数:
szMediaLibrary
指定其文件要由ComponentMoveData传输的文件媒体库的媒体名。
szMediaLibraryFile
指定文件媒体库中的要被初始化的文件名。文件名必须是xxx1.cab的格式。不要指定一个路径;该文件必须驻留在安装资源文件夹(SRCDIR)。
返回值:
0:ComponentInitialize成功。
< 0:ComponentInitialize失败。
注解:
?在访问使用缺省媒体名”Data”的缺省文件媒体库(Data1.cab)之前,没有必要调用ComponentInitialize。缺省媒体在安装初始化过程中被自动初始化。文件媒体库必须驻留在安装资源文件夹。该文件夹的名称在安装初始化过程中被赋给系统变量SRCDIR。
?文件名必须是xxx1.cab格式;例如,second1.cab 或 wow1.cab。
?媒体名”Data”被保留给和缺省文件媒体库Data1.cab一起使用。你不可以给参数szMediaLibrary传递”Data”。

7.11  ComponentIsItemSelected
语法:ComponentIsItemSelected (szComponentSource, szComponent);
说明:ComponentIsItemSelected函数仅支持与InstallShield先前版本创建的脚本的兼容性。建议你把代码放置在组件事件处理器函数中来执行组件具体任务。
ComponentIsItemSelected函数确定一具体组件是否被选定。该组件通常是由最终用户在一个组件选择对话框中选定的一个。
参数:
szComponentSource
指定其设置要被检验的文件媒体库或脚本创建组件组的媒体名。
szComponent
指定要被检验的组件名。
返回值:
TRUE (1):szComponent被选定。
FALSE (0):SzComponent没有被选定。
< 0:函数没有能确定组件是否被选定。调用ComponetError 查看附加信息。
你也可以使用ComponentGetData来确定一个组件是否被选定。

7.12  ComponentListItems
语法:ComponentListItems (szComponentSource, szComponent, listComponents);
说明:ComponentListItems函数罗列由szComponentSource指定的文件媒体库或脚本创建组件组中的所有组件到szComponent下。全限定子部件名列表保存在listComponents。如果szComponent没有孩子,则listComponents将是一个空列表。
参数:
szComponentSource
指定其子部件要被罗列的文件媒体库或脚本创建组件组的媒体名。
szComponent
指定其子部件要被罗列的组件。给该参数传递一个空字符串(“”)来罗列所有顶层组件。有关函数调用中指定组件和子部件的更多信息,参阅前面。
listComponents
返回组件列表。由listComponents指定的字符串列表必须已经通过调用ListCreat被初始化。
返回值:
0:ComponentListItems罗列组件。
< 0:ComponentListItems不能罗列组件。调用ComponentError查看附加信息。

7.13  ComponentMoveData
语法:ComponentMoveData (szMediaLibrary, nvDisk, nReserved );
说明:ComponentMoveData 函数仅支持与InstallShield先前版本创建的脚本的兼容性。在一个基于事件的脚本中,文件传输自动被执行。(我们建议你把代码放置在组件事件处理器函数中来执行组件具体任务。)
ComponentMoveData函数传输/解压缩与szMediaLibrary指定的文件媒体库中的被选组件相关联的文件。你可以在相同媒体上调用ComponentMoveData多次,但你必须在第二次和随后的调用前复位内部结构,可通过调用ComponentMoveData来实现复位(调用时将其第一个参数置为一个空字符串(“”))。
该函数不能被使用到脚本创建的组件组。
参数:
szMediaLibrary
指定其文件要被传输的文件媒体库的媒体名。
nvDisk
返回最后被访问的磁盘号。在调用ComponentMoveData前你不需要初始化nvDisk。
nReserved
给该参数传递0。不允许其它值。
返回值:
0:ComponentMoveData成功。
< 0:ComponentMoveData失败。调用ComponentError查看附加信息。

7.14  ComponentReinstall
语法:ComponentReinstall ( );
说明:ComponentReinstall引起下一个对ComponentTransferData的调用会重新安装所有组件,这些组件在调用ComponentTransferData时已经被安装。ComponentReinstall通常在最终用户选择SdWelcomeMaint对话框中的“修复”按钮时的一个维护安装过程中被调用。
参数:
无。
返回值:
0:表明函数为重新安装作好准备。
<0:表明函数未能为重新安装作好准备。

7.15  ComponentRemoveAll
语法:ComponentRemoveAll ( );
说明:一个已经被运行的安装中,在ComponentRemoveAll 函数被调用后,接下去对ComponentTransferData的调用将卸载安装。
参数:
无。
返回值:
0:表明函数成功准备卸载的初始化。
<0:表明函数没有能准备卸载的初始化。

7.16  ComponentSelectItem
语法:ComponentSelectItem (szComponentSource, szComponent, bSelect);
说明:ComponentSelectItem 函数仅支持与InstallShield先前版本创建的脚本的兼容性。我们建议你把代码放置在组件事件处理器函数中来执行组件具体任务。
ComponentSelectItem 函数设置一个组件的选定状态来选定或撤消选定。在组件对话框中显示组件之前,你可以使用ComponentSelectItem  来修改选定状态,而且以后你可以根据你的需要使用它来修改或覆盖选择。
参数:
szComponentSource
指定其选定状态要被设置的组件所属文件媒体库或脚本创建组件集的媒体名。
szComponent
指定其选定状态要被设置的组件。
bSelected
指定组件是否要被选定或撤消选定。在该参数位置传递下列预定义常量之一:
TRUE:选定指定的组件。
FALSE:撤消选定指定的组件。
返回值:
0:ComponentSelectItem成功设置项目的选定状态。
< 0:ComponentSelectItem未能设置项目的选定状态。调用ComponentError查看附加信息。

7.17  ComponentSetData
语法:ComponentSetData (szComponentSource, szComponent, nInfo, nData, szData);
说明:ComponentSetData 函数为指定的组件设置属性和数据。对多数部分,设置和在组件属性窗口中的域设置相一致,从InstallShield  IDE中的组件窗格中可达。注意一些域不能为脚本创建的组件组设置。
参数:
szComponentSource
指定其属性和数据要被设置的组件所属文件媒体库或脚本创建组件集的媒体名。
szComponent
指定组件名。
nInfo
指定要被设置的信息类型。在该参数位置传递下列预定义常量之一:
COMPONENT_FIELD_DESCRIPTION:该文本被显示在组件选择对话框中的说明域。
COMPONENT_FIELD_FTPLOCATION:一个FTP位置。
COMPONENT_FIELD_HTTPLOCATION:一个HTTP位置。.
COMPONENT_FIELD_STATUS (不适用与脚本创建组件):文件传输过程中该文本被显示在进度指示器中。
COMPONENT_FIELD_VISIBLE:指示该组件是否可见。参数nData可为下列数之一:
TRUE:组件可见。
FALSE:组件不可见。
COMPONENT_FIELD_SELECTED:设置组件的选定状态。该设置和ComponentSelectItem的效果一样。参数nData可以是下列数之一:
TRUE:选定该组件项目。
FALSE:撤消选定该组件项目。
COMPONENT_FIELD_SIZE (不对文件媒体库):组件的总的原始文件大小。
COMPONENT_FIELD_MISC:杂项文本。
COMPONENT_FIELD_DISPLAYNAME:确定在组件选择对话框中显示的组件名。
COMPONENT_FIELD_CDROM_FOLDER(不对脚本创建的组件组):仅对CD-ROM分布媒体库。CD上的组件数据的定位。
COMPONENT_FIELD_IMAGE:覆盖一个组件的缺省图标赋值。在nData传递显示的图标的索引。为指示组件不显示图标,在nData传递-1。
nData
当由nInfo指示的信息是数值时,指定一个数值型值。
szData
当由nInfo指示的信息是字符串时,指定一个字符串值。
返回值:
0:ComponentSetData成功。
< 0:ComponentSetData失败。调用ComponentError查看附加信息。

7.18  ComponentSetTarget
语法:ComponentSetTarget (szMediaLibrary, szPropertyVar, szLocation);
说明:ComponentSetTarget  函数将szLocation的值赋给由szPropertyVar指定的属性变量。属性变量可以在文件组窗口的Destionation域中和简捷属性窗口的Target域中使用。SzLocation的值必须是一个完整路径(包含驱动器字母和冒号)或一个部分路径,依赖于szPropertyVar 如何被使用。你必须确认szLocation是路径表达式的正确形式。在调用ComponentTransferData之前调用ComponentSetTarget 。
该函数不能被使用到脚本创建的组件组。
参数:
szMediaLibrary
指定要设置其用户定义的变量的文件媒体库的媒体名。
szPropertyVar
指定用户定义的变量。在InstallShield  IDE中,用户定义的变量用<变量名>的格式。将用户定义的变量表示为一个字符串,包含中括号。例如:
   szPropertyVar = "<szVar>";
szLocation
指定路径表达式来代替用户定义的变量。该字符串必须包含附加引号,即使它指定一个长路径。
返回值:
该函数总返回0。

7.19  ComponentSetupTypeEnum
语法:ComponentSetupTypeEnum (szMediaLibrary, listSetupTypes);
说明:ComponentSetupTypeEnum 函数列举所有和指定媒体相联系的安装类型。这些安装类型可以由你在IDE中定义并保存在文件媒体库中。ComponentSetupTypeEnum 不能工作在脚本创建的组件组上。你必须使用ListCreat函数创建listSetupTypes字符串列表。
参数:
szMediaLibrary
指定安装类型要被列举的文件媒体库的媒体名。
listSetupTypes
返回一个在指定媒体上的所有安装类型的列表。由listSetupType标识的字符串列表必须已通过调用ListCreate被初始化。
返回值:
0:ComponentSetupTypeEnum成功。
< 0:ComponentSetupTypeEnum失败。

7.20  ComponentSetupTypeGetData
语法:ComponentSetupTypeGetData (szMediaLibrary, szSetupType, nInfo, nvResult, svResult);
说明:ComponentSetupTypeGetData函数检索和一个指定的安装类型相联系的数据。然后你可以任意使用该数据。该函数不能被使用到脚本创建的组件组。
参数:
szMediaLibrary
指定文件媒体库的媒体名,从该库中检索和一个安装类型相关联的数据。
szSetupType
指定安装类型名。该名必须指定为和显示在InstallShield IDE中的完全一样,例如,”典型”。
nInfo
指定要检索的信息。在该参数位置传递下列预定义常量之一:
SETUPTYPE_INFO_DESCRIPTION:检索指定安装类型的说明。说明由参数svResult返回。
SETUPTYPE_INFO_DISPLAYNAME:检索安装类型显示的名称。名称由参数svResult返回。
nvResult
当nInfo指定一个数值型或长整数型的信息时,返回该类型的值。
svResult
当nInfo指定一个字符串型的信息时,返回该类型的值。
返回值:
0:ComponentSetupTypeGetData成功。
< 0:ComponentSetupTypeGetData失败。调用ComponentError查看附加信息。
注解:
?ComponentSetupTypeGetData的一个典型的应用可能是在一个自定义安装类型相关的对话框中显示安装类型信息。你将在显示自定义对话框的WaitOnDialog后在switch-case语句中调用ComponentSetupTypeGetData。

7.21  ComponentSetupTypeSet
语法:ComponentSetupTypeSet (szMediaLibrary, szSetupType);
说明:ComponentSetupTypeSet函数设置在由szMediaLibrary指示的文件媒体库中的指定的安装类型。你可以使用ComponentSetupTypeSet来覆盖在一个安装类型对话框(如SdSetupTypeEx)中所作的选择。
该函数不能使用到脚本创建的组件组。
参数:
szMediaLibrary
指定要设置安装类型的文件媒体库的媒体名。
szSetupType
指定设置为何种安装类型。
返回值:
0:ComponentSetupTypeSet成功。
< 0:ComponentSetupTypeSet失败。

7.22  ComponentTotalSize
语法:ComponentTotalSize (szMediaLibrary, szComponent, bIncludeSubcomp, bTargetSize);
说明:ComponentTotalSize函数以字节数返回由szComponent指定的被选组件的总的大小。为在大小计算中包含子部件,设置bIncludeSubcomp为TRUE。为得到指定媒体中所有组件的总的大小,设置szComponet为一个空字符串(“”)并设置bIncludeSubcomp为TRUE。
如果你将ComponentTotalSize的返回值和显示在SdComponentDialog, SdComponentDialog2, SdComponentDialogAdv和SdComponentMult对话框中的的所需空间值比较,你可能注意到一个小的差异。该差异归根于当这些对话框计算它们的值时发生的舍入。
参数:
szMediaLibrary
指定文件媒体库的文件名,从该媒体库中被选定的组件的总的大小被返回。
szComponent
指定其大小要被检索的组件名。为检索整个媒体的大小,给该参数传递一个空字符串(“”)。有关函数调用中组件和子部件的更多信息,同前面。
bIncludeSubcomp
指示是否要包括szComponent的选择的子部件。在该参数位置传递下列预定义常量之一:
TRUE:在大小计算中包括选择的子部件。
FALSE:在大小计算中不包括选择的子部件。
bTargetSize
指示是否要检索原始/非压缩大小或媒体库的大小。在该参数中传递下列预定义常量之一:
TRUE:检索原始/非压缩大小;
FALSE:检索在媒体库中的大小。
返回值:
XXXX:被选定组件的总的大小(字节数)。
< 0:ComponentTotalSize失败。调用ComponentError查看附加信息。

7.23  ComponentTransferData
语法:ComponentTransferData (szMediaLibrary);
说明:在一个基于事件的脚本中,ComponentTransferData 函数在First UI Before事件后被自动调用,并和Moving、Moved和组件事件进行适当交互。ComponentTransferData 根据组件的选定状态和当前是否被安装来适当安装或卸载组件。ComponentTransferData 做到下列事情:
安装被选定的(例如,最终用户在组件或安装类型对话框中的选择)并且当前没有安装的组件。
卸载没有被选定并且当前已安装的组件。
安装程序通过读现存的安装初始化过程中的日志文件来确定一个组件当前是否是被安装的。
参数:
szMediaLibrary
指定其组件已经被指定来安装或卸载的文件媒体库的媒体名。典型地,你可以传递系统变量MEDIA给该参数。
返回值:
0:表明函数成功执行组件的安装和卸载。
<0:表明函数没有能执行组件的安装和卸载。

7.24  ComponentUpdate
语法:ComponentUpdate ( );
说明:ComponentUpdate 引起下一个对ComponentTransferData的调用来重新安装所有已经在调用ComponentTransferData时被安装的组件,除了那些包含有维护安装时和卸载时所需的文件的组件(注意这些组件由媒体生成器自动放置到你的.cab文件,而不是显示在IDE中)。ComponentUpdate通常在一个修补程序或维护组件安装中被调用。
ComponentUpdate 和ComponentReinstall相似,但ComponentReinstall也重新安装那些包含有维护安装时和卸载时所需的文件的组件。
参数:
无。
返回值:
0:表明函数成功准备好更新安装。
<0:表明函数未能准备好更新安装。

7.25  ComponentValidate
语法:ComponentValidate (szMediaLibrary, szComponent, szPassword);
说明:ComponentValidate 函数验证文件媒体库或一个指定组件的口令。
该函数不能被使用到脚本创建的组件组。
参数:
szMediaLibrary
指定要验证口令的文件媒体库名。
szComponent
指定组件名。如果该参数是一个空字符串(“”),则假定为整个媒体库。有关函数调用中组件和子部件的更多信息请参阅7.1。
szPassword
指定要验证的口令。
返回值:
0:ComponentValidate 成功。
< 0:ComponentValidate 失败。调用ComponentError查看附加信息。

7.26  SdSetupType
请参阅5.27

7.27  SdSetupTypeEx
请参阅5.28

Pages: 1 2 3 4 5 6 Next