2016-07-12 18 views
0

我試圖深入瞭解一些間歇性問題,我們遇到一些主要的升級安裝,在運行msiexec時針對維護安裝進行評估一個msi。 MSDN給出了Uninstall registry key的簡要說明,並聲明版本是從ProductVersion屬性派生的。HKLM S .. CurrentVersion Uninstall從ProductVersion屬性派生的版本

我的問題是怎麼回事?例如'16 .48.31'如何轉換爲'0x1030001f(271581215)'? VersionMajor和VersionMinor分別很簡單,分別是'16'和'48'。另一方面,版本並非如此。

答案可能與我的問題不相關,但我已經用盡了其他線索追查。

+0

0x001f == 31,最大值是65535. –

+0

我明白了。所以它是一個字節,一個字節,兩個字節彙集成一個數字。 DERP。 0x1030打破到: 爲0x10 = 16 的0x30 = 48 0x001f = 31 感覺不好意思... – NixQuips

回答

0

你的問題很可能是你有沒有更新都的ProductVersion產品代碼並在更新設置包代碼。這產生了小升級而不是所需的主升級

程序包代碼應該在每次安裝程序編譯時更改,因爲它只被認爲是唯一的。如果兩個MSI文件具有相同的軟件包代碼,Windows安裝程序將其視爲同一個文件,並且可能會導致出現奇怪的問題 - 包括您所看到的行爲。

我只想確保您沒有使用Installshield Installscript MSI項目?這是運行Installshields GUI而不是常規MSI GUI的特殊項目類型。項目類型充滿了問題,不應使用。相反,你應該使用基本的MSI項目。

+0

使用維克斯和ProductVersion獲取與每個版本遞增。在這種情況下,16.48.31中的31是16.48版本的第31版。我們還爲每個構建生成一個新的ProductCode和包代碼GUID。我已經通過使用Orca的MSI進行了審視,並且已經驗證我們正在增加每個後續版本的版本。我還驗證了兩個GUID對每個MSI都是唯一的。 – NixQuips

+0

但是,我看到的是,ProductState正在對我們的主要升級進行評估,我認爲這反映了現實。問題在於它正在註冊爲維護模式,因此我們的一些與停止/啓動應用程序池和Windows服務有關的自定義操作未被調用。 – NixQuips