InstallShield内部库函数之8 文件配置函数
8.1 高级配置文件函数
高级配置文件函数比Ez配置文件函数提供给高级开发人员更大的灵活性和对系统配置的更多控制。为使用这些高级函数访问和编辑一个系统配置文件,可通过调用ConfigFileLoad开始。大多数其它函数只有在系统配置文件已经由ConfigFileLoad打开后才能被调用。当你结束编辑系统配置文件时,调用ConfigFileSave来保存你的修改。注意函数ConfigGetFileName 和ConfigSetFileName既可以和高级配置文件函数也可以和Ez配置文件函数一起使用。
不要把Ez配置文件函数和高级配置文件函数混合起来。调用ConfigFileLoad之后,直到你调用了ConfigFileSave保存你的修改后,你才能使用Ez配置文件函数。
ConfigAdd
添加一个语句到一个已经被装入内存的系统配置文件。
ConfigDelete
从一个系统配置文件中删除一项。
ConfigFileLoad
把一个系统配置文件装入内存来编辑。
ConfigFileSave
保存一个已经由ConfigFileLoad装入内存的系统配置文件。
ConfigFind
在一个系统配置文件中查找一个项目。
ConfigGetFileName
检索缺省系统配置文件的全限定名。
ConfigGetInt
从一个系统配置文件中检索一个值。
ConfigMove
在一个系统配置文件中移动一项。
ConfigSetFileName
指定一个系统配置文件的全限定名。
ConfigSetInt
在系统配置文件中设置一个值。
相关函数:
SdShowFileMods
创建一个对话框,显示建议的文件修改和提供如何进行的选项。
8.1.1 ConfigAdd
语法:ConfigAdd (szKey, szValue, szRefKey, nOptions);
说明:ConfigAdd函数添加一个语句到一个已经被ConfigFileLoad装入内存的系统配置文件中。你可以指定该语句相对于一个参考字的位置,或者你可以在文件首行或末行添加语句。你也可以置换文件中已经存在的一行。调用ConfigAdd前,你必须调用ConfigFileLoad把系统配置文件装入到内存。在你编辑文件后,调用ConfigFileSave 保存文件。
参数:
szKey
指定被添加到系统配置文件中的语句的关键词。
szValue
指定被添加到系统配置文件中的关键词的值。
szRefKey
指定在系统配置文件中与你添加的szKey相对的参考字。如果给该参数传递一个空字符串(""),该行被添加为文件的首行或末行,具体依赖于传递给nOptions的预定义常量。
nOptions
指定该行是被添加到包含参考字的行的前面还是后面,或者该行是否置换一存在行。在该参数位置传递下列预定义常量之一:
BEFORE:该语句被添加到包含szRefKey的行的前面。如果szRefKey是一个空字符串(""),该语句被添加到文件首行。
AFTER:该语句被添加到包含szRefKey的行的后面。如果szRefKey是一个空字符串(""),该语句被添加到文件末行。
REPLACE:该语句将置换文件中已存在的一行。如果存在多行有相同的字,仅最后一行被置换。如果要被置换的一行不存在于文件中,新行添加为文件末行。
返回值:
0:ConfigAdd成功添加语句到指定的系统配置文件。
< 0:ConfigAdd未能添加语句到指定的系统配置文件。
注解:
·当ConfigAdd函数置换一系统配置文件中的一行时,它比较两行中的参考字:
·一个参考字是一个标识该行的一个子串。例如,在下列例子中,参考字是Kybrd.drv。
DEVICE=C:\Windows\System\Kybrd.drv /1024 /C:345
在下一语句中,参考字是PATH:
SET PATH=C:\Windows;C:\Windows\System
8.1.2 ConfigDelete
语法:ConfigDelete (szKey);
说明:ConfigDelete函数删除已经被ConfigFileLoad装入内存的系统配置文件中的行。参数szKey指定一个用来标识要被删除行的参考字。在使用高级配置文件函数编辑文件后,你调用ConfigFileSave 保存文件。
参数:
szKey
指定标识要被删除行的参考字。常用参考字包括Himem.sys, FILES, 和 STACKS。
返回值:
0:ConfigDelete成功删除系统配置文件中包含参考字的行。
< 0:ConfigDelete没有能删除指定行。
8.1.3 ConfigFileLoad
语法:ConfigFileLoad (szConfigFile);
说明:ConfigFileLoad函数装入一个指定系统配置文件的拷贝到内存,因而其它高级配置文件函数可以被调用来操作该文件。在参数szConfigFile指定你要编辑的系统配置文件的名称或给szConfigFile传递一个空字符串来编辑缺省系统配置文件(由InstallShield初始设置为系统使用的自举Config.sys文件)。
为得到缺省系统配置文件的全限定名,调用ConfigGetFileName。为时另一个文件为缺省系统配置文件,调用ConfigSetFileName。
注意:你可以调用ConfigFileLoad来创建一个新配置文件。为了这么做,你可以给szConfigFile传递一个不存在的文件名。然后调用其它配置函数来编辑新文件。最后,调用ConfigFileSave将新文件保存到磁盘。
使用任何高级配置文件函数之前,你必须首先调用ConfigFileLoad将系统配置文件装入到内存。在你修改文件后,调用ConfigFileSave将它保存到磁盘。
参数:
szConfigFile
指定装入内存的系统配置文件的全限定名。为装入缺省系统配置文件,给该参数传递一个空字符串("")。
返回值:
0:ConfigFileLoad成功将指定的系统配置文件装入到内存。
< 0:ConfigFileLoad未能将指定的系统配置文件装入到内存。
8.1.4 ConfigFileSave
语法:ConfigFileSave (szBackupFile);
说明:ConfigFileSave函数将由ConfigFileLoad函数装入内存的系统配置文件保存到磁盘。文件保存为它的原始名。如果在szBackupFile指定一个文件名,在被编辑的文件被写到磁盘前原始名被更名为该文件名。如果szBackupFile包含一个空字符串(""),原始文件被该修改的文件置换。如果你结束用高级配置文件函数修改一个系统配置文件时没有调用ConfigFileSave,所有修改将被丢失。
参数:
szBackupFile
指定在编辑被保存前是否要备份原始文件的一个拷贝。
如果无需创建备份文件,给该参数指定一个空字符串。
如果原始文件必须用一个特定名备份,给该参数传递该文件名。该文件名必须是非限定的(也就是,不限定一个驱动器和/或路径)。注意如果具有指定名称的文件已经存在,ConfigFileSave将生成一个唯一的文件扩展名,如接下去布告牌项目中描述。
如果原始文件备份时必须带有一个安装生成的文件的扩展名,指定通配符""作为文件扩展名(例如,"Config.")。然后安装将赋一个数值型值,从1001开始,作为扩展名。如果一个有该扩展名的文件已经存在,扩展名值将被增加一直到产生一个唯一的文件名。
一旦创建了备份,InstallShield保存备份文件名到系统变量INFOFILENAME。
注意下列重要事实:1)如果上一次对ConfigFileLoad的调用指定的配置文件不存在,备份文件将和由调用ConfigFileSave创建的配置文件相同。2)如果szBakupFile指定原始配置文件名,那么将不会创建一个备份文件。
返回值:
0:ConfigFileSave成功将文件从内存写到磁盘。
< 0:ConfigFileSave未能将文件写到磁盘。
8.1.5 ConfigFind
语法:ConfigFind (szRefKey, svResult, nOptions);
说明:ConfigFind函数查找一个已经由函数ConfigFileLoad装入到内存的系统配置文件。参数szRefKey是一个参考字,来指定在文件中的查找目标。如果该参考字被找到,它的值返回到参数svResult。为找到所有出现szRefKey的地方,将参数nOptions设置为CONTINUE重复调用该函数。为从文件头部开始查找,将nOptions指定为常量RESTART。你编辑该文件后,调用ConfigFileSave来保存它。
参数:
szRefKey
指定要查找的参考字。如果参考字是一个没有文件扩展名的文件名,查找中将包括所有文件扩展名。例如,如果你指定Win.com,查找仅对该参考字。如果你指定WIN,Win.exe文件,Win.dll文件,Win.sys文件等等都被返回。
svResult
返回在系统配置文件中找到的参考字的值。
nOptions
指示是否从文件开始处开始查找还是从上一个查找中断处继续。在该参数位置传递下列预定义常量之一:
RESTART:从文件开始处开始查找。
CONTINUE:从系统配置文件当前位置开始查找。
COMMAND:指示szRefKey处的参考字是一个命令,而不是一个环境变量。COMMAND常量可以通过使用按位或操作符(|)来和RESTART常量或 CONTINUE常量结合,如下例所示:
ConfigFind("Vga.drv", svResult, CONTINUE | COMMAND);
返回值:
0:ConfigFind成功找到指定的参考字,并在svResult返回。
< 0:ConfigFind未能找到指定的参考字。
注解:
一个系统配置文件可以包含环境变量和命令。为区别相同名称的环境变量和命令,使用COMMAND常量来指定你在寻找一个可执行命令。
8.1.6 ConfigGetFileName
语法:ConfigGetFileName (svFileName);
说明:ConfigGetFileName函数检索缺省系统配置文件(由InstallShield初始设置为当目标系统启动时被执行的Config.sys文件)的全限定名。
参数:
svFileName
返回缺省系统配置文件的全限定名。
返回值:
0:ConfigGetFileName成功检索缺省系统配置文件的全限定名。
< 0:ConfigGetFileName未能检索缺省系统配置文件的全限定名。
注解:
很少情况下InstallShield可能不能确定缺省配置文件的全限定名。这种情况下,svFileName将是一个空字符串("")。
8.1.7 ConfigGetInt
语法:ConfigGetInt (szKey, nvValue);
说明:ConfigGetInt函数检索一个由函数ConfigFileLoad装入到内存的系统配置文件中的参考字的整型值。ConfigGetInt从等号右边只有一个值的命令中检索值。ConfigGetInt不工作在一个有不止一个值的命令中。例如,ConfigGetInt识别语句FILES=20并返回数字20,但它不识别语句STACKS=9,128。
在调用ConfigGetInt前,你必须首先调用ConfigGetLoad将系统配置文件装入到内存。在你编辑文件后,调用ConfigFileSave来保存文件。
参数:
szKey
指定要从中检索整型值的语句的参考字。
nvValue
返回参考字的整型值。
返回值:
0:ConfigGetInt成功检索整型值。
< 0:ConfigGetInt未能检索整型值。
8.1.8 ConfigMove
语法:ConfigMove (szMove, szRefKey, nOptions);
说明:ConfigMove函数移动一个由函数ConfigFileLoad装入到内存的系统配置文件中的一行。该行可以被移动到文件最前面和最后面的位置,或者在文件中一特定行的前面或后面。
在调用ConfigMove函数前,你必须首先调用ConfigFileLoad来将Config.sys文件装入到内存。在你编辑文件后,调用ConfigFileSave 来保存文件。
参数:
szMove
指定要移动的行。
szRefKey
指定标识参考行的关键字,参考行用来定位要被移动的行。要移动的行的位置由参数nOptions的值确定。
nOptions
指定你要移动参数szMove指定的行到包含szRefKey指定的参考字的行的前面或后面。在该参数位置传递下列预定义常量之一:
BEFORE:由szMove指定的行被放置到包含szRefKey的行前面。如果szMove是一个空字符串(""),该行被放置到系统配置文件首行的前面。
AFTER:由szMove指定的行被放置到包含szRefKey的行后面。如果szMove是一个空字符串(""),该行被放置到系统配置文件末行的后面。
返回值:
0:ConfigMove成功移动系统配置文件中的指定行。
< 0:ConfigMOve未能移动该行。
8.1.9 ConfigSetFileName
语法:ConfigSetFileName (szConfigFile);
说明:ConfigSetFileName函数指定你要使用为缺省系统配置文件的文件的全限定名。在安装的初始化过程中,InstallShield标识目标系统启动时执行的Config.sys文件并且将它作为缺省系统配置文件。如果这是你安装中将编辑的唯一的系统配置文件,则没必要调用该函数。Ez配置文件将使用该文件,高级配置文件函数ConfigFileLoad当其参数是一个空字符串("")时将打开该文件。
然而,如果你想要使用Ex配置文件函数来修改一个自举Config.sys文件之外的配置文件,你必须调用ConfigSetFileName来修改缺省系统配置文件。例如,假定你要在目标系统上创建一个在自举时不使用的Config.sys文件。你必须在应用程序目录中设置一个文件名。Ez配置文件函数然后将在该文件上操作;如果你用一个空字符串调用ConfigFileLoad ,该文件将被装入内存,可以用高级文件函数来编辑它。
参数:
szConfigFile
指定设置为缺省系统配置文件的文件的全限定名。
返回值:
0:ConfigsetFileName成功检索指定的缺省系统配置文件。
< 0:ConfigsetFileName未能检索指定的文件。
注解:
·ConfigSetFileName函数不能将一个系统配置文件装入到内存。你必须使用ConfigFileLoad来将一个文件装入到内存。
·ConfigSetFileName不验证你指定的文件名。如果你指定一个无效文件名,所有以后的配置文件函数将失败。
8.1.10 ConfigSetInt
语法:ConfigSetInt (szKey, nValue);
说明:ConfigSetInt函数修改一个由函数ConfigFileLoad装入到内存的系统配置文件中的指定的整型值。ConfigSetInt只设置等号右边只有一个值的命令中的值。ConfigSetInt不工作在一个有不止一个值的命令中。例如,ConfigSetInt识别语句FILES=20并修改20为其它值,但它不能识别语句STACKS=9,128。
在调用ConfigSetInt前,你必须首先调用ConfigSetLoad将系统配置文件装入到内存。在你编辑文件后,调用ConfigFileSave来保存文件。
参数:
szKey
指定要其整型值要被设置的命令的参考字。
nValue
指定你要在szKey 为命令设置的整型值。
返回值:
0:ConfigSetInt成功设置系统配置文件中的指定整数。
< 0:ConfigSetInt未能设置指定整数。
8.2 Ez配置文件函数
Ez配置文件函数修改缺省系统配置文件。除非调用ConfigSetFileName来修改,该文件就是在启动时被执行的Config.sys文件。
不要把Ez配置文件函数和高级配置文件函数混合起来。调用ConfigFileLoad之后,直到你调用了ConfigFileSave保存你的修改后,你才能使用Ez配置文件函数。
这些函数每个都打开缺省系统配置文件,执行它指定的任务,然后把文件保存回磁盘。你不能如你在高级配置文件函数中所做的那样装入和保存配置文件。
EzConfigAddDriver
在缺省系统配置文件中添加一个设备驱动器语句。
EzConfigAddString
在缺省系统配置文件中添加一个语句或一行文本。
EzConfigGetValue
检索系统配置文件参数的值,比如FILES或BUFFERS。
EzConfigSetValue
设置系统配置文件参数的值,比如FILES或BUFFERS。
8.2.1 EzConfigAddDriver
语法:EzConfigAddDriver (szDriver, szRefKey, nPosition);
说明:EzConfigAddDriver函数在缺省系统配置文件中添加一个设备驱动程序语句。你可以指定驱动程序语句相对于另一个驱动程序语句的位置。例如,一个应用程序可以要求在Windows Himem.sys驱动程序后装入一个设备驱动程序。
除非通过调用ConfigSetFileName来修改,缺省系统配置文件是启动时执行的Config.sys文件。为将另一个文件作为缺省系统配置文件,调用ConfigSetFileName。为确定缺省系统配置文件的全限定名,调用ConfigGetFileName。
参数:
szDriver
指定要加入到文件中的驱动程序的全限定名。如果驱动程序已经存在于系统配置文件的一个或多个位置,该函数仅置换包含驱动程序名的最后一行。
szRefKey
Specifies the name of the device driver relative to which you are adding szDriver.
指定相对于你要添加的szDriver的参考设备驱动程序名。
nPosition
指示szDriver要添加到szRefKey指定的驱动程序的前面还是后面。在该参数位置传递下列预定义常量之一:
BEFORE:语句添加到包含szRefKey的行的前面。如果szRefKey包含一个空字符串(""),驱动程序作为第一个驱动程序插入到系统配置文件中。
AFTER:语句添加到包含szRefKey的行的后面。如果szRefKey包含一个空字符串(""),驱动程序作为最后一个驱动程序插入到系统配置文件中。
返回值:
0:EzConfigAddDriver成功添加设备驱动程序语句到文件中。
< 0:EzConfigAddDriver was unable to add the driver statement.
EzConfigAddDriver未能添加驱动程序语句。
8.2.2 EzConfigAddString
语法:EzConfigAddString (szLine, szRefKey, nOptions);
说明:EzConfigAddString函数添加一行文本到缺省系统配置文件。你可以指定你要添加的行相对于文件中另一个语句的位置。
除非通过调用ConfigSetFileName来修改,缺省系统配置文件是启动时执行的Config.sys文件。为将另一个文件作为缺省系统配置文件,调用ConfigSetFileName。为确定缺省系统配置文件的全限定名,调用ConfigGetFileName。
参数:
szLine
指定添加到系统配置文件中的文本行。
szRefKey
指定在系统配置文件中相对于你要放置的szLine的参考字。EzConfigAddString在系统配置文件中查找参考字并在包含该字的行前或后放置参数szLine的内容,依赖传递给nOptions的内容。
nOptions
指示由szLine指定的行要添加到包含szRefKey的行的前面还是后面。在该参数位置传递下列预定义常量之一:
BEFORE:将由szLine指定的行添加到包含szRefKey的行的前面。如果szRefKey包含一个空字符串(""),szLine作为首行插入到系统配置文件中。
AFTER:将由szLine指定的行添加到包含szRefKey的行的后面。如果szRefKey包含一个空字符串(""),szLine作为末行插入到系统配置文件中。
返回值:
0:EzConfigAddString成功添加字符串到缺省系统配置文件中。
< 0:was unable to add the text string.
EzConfigAddString未能添加文本行。
8.2.3 EzConfigGetValue
语法:EzConfigGetValue (szRefKey, nvValue);
说明:EzConfigGetValue函数检索缺省系统配置文件中的一个参数的数值型值,如FILES或BUFFERS。除非通过调用ConfigSetFileName来修改,缺省系统配置文件是启动序列中执行的Config.sys文件。为将另一个文件作为缺省系统配置文件,调用ConfigSetFileName。为确定缺省系统配置文件的全限定名,调用ConfigGetFileName。
参数:
szRefKey
指定其值要被检索的参数名。
nvValue
返回由szRefKey指定的关键字的数值型值。
返回值:
0:EzConfigGetValue成功检索该值。
< 0:EzConfigGetValue未能检索该值。
8.2.4 EzConfigSetValue
语法:EzConfigSetValue (szRefKey, nValue);
说明:EzConfigSetValue函数设置缺省系统配置文件中的一个命令值。除非通过调用ConfigSetFileName来修改,缺省系统配置文件是启动时执行的Config.sys文件。为将另一个文件作为缺省系统配置文件,调用ConfigSetFileName。为确定缺省系统配置文件的全限定名,调用ConfigGetFileName。
参数:
szRefKey
指定其值要被修改或添加到缺省系统配置文件中的命令。如果文件中不存在该关键字,将被添加。
nValue
指定由szRefKey指定的命令的新值。
返回值:
0:EzConfigSetValue成功设置该值。
< 0:EzConfigSetValue没有能够设置该值。