我正在尝试以编程方式从安装程序项目中查询信息。此信息在安装程序中定义,我不想在代码中复制它。我需要获取 Publisher 安装程序属性(以及其他一些属性),但似乎无法让事情正常工作。
我正在使用以下方式查询:
[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
这是我的应用程序,带有我所期望的“Publisher”键。我不确定为什么有“_is1”后缀。安装程序是使用 Inno Setup 制作的,也许是相关的。我曾尝试在对 MsiGetProductInfo 的调用中在产品代码上添加此后缀,但没有效果。
该调用返回 1605,即 ERROR_UNKNOWN_PRODUCT。
如何正确查询该产品的发布者?