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不能插入产品名称而是将插入一个附加的空格。
下列函数创建简单对话框,如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不能插入产品名称而是将插入一个附加的空格。