0

我在VB.Net(VS 2010中)中有一個windows安裝項目。當我構建MSI時,ProductVersion被設置爲默認值(1.0.0.0)。在安裝msi時動態設置ProductVersion

現在我想在安裝時(藉助自定義操作或類似的東西)從數據庫表中讀取動態地設置ProductVersion,以便在安裝msi之後,Windows控件中顯示的產品版本面板或安裝的exe文件屬性,是更新的。

在此先感謝。

+1

爲什麼要這麼做?即基本上這看起來像是「愚弄」這個系統。你不能在構建MSI的時候將ProductVersion設置爲正確的值(這是常用的做法)? – Nikolay

+0

是的。但productversion應該從數據庫值動態設置,而不是爲每個版本手動設置。基本上數據庫團隊將負責版本管理,而不是編程團隊,因此我想到了這個過程.. – Avishek

+0

您可以添加一個自定義動作到您的項目(.vbproj)來設置構建版本(即拉動來自「數據庫」的值,無論它是什麼,並將其設置爲可在安裝程序文件中使用的變量)。請注意,您可以在WIX​​文件中使用環境變量和項目屬性。 – Nikolay

回答

1

你不能那樣做 - ProductVersion是Windows甚至在開始安裝之前使用的東西。這就是爲什麼你有時看到「該產品的另一個版本已經安裝」。其他人在構建之後和安裝之前更改ProductVersion的最簡單方法是使用腳本更新MSI的Property表中的ProductVersion。如果您查看Windows套件SDK中的WiRunSQL.vbs並知道要使用的SQL,就可以這樣做。您需要更新Property.ProductVersion。這裏帶有示例鏈接的文檔:

https://msdn.microsoft.com/en-us/library/aa372021(v=vs.85).aspx