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