MsiGetProductInfo 返回已安装产品的ERROR_UNKNOWN_PRODUCT
本文关键字:ERROR UNKNOWN PRODUCT 返回 安装 MsiGetProductInfo | 更新日期: 2023-09-27 18:33:50
我正在尝试以编程方式查询安装程序项目中的信息。 此信息在安装程序中定义,我不想在代码中复制它。 我需要获取发布者安装程序属性(以及其他一些属性),但似乎无法正常工作。
我正在使用:
[DllImport("msi.dll", CharSet = CharSet.Unicode)]
private static extern Int32 MsiGetProductInfo(
string product,
string property,
[Out] StringBuilder valueBuf,
ref Int32 len);
。
int length = 512;
StringBuilder builder = new StringBuilder(length);
var result = MsiGetProductInfo(
"{censored}",
"Publisher",
builder,
ref length);
使用RegEdit,我可以看到一个可卸载的产品:
{审查}_is1
这是我的应用程序,带有"发布者"密钥,这是我所期望的。 我不确定为什么会有"_is1"后缀。 安装程序是使用Inno Setup制作的,也许这是相关的。 我尝试在调用MsiGetProductInfo的产品代码上添加此后缀,但没有效果。
调用返回 1605,即ERROR_UNKNOWN_PRODUCT。
如何正确查询此产品的发布者?
MSI API 仅对基于 MSI 的安装有用。Inno 安装程序不会创建 MSI 包,因此您无法使用 MSI API 查询有关 Inno Setup 安装的信息。