2009-08-19 60 views
8

我可以找到很多關於msi升級的信息。例如。有關小升級,小升級,主要升級,以及它們的使用案例和限制的信息。但是,我無法找到合併模塊的升級行爲信息,如:合併模塊如何升級?

  1. 好像MSM沒有指定次要的,小的,或 重大升級任何 方式。那麼 的行爲方式是?它是否首先卸載舊的 版本,或只更新 文件?
  2. 有沒有什麼辦法可以從 指定哪個版本可以升級 像msi?
  3. 我可以爲新版本添加/刪除/重命名 組件嗎?
  4. 如果MSM的較新版本 已經安裝和容器 微星決定安裝,將它與 這個舊版本 MSM的覆蓋?

回答

7

合併模塊可以參與兩種升級方案。第一種是安裝程序升級時,升級.msm文件。這發生在Visual Studio服務包等提供更新合併模塊供您使用的情況下。這可能會產生問題,因爲.msm文件沒有文件版本(即使它們具有合併模塊版本),所以文件版本控制規則不適用。你可能不會問這個案子。

另一種情況是合併模塊已合併到將升級的安裝程序中。它不再是合併模塊,而是其文件和其他記錄是消費安裝程序的一部分。在這種情況下,已合併到其中的.msi控制升級步驟。這兩者相互作用,通知你對前三個問題的回答。如果合併模塊的更改不符合次要升級規則,則消費安裝程序將無法使用次要升級,並且必須進行重大升級。相應地,如果您想在使用安裝程序中使用(或允許)次要升級,則必須注意組件。這可能比在.msi中更難,因爲您無法在合併模塊內添加新功能。文件版本控制規則將像在所有Windows Installer安裝中一樣應用;因此對第四個問題的答案是逐個文件確定的,而不是針對整個模塊內容的組答案而不是組答案。

+0

很棒的回答。這確實是第二種情況。 Windows安裝程序圖片越來越清晰... – Dudu 2009-08-21 09:02:24

0

問題: 我相信我需要知道如何在解答的第二個場景中描述版本的合併模塊。

現狀:

我有所有安裝相同的合併模塊衆多產品。

如果一個產品安裝了較新版本的合併模塊,我不希望舊版本的其他產品覆蓋最新的合併模塊。

有人可以描述這是否可能,如果是的話如何?

+0

這真的應該是它自己的獨立問題(必要時請參考此文檔)。如果合併模塊及其更新版本編寫得很好,這應該是正常的。較新的文件版本將覆蓋較舊的版本,但反之亦然。共享組件代碼將正確引用計數,因此即使是最新文件的單個用戶也不會刪除共享文件。簡而言之:在升級此合併模塊的設計時,確保遵循組件和文件版本控制規則,理想情況下只更新現有文件。那麼一切都應該正常工作。 – 2009-12-24 16:52:45

+1

我很難找到關於這個的詳細文檔,所以這裏是我從實驗中證實的:給定:合併模塊的2個版本,稱它們爲MMv1.msm&MMv2.msm;每個.msm包含1個文件MyFile.dll; MMv1.msm有MyFile.dll的v1.0; MMv2.msm有MyFile.dll的v2.0; MMv1.msm由安裝程序爲應用程序A1使用; MMv2.msm用於應用程序A2。然後,當... 1)App A1被安裝,然後A2? MyFile在2.0版完成; 2)A1,然後A2,安裝,然後只是A2卸載? MyFile保持在v2.0。 3)安裝A2,那麼A1? MyFile從v2.0開始並保持在v2.0。 – 2015-10-15 18:46:54