04 InstallShield内部库函数全集四内部对话框函数中文版文档格式.docx
《04 InstallShield内部库函数全集四内部对话框函数中文版文档格式.docx》由会员分享,可在线阅读,更多相关《04 InstallShield内部库函数全集四内部对话框函数中文版文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
![04 InstallShield内部库函数全集四内部对话框函数中文版文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/2/cab7aef9-bd15-4055-b43e-f704796f1d10/cab7aef9-bd15-4055-b43e-f704796f1d101.gif)
显示一个对话框,提示最终用户通过点击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。
运行在静止方式(silentmode)的安装程序,若缺省文件夹不存在,则必须在调用AskDestPath前创建它。
4.2
AskOptions
AskOptions(nValue,szMsg,szText1,bvCheck1,szText2,bvCheck2[,szTextn,bvCheckn][,...,]);
AskOptiona函数格式化并显示提示最终用户选择一个或多个选项的对话框。
对话框的缺省标题是“选择组件”。
为改变标题栏的内容,在调用AskOptions前调用SetDialogTitle。
该对话框将显示多至九个选择控件,复选框或单选钮,根据nValue的值而定。
nValue
指定要显示的控件。
在该参数位置传递下列预定义常量之一:
EXCLUSIVE:
指定单选按钮,允许最终用户仅选择一个选项。
NONEXCLUSIVE:
指定复选框,允许最终用户选择一个以上的选项。
指定在对话框显示的消息。
你可以使用该消息来描述选项和/或要求最终用户选择一个或多个选项。
如果消息多于一行,使用换行符(\n)插入行的间隔处。
szText1
指定一个最多达47个字母的文本标签,它相邻显示于第一个复选框或单选钮。
为建立一个快捷键,在用户为该目的指定的字母前插入一个“与符号”(&
)。
该字母带下划线显示来指示它的功能。
例如,自定义Alt+C为快捷键,传递“&
Custom”。
自定义Alt+S为快捷键,传递”Cu&
stom”。
bvCheck1
指定对话框打开时第一个选择框或单选钮的初始状态;
对话框关闭时返回第一个选择框或单选钮的状态。
在该参数位置传递下列常量:
TRUE:
第一个选择框或单选钮被选。
FALSE:
第一个选择框或单选钮未被选中。
szText2
指定相邻显示于第二个选择框/单选钮的最多达47个字母的文本标签。
创建一个快捷键的方法同szText1处。
bvCheck2
指定对话框打开时第二个选择框或单选钮的初始状态;
对话框关闭时返回第二个选择框或单选钮的状态。
第二个选择框或单选钮被选。
第二个选择框或单选钮未被选。
可以定义多达七个附加选项。
每个附加选项由一对参数指示:
一个字符串参数定义一个标签和一个数值型变量定义AskOptions返回时的选项状态。
为设置一个选项的初始状态,在调用AskOptions前给数值型变量赋值为TRUE或FALSE。
若nValue是EXCLUSIVE并且一个以上的选项设置的初始状态设置为TRUE,AskOptions将预选设置为TRUE的参数序列的第一个选项。
表明Next按钮被选。
控件的状态由各个bvCheck变量返回。
表明Back按钮被选。
控制的状态由各个bvCheck变量返回。
4.3
AskPath
AskPath(szMsg,szDefPath,svResultPath);
AskPath函数指定一个对话框,提示最终用户输入目标位置的路径。
对话框包括一个单行编辑区,你可以在此显示一个缺省路径。
最终用户有三个选择:
接受缺省路径
编辑缺省路径
显示选择文件夹ChooseFolder对话框来选择一个文件夹
对话的缺省标题是选择目标位置ChooseDestinationLocation。
为改变该标题,在调用AskPath前调用SetDialogTitle。
AskPath不检验最终用户输入路径的存在性。
调用AskPath后调用CreatDir来创建该路径。
指定显示在对话框中的消息。
要显示该对话框的缺省指示,传递空字符串(“”)给该参数。
szDefPath
指定在编辑区显示的缺省路径。
最终用户可以修改该字符串。
svResultPath
返回结果路径名,不管用户是否接受缺省路径,修改它,还是从选择文件夹ChooseFolder对话框选择可选路径。
AskPath在路径结尾加一个反斜杠,然后才把它赋给svResultPath。
若必要,可在AskPath返回后通过调用StrResultPath来删除反斜杠。
如果用户按下返回按钮,svResultPath的值将不可预测。
因此,如果用户在szDefPath和svResultPath使用相同的变量,那么确保当AskPath的返回值为BACK时重初始化该变量。
表明最终用户选择Next按钮。
表明最终用户选择Back按钮;
svResultPath设置为空字符串(“”)。
在对话框显示的编辑区可滚动以适应长字符串。
因为可以输入至编辑区的字符数目不受限制,所以用户必须以不定长来说明svResultPath传递的变量。
如果字符串变量不足以存储用户输入的文本,字符串将被截尾并且显示错误信息。
同样要注意既然这个函数在字符串结尾附加一个反斜杠和一个空结束符,字符串的长度至少比用户输入的路径长两个字符。
该函数将接受一个存在但不可写的文件夹。
为限制最终用户只可选择可写的文件夹,可调用AskDestPath函数来替代。
4.4
AskText
AskText(szQuestion,szDefault,svResult);
AskText函数显示一个对话框,它包括一个静态文本区和一个编辑框。
参数szQuestion指定静态文本区的缺省文本;
参数szDefault指定编辑框的缺省文本。
该对话框的缺省标题是输入信息EnterInformation。
为改变标题栏的内容,在调用AskText前调用SetDialogTitle。
szQuestion
指定要显示的问题或声明。
如果该参数位置的字符串长度超过静态文本区宽度,一个或多个行分隔符将会被插入该字符串使得它在对话框多行显示。
如果愿意,用户也可以自己通过插入换行符(\n)手动格式化该字符串。
该参数没有一个缺省值。
szDefault
指定编辑区的缺省文本。
svResult
当Next按钮被用来关闭对话框时返回由最终用户输入的文本。
如果用户按下Back按钮,svResult值将不可预测。
因此,如果用户在szDefPath和svResultPath使用相同的变量,那么需确保当AskPath的返回值为BACK时重初始化该变量。
表明Next按钮被按下。
表明Back按钮被按下。
用户在svResult传递的字符串变量必须足够大以适应输入到编辑区的文本。
因此,用户必须使用自动调节大小的方法来声明变量。
必要时,编辑区将会滚动来以适应一个长字符串。
4.5
AskYesNo
AskYesNo(szQuestion,nDefault);
AskYesNo函数呈现一个消息框,显示一个问题,最终用户可以通过单击Yes或No按钮来回答它。
AskYesNo消息包含四个内容:
.问题标记图标 .问题文本 .Yes按钮 .No按钮
缺省标题是Question。
为改变标题栏的内容,在调用AskYesNo前调用SetDialogTitle。
AskYesNo消息框由直接调用相应的WindowsAPI函数创建,它显示一个系统模态对话框。
由于该对话框是由Windows显示的,按钮上的文本不能由安装改变。
英语版本的文本’Yes’或’No’将由Windows以适合运行安装的Windows版本的语言显示。
如果用户需要显示另一个柔性对话框,直接调用一个WindowsAPI函数或使用一个自定义对话框。
指定显示在消息框中的问题。
如果消息超过一行,在消息中嵌入换行符(\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被自动调用。
单击浏览按钮装入选择文件夹ChooseFolder对话框,显示存在的文件夹列表。
最终用户可以选择一个存在的文件夹或输入一个新的文件夹名称。
ComponentDialog在svDir返回被选的文件夹名称。
如果用户输入一个不存在的文件夹,将出现一个消息框来询问最终用户是否要创建这个文件夹。
如果是,则InstallShield创建指定的文件夹。
为显示缺省标题(“选择组件SelectComponents”),给该参数传递一个空字符串(””)。
例如,消息可能为“请选择一个或多个下列组件安装在你的系统上”"
Pleaseselectoneormoreofthefollowingcomponentstoinstallonyoursystem."
。
为显示该对话框的缺省指示,给该参数传递一个空字符串(””)。
指定缺省目标位置。
返回最终用户选择的文件夹。
注意在svDir返回的位置值不影响文件传输除非用户将它赋值给系统变量TARGETDIR或调用ComponentSetTarget来将它和一个用户定义的变量联系起来。
我们建议用户给该参数传递TARGETDIR而不是一个字符串变量。
如果你在该参数不传递TARGETDIR,当最终用户在一个不同驱动器选择一个目标时显示在对话框的所需磁盘空间不会被重算。
szComponent
指定组件,其子部件被显示以供选择。
给该参数传递一个空字符串(””)来显示所有顶层组件。
ComponentDialog在文件媒体库或脚本创建的组件组中查找由系统变量MEDIA指定的所需组件。
表明最终用户选择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指定的标签文件识别正确磁盘。
如果磁盘不包含标签文件,会有一个错误消息提示用户输入正确磁盘。
指定提示用户插入正确磁盘的消息。
szTagFile
指定标签文件名。
EnterDisk在插入磁盘上查找该文件。
如果文件没有找到,会显示一个消息要求用户插入正确的磁盘。
如果用户给该参数传递一个空字符串(“”),函数不查找任何文件;
而是假定安装了正确的软盘。
OK
(1):
表明用户选择了OK按钮。
表明发生了一个未确定错误。
InstallShield媒体生成器不会自动在磁盘映像文件夹上生成标签文件。
为使用标签文件,将它们加到创建好的磁盘映像文件夹中。
4.8
MessageBox
MessageBox(szMsg,nType);
MessageBox函数呈现一个对话框,包含一个消息,一个指示消息自然属性的图标(信息,警告,或严重警告),和一个OK按钮。
缺省标题依赖于nType值,nType值也指示图标类型。
为改变消息框标题栏的内容,在调用MessageBox前调用SetDialogTitle。
InstallShield不会自动分隔消息文本为单独的行来适应消息框。
如果消息长于一行,通过在字符串的合适位置嵌入换行符(\n)来插入行间隔。
nType
指定要创建的消息框类型和显示在消息框的图标类型。
在该参数位置传递下列预定义的常量之一(显示资源管理器对象处理程序图标):
INFORMATION
WARNING
SEVERE
任何WindowsAPIMessageBox类型也可在该参数指定。
多种风格可以被逻辑或来产生所需的MessageBox类型(请看下面的注解)。
除非你使用标准MicrosoftWindows消息框风格,返回值没有意义。
如果你使用这些风格,返回值和MessageBoxAPI函数的返回值一样。
该函数使用MicrosoftWindowsAPIMessageBox。
操作环境,而不是InstallShield,确定消息框的大小和位置(例如,操作系统运行所在的语言)。
你可以改变该按钮的文本。
考虑使用WindowsMessageBox类型的更多信息,请在适当的WindowsSDK中咨询MessageBoxWindowsAPI函数的描述。
当使用Windows消息框常量时注意下列情况:
WindowsMessageBox类型常量在Windows.h文件中声明,它不能包括在InstallShield脚本中。
当使用这些常量,用户必须在安装脚本的声明区定义它们(使用#define)。
赋给这些常量的值通常可在一个适当的WindowsSDK或开发工具提供的包含文件中找到。
对于MicrosoftVisualC++,大多数常量可在Winuser.h文件中找到,它位于DevStudio\Vc\include文件夹。
Windows和InstallShield消息框常量不能在一个安装中一起使用。
如果一个InstallShield消息框常量和一个Windows消息框常量用一个或运算符组合,Windows消息框常量将被忽略。
一些Windows消息框风格在一些Windows平台不受支持。
为确定一个特定的风格是否受安装确定的操作系统支持,咨询适当的WindowsSDK。
当MessageBox函数使用一个Windows消息框风格时,消息框的标题是“安装“。
如果用户需要显示不同的标题,可使用SprintfBox函数来替代。
4.9
RebootDialog
RebootDialog(szTitle,szMsg,nDefChoice);
RebootDialog函数显示一个对话框,允许最终用户重启计算机。
被选的选项在安装的最后被执行。
为显示缺省标题(“重新启动”),给该参数传递一个空字符串(“”)。
指定对话框显示的消息。
为显示该对话框的缺省指示,给该参数传递一个空字符串(“”)。
nDefChoice
指定缺省选定的单选钮内容。
SYS_BOOTMACHINE:
重启计算机选项("
Yes,Iwanttorestartmycomputernow."
)将成为缺省单选按钮选定内容。
0:
不重启计算机选项("
No,Iwillrestartmycomputerlater."
)将成为缺省单选按钮内容。
WILL_REBOOT:
表明用户选择标签为"
的单选钮。
表明