|
|
InstallShield内部库函数之7 组件函数 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
InstallShield内部库函数之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

|
|
相关文章:相关软件: |
|