MsiProvideQualifiedComponentW 函数 (msi.h)

MsiProvideQualifiedComponent 函数返回限定组件的完整组件路径,并执行任何必要的安装。 此函数在必要时提示源,并递增该功能的使用计数。

语法

UINT MsiProvideQualifiedComponentW(
  [in]      LPCWSTR szCategory,
  [in]      LPCWSTR szQualifier,
  [in]      DWORD   dwInstallMode,
  [out]     LPWSTR  lpPathBuf,
  [in, out] LPDWORD pcchPathBuf
);

参数

[in] szCategory

指定所请求组件的组件 ID。 这可能不是组件本身的 GUID,而是提供正确功能的服务器,如 PublishComponent 表的 ComponentId 列中

[in] szQualifier

将限定符指定为广告组件列表(从 PublishComponent 表)。

[in] dwInstallMode

定义安装模式。 此参数可以是下列值之一。

价值 意义
INSTALLMODE_DEFAULT
提供组件并执行提供组件所需的任何安装。 如果缺少请求的功能或功能父级的组件的关键文件,请使用已设置以下标志位的 MsiReinstallFeature 重新安装该功能:REINSTALLMODE_FILEMISSING、REINSTALLMODE_FILEOLDERVERSION、REINSTALLMODE_FILEVERIFY、REINSTALLMODE_MACHINEDATA、REINSTALLMODE_USERDATA和REINSTALLMODE_SHORTCUT。
INSTALLMODE_EXISTING
仅当功能存在时,才提供组件。 否则返回ERROR_FILE_NOT_FOUND。

此模式验证组件的密钥文件是否存在。

INSTALLMODE_NODETECTION
仅当功能存在时,才提供组件。 否则返回ERROR_FILE_NOT_FOUND。

此模式仅检查组件是否已注册,并且不验证组件的密钥文件是否存在。

的 REINSTALLMODE 标志的 组合
调用 MsiReinstallFeature,为 dwReinstallMode 参数使用此参数重新安装该功能,然后提供组件。
INSTALLMODE_NOSOURCERESOLUTION
仅当功能的安装状态INSTALLSTATE_LOCAL时,才提供组件。 如果功能的安装状态INSTALLSTATE_SOURCE,则返回ERROR_INSTALL_SOURCE_ABSENT。 否则,它将返回ERROR_FILE_NOT_FOUND。 此模式仅检查组件是否已注册,并且不验证密钥文件是否存在。

[out] lpPathBuf

指向接收组件路径的变量的指针。 此参数可以为 null。

[in, out] pcchPathBuf

指向一个变量的指针,该变量指定由 lpPathBuf 参数指向的缓冲区的大小(以字符为单位)。 在输入时,这是缓冲区的完整大小,包括终止 null 字符的空间。 如果传入的缓冲区太小,则返回的计数不包括终止 null 字符。

如果 lpPathBuf 为 null,pcchBuf 可以为 null。

返回值

价值 意义
ERROR_INDEX_ABSENT
组件限定符无效或不存在。
ERROR_SUCCESS
函数成功完成。
ERROR_FILE_NOT_FOUND
该功能不存在或损坏。 dwInstallMode = INSTALLMODE_EXISTING 返回此错误。
ERROR_UNKNOWN_COMPONENT
指定的组件未知。
与操作 相关的错误
请参阅 错误代码
初始化错误
发生与初始化相关的错误。

言论

MsiProvideQualifiedComponent 函数成功后,pcchPathBuf 参数包含 lpPathBuf中的字符串长度。

包含损坏文件或文件错误版本的组件的功能必须由用户显式重新安装,或者让应用程序调用 MsiReinstallFeature

注意

msi.h 标头将 MsiProvideQualifiedComponent 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer。 有关 Windows Installer 版本所需的最低 Windows Service Pack 的信息,请参阅 Windows Installer Run-Time 要求。
目标平台 窗户
标头 msi.h
Msi.lib
DLL Msi.dll

另请参阅

Component-Specific Functions

显示错误消息

错误代码

初始化错误

Multiple-Package 安装