MsiProvideAssemblyA 函数 (msi.h)
MsiProvideAssembly 函数返回包含程序集的 Windows Installer 组件的完整路径。 该函数会提示输入源并执行任何必要的安装。 MsiProvideAssembly 递增该功能的使用计数。
语法
UINT MsiProvideAssemblyA(
[in] LPCSTR szAssemblyName,
[in] LPCSTR szAppContext,
[in] DWORD dwInstallMode,
[in] DWORD dwAssemblyInfo,
[out] LPSTR lpPathBuf,
[in, out] LPDWORD pcchPathBuf
);
参数
[in] szAssemblyName
作为字符串的程序集名称。
[in] szAppContext
设置为全局程序集的 null。 对于专用程序集,请将 szAppContext 设置为应用程序配置文件的完整路径,或设置为程序集已设置为私有的应用程序的可执行文件的完整路径。
[in] dwInstallMode
定义安装模式。 此参数可以是下列值之一。
价值 | 意义 |
---|---|
|
提供组件并执行提供组件所需的任何安装。 如果缺少请求的功能或功能父级的组件的关键文件,请使用已设置以下标志位的 MsiReinstallFeature 重新安装该功能:REINSTALLMODE_FILEMISSING、REINSTALLMODE_FILEOLDERVERSION、REINSTALLMODE_FILEVERIFY、REINSTALLMODE_MACHINEDATA、REINSTALLMODE_USERDATA和REINSTALLMODE_SHORTCUT。 |
|
仅当功能存在时,才提供组件。 否则返回ERROR_FILE_NOT_FOUND。
此模式验证组件的密钥文件是否存在。 |
|
仅当功能存在时,才提供组件。 否则返回ERROR_FILE_NOT_FOUND。
此模式仅检查组件是否已注册,并且不验证组件的密钥文件是否存在。 |
|
仅当功能的安装状态INSTALLSTATE_LOCAL时,才提供组件。 如果功能安装状态INSTALLSTATE_SOURCE,则返回ERROR_INSTALL_SOURCE_ABSENT。 否则返回ERROR_FILE_NOT_FOUND。 此模式仅检查组件是否已注册,并且不验证密钥文件是否存在。 |
|
如果任何已安装的产品中存在某个功能,请提供组件。 否则返回ERROR_FILE_NOT_FOUND。 此模式仅检查组件是否已注册,并且不验证组件的密钥文件是否存在。
此标志类似于INSTALLMODE_NODETECTION标志,但使用此标志,我们检查安装了程序集的任何产品,而不是最后一个产品,就像INSTALLMODE_NODETECTION标志一样。
此标志只能与 msiProvideAssembly |
|
调用 MsiReinstallFeature,以使用此参数为 dwReinstallMode 参数重新安装功能,然后提供组件。 |
[in] dwAssemblyInfo
程序集信息和程序集类型。 设置为以下值之一。
价值 | 意义 |
---|---|
|
.NET 程序集 |
|
Win32 程序集 |
[out] lpPathBuf
指向接收组件路径的变量的指针。 此参数可以为 null。
[in, out] pcchPathBuf
指向一个变量的指针,该变量指定由 lpPathBuf 参数指向的缓冲区的大小(以字符为单位)。 在输入时,这是缓冲区的完整大小,包括终止 null 字符的空间。 如果传入的缓冲区太小,则返回的计数不包括终止 null 字符。
如果 lpPathBuf 为 null,pcchPathBuf 可以为 null。
返回值
价值 | 意义 |
---|---|
|
配置数据已损坏。 |
|
该功能不存在或损坏。 dwInstallMode = INSTALLMODE_EXISTING 返回此错误。 |
|
安装失败。 |
|
正在请求的组件在计算机上处于禁用状态。 |
|
将无效参数传递给函数。 |
|
函数成功完成。 |
|
功能 ID 不标识已知功能。 |
|
组件 ID 未指定已知组件。 |
|
该代码示例不标识已知产品。 |
|
无法识别的产品或功能名称已传递到函数。 |
|
将返回缓冲区溢出。 |
|
系统没有足够的内存来完成操作。 适用于 Windows Server 2003。 |
|
无法检测源。 |
有关详细信息,请参阅 显示错误消息。
言论
MsiProvideAssembly 函数成功后,pcchPathBuf 参数包含 lpPathBuf中的字符串长度。
INSTALLMODE_EXISTING选项不能与 REINSTALLMODE 标志结合使用。
包含损坏文件或文件错误版本的组件的功能必须由用户显式重新安装,或者让应用程序调用 MsiReinstallFeature。
注意
msi.h 标头将 MsiProvideAssembly 定义为一个别名,该别名根据 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 |