簡體   English   中英

從 Windows 安裝項目中讀取產品編號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM