2012-09-20 70 views
0

我有一個我使用Installshield 2012 Pro維護的MSI軟件包。MSI,修復運行,但我不知道爲什麼

該軟件包再次創建幾年,需要定期維護,因爲應用程序的新版本是我們的開發團隊發佈的安裝。這個MSI已經在很多地方使用過,在許多機器上沒有問題。

在一個客戶的位置,他們已經在20臺機器上安裝了約20份應用程序。每臺機器都完全一樣。 定期地,由於未知原因,與該應用程序有關的註冊表條目丟失。不是所有的人,一個或兩個選擇...相同的條目總是失蹤。

我們到目前爲止沒有跟蹤確切的根本原因,但是我們的一位支持工程師注意到當他們打開應用程序快捷方式時出現的MSI修復對話框。在此之後,註冊表項失蹤。

在每個缺少註冊表項的實例上,我們都從c:\ Windows \ Installer目錄中刪除了MSI。在機器上我們也做了這個改變,到目前爲止註冊表的改變並沒有消失。

這讓我想到MSI在修復過程中以某種方式刪除選定的註冊表項,但我不知道如何。

  • 在與刪除的條目相同的鍵下至少有50個註冊表項。 (這些應用程序沒有安裝程序創建)
  • MSI軟件包不插入任何鍵都在安裝過程中
  • 有在所有
  • 任何自定義操作我只有在整個設定一個密鑰文件MSI,這是安裝在Windows \ System32下一個組件的快捷方式
  • 都不是「刊登了」

似乎有從安裝目錄中並沒有再出現去除MSI之間有明顯的聯繫,但我無法看到我的MSI中可能導致特定註冊表項失效的內容耳。

我知道確切的原因,這這是主觀上我的MSI或客戶系統,從而一般地我問:

  • 爲什麼Windows中啓動的MSI修復功能,在考慮上述
  • MSI可以改變註冊表,考慮以上
  • 是否有MSI後安裝禁用此MSI的自動修復功能?
  • 我該如何改變MSI以確保不會發生汽車修理?

感謝

+0

當你說去「丟失」的註冊表值和密鑰被刪除或註冊表值的數據設置爲空/空? –

+0

@ChristopherPainter的值被刪除,密鑰本身仍然存在。 – Damo

+0

我需要確定我們使用的是相同的術語。如果你有一個SOMEE​​DATA類型的RegSZ值的SOMEVALUE ... SOMEDATA變成了NULL還是SOMEVALUE實際上完全被刪除了? –

回答

0

開始通過證明汽車修理是否與您的產品。檢查導致Windows Installer啓動自動修復的組件ID的應用程序事件日誌。那麼,如果它是你的安裝程序的一部分,找出原因。

你的MSI似乎不太可能會改變註冊表。雖然你沒有具體說有沒有RemoveRegistry表項,但很難想象偶然會有什麼隱藏。

只有不好的方法來禁用自動修復(一些全球性的,有些不涉及註冊您的安裝程序)。避免它們。

首先弄清楚什麼是錯的。然後弄清楚如何解決它。例如,如果在步驟1中確定觸發自動修復的組件是您安裝的一部分,則可以在出現此情況的計算機上設置logging policy,以便您可以獲得詳細的MSI日誌。

+0

謝謝,我發現一個文件夾被刪除(根本原因未知,通過事件日誌感謝提示),這是觸發修復。現在我們知道我在本地測試它的修復觸發器,修復不會改變註冊表。今天,我們將嘗試一個客戶單位,看看這是否會觸發另一個刪除註冊表的某種程序。 – Damo

相關問題