0
我试图以编程方式查询安装程序项目中的信息。这些信息在安装程序中定义,我不想在代码中复制它。我需要获取Publisher安装程序属性(以及其他几个),但似乎无法让事情发挥作用。MsiGetProductInfo返回已安装产品的ERROR_UNKNOWN_PRODUCT
我使用的查询:
[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。
如何正确查询该产品的发布者?
我想是时候添加注册表键了。感谢鲍勃,我需要那个。 – PatrickV