MsiGetProductInfoW 函数 (msi.h)
MsiGetProductInfo 函数返回已发布和已安装产品的产品信息。
语法
UINT MsiGetProductInfoW(
[in] LPCWSTR szProduct,
[in] LPCWSTR szAttribute,
[out] LPWSTR lpValueBuf,
[in, out] LPDWORD pcchValueBuf
);
参数
[in] szProduct
指定产品的代码示例。
[in] szAttribute
指定要检索的属性。
必需属性 保证可用,但仅当设置该属性时,其他属性才可用。 有关详细信息,请参阅 属性。 只能从已安装的应用程序检索以下列表中的属性。
财产 | 意义 |
---|---|
|
支持链接。 有关详细信息,请参阅 ARPHELPLINK 属性。 |
|
支持电话。 有关详细信息,请参阅 ARPHELPTELEPHONE 属性。 |
|
此产品上次收到服务的时间。 每次从产品应用或删除修补程序或 /v Command-Line 选项 用于修复产品时,都会替换此属性的值。 如果产品未收到任何修复或修补程序,则此属性包含此产品在此计算机上安装的时间。 |
|
已安装的语言。 |
|
已安装的产品名称。 有关详细信息,请参阅 ProductName 属性。 |
|
安装位置。 有关详细信息,请参阅 ARPINSTALLLOCATION 属性。 |
|
安装源。 有关详细信息,请参阅 SourceDir 属性。 |
|
本地缓存包。 |
|
发行人。 有关详细信息,请参阅 制造商 属性。 |
|
URL 信息。 有关详细信息,请参阅 ARPURLINFOABOUT 属性。 |
|
URL 更新信息。 有关详细信息,请参阅 ARPURLUPDATEINFO 属性。 |
|
派生自 ProductVersion 属性的次要产品版本。 |
|
派生自 ProductVersion 属性的主要产品版本。 |
|
产品版本。 有关详细信息,请参阅 ProductVersion 属性。 |
若要从已安装的应用程序检索产品 ID、已注册所有者或已注册的公司,请将 szProperty 设置为以下文本字符串值之一。
价值 | 描述 |
---|---|
ProductID | 产品的产品标识符。 有关详细信息,请参阅 ProductID 属性。 |
RegCompany | 注册使用此产品的公司。 |
RegOwner | 注册为使用此产品的所有者。 |
若要检索产品的实例类型,请将 szProperty 设置为以下值。 此属性可用于播发或已安装的产品。
价值 | 描述 |
---|---|
InstanceType | 缺失值或值为 0(零)表示正常的产品安装。 值为 1(一)表示使用多个实例转换和 MSINEWINSTANCE 属性安装的产品。 适用于运行 Windows Server 2003 或具有 SP1 的 Windows XP 的安装程序。 有关详细信息,请参阅 安装多个产品和修补程序实例。 |
可以从播发或安装的应用程序检索以下列表中的播发属性。
财产 | 描述 |
---|---|
INSTALLPROPERTY_TRANSFORMS | 变换。 |
INSTALLPROPERTY_LANGUAGE | 产品语言。 |
INSTALLPROPERTY_PRODUCTNAME | 人工可读产品名称。 有关详细信息,请参阅 ProductName 属性。 |
INSTALLPROPERTY_ASSIGNMENTTYPE | 如果产品是按用户播发或安装的,则等于 0(零)。
如果产品是针对所有用户播发或安装的,则等于 1(一)。 |
INSTALLPROPERTY_PACKAGECODE | 已安装此产品的包的标识符。 有关详细信息,请参阅 包代码。 |
INSTALLPROPERTY_VERSION | 派生自 ProductVersion 属性的产品版本。 |
INSTALLPROPERTY_PRODUCTICON | 包的主图标。 有关详细信息,请参阅 ARPPRODUCTICON 属性。 |
INSTALLPROPERTY_PACKAGENAME | 原始安装包的名称。 |
INSTALLPROPERTY_AUTHORIZED_LUA_APP | 值 1(1)表示可以使用 用户帐户控制(UAC)修补由非管理员提供服务的产品。 缺失值或值为 0(零)表示未启用最小特权修补。 在 Windows Installer 3.0 或更高版本中可用。 |
[out] lpValueBuf
指向接收属性值的缓冲区的指针。 此参数可以为 null。
[in, out] pcchValueBuf
指向一个变量的指针,该变量指定由 lpValueBuf 参数指向的缓冲区的大小(以字符为单位)。 在输入时,这是缓冲区的完整大小,包括终止 null 字符的空间。 如果传入的缓冲区太小,则返回的计数不包括终止 null 字符。
如果 lpValueBuf 为 null,pcchValueBuf 可以为 null。 在这种情况下,该函数检查属性是否已正确注册到产品。
返回值
价值 | 意义 |
---|---|
|
配置数据已损坏。 |
|
将无效参数传递给函数。 |
|
缓冲区太小,无法保存请求的数据。 |
|
函数成功完成。 |
|
产品未经过修改或卸载。 |
|
无法识别该属性。
注释 如果播发且未安装应用程序,MsiGetProductInfo 函数将返回ERROR_UNKNOWN_PROPERTY。
|
言论
MsiGetProductInfo 函数返回时,pcchValueBuf 参数包含缓冲区中存储的字符串的长度。 返回的计数不包括终止 null 字符。 如果缓冲区不够大,MsiGetProductInfo 返回ERROR_MORE_DATA,pcchValueBuf 包含字符串的大小(以字符为单位),而不计算 null 字符。
MsiGetProductInfo(INSTALLPROPERTY_LOCALPACKAGE) 不一定返回缓存包的路径。 缓存包仅供内部使用。 应通过 MsiConfigureFeature、MsiConfigureProduct或 MsiConfigureProductEx 函数调用维护模式安装。
如果尝试使用 MsiGetProductInfo 查询仅可用于已安装产品的属性的播发产品,该函数将返回ERROR_UNKNOWN_PROPERTY。 例如,如果应用程序播发且未安装,则INSTALLPROPERTY_INSTALLLOCATION属性的查询将返回ERROR_UNKNOWN_PROPERTY错误。
注意
msi.h 标头将 MsiGetProductInfo 定义为一个别名,该别名根据 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 |