[英]How and why, to add the details of an installed product to System Registry, while creating setUp project for C# windows application?
[英]Read Product Number from Windows Setup Project
我需要獲取我使用 InstalledShield 創建 .exe 的安裝項目的產品編號。
我在安裝程序 API 中閱讀了MsiGetProductInfo (),但在示例代碼 c# 中找不到任何應用它的內容。
謝謝。
您指的是 MsiGetProductInfo,所以我假設您有一個 Windows Installer MSI 文件,您的 exe 會安裝該文件(因為它引導先決條件),並且您希望在安裝設置后獲取信息。
這是 p/invoke 簽名:
DllImport("msi.dll", CharSet=CharSet.Unicode)]
static extern Int32 MsiGetProductInfo(string product,
string property, [Out] StringBuilder valueBuf, ref Int32 len)
基本上 Product 是 MSI 的 ProductCode guid,它是一個由 {} 括號包圍的字符串。
您尚未發布任何您可能嘗試過的代碼,因此無法診斷您可能遇到的任何問題。 如果“產品編號”是指版本,那么您可以使用此處記錄的任何值:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370130(v=vs.85).aspx
在 Windows SDK 的 msi.h 中定義了 INSTALLPROPERTY_VERSIONSTRING 之類的內容,值為“VersionString”。
在這個例子中也應該有足夠的信息:
使用 MSIEnumRelatedProducts 和 MSIGetProductInfo 的 MSI 互操作
當升級發生時,對於許多不同的 ProductCode,UpgradeCode 通常保持不變,因此如果您在 UpgradeCode 上使用 MsiEnumRelatedProducts 返回 ProductCode,然后將該 ProductCode 插入 MsiGetProductInfo,則代碼不會發生太大變化。
MsiGetProductInfo
將無法工作,因為安裝程序是使用 Wix Bootstrapper 構建的。 您可以做的是使用任何存檔器(最終是存檔)打開可執行文件並解析名為0
文件,它是一個 XML。 您可以在那里找到所有信息,例如版本、產品名稱、產品密鑰等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.