2011-07-28 135 views
1

我對Wix相當陌生,所以也許這個問題沒有任何意義,但爲什麼沒有合併模塊的升級代碼?我目前有一個小型應用程序,我爲它定期提供MSI。現在我還想爲此應用程序創建一個合併模塊,以便它可以與其他應用程序一起安裝(它將作爲一組相關應用程序的一部分發送給客戶端)。我希望我的合併模塊檢測我的應用程序是否已安裝,並在必要時升級它,但沒有合併模塊的升級代碼。有沒有辦法做到這一點?Wix合併模塊升級代碼

我想要的是這樣的行爲:假設您可以將Word,Excel等與他們自己的MSI分開安裝,但也可以安裝整個Microsoft Office,其中包括Word,Excel的MSM。 ..當然,如果您首先從MSI安裝Excel,然後運行MSI for Office,則MSM for Excel會檢測到它已安裝並在必要時升級,或者如果它是最新的,則不執行任何操作。

感謝所有您的幫助

回答

3

升級在整個產品的級別進行處理。合併模塊是產品中包含的相關組件的集合。所以合併模塊是指定升級的錯誤地方。

但是,對於您描述的情況,您不需要升級:Windows Installer會在版本號增加時升級單個文件。有關版本控制規則的完整列表,請參閱MSI SDK中的「文件版本控制規則」。

+0

謝謝你。如果這個合併模塊中有大約20個文件,他們是否應該遵循這個文件版本控制計劃?另外,如果其中的2個文件是必須註冊的COM組件,我該怎麼辦?有沒有辦法在文件發生變化時重新註冊文件? – Carl

+1

是的,如果一個文件被更新,其版本號必須改變 - MSI本質上信任版本號,所以如果它沒有改變,MSI不會升級它。同樣的事情適用於COM註冊:將註冊表項放入與文件相同的組件中,增加文件的版本號,MSI將升級文件並寫入註冊表值。 –

+0

如果我理解的很好,合併模塊必須對其安裝文件的路徑進行硬編碼,因爲它依賴於文件版本升級。如果我讓MSI決定在哪裏安裝MSM,我可能會在系統上的多個位置上獲取多個文件的多個副本,而不會檢測到它? – Carl