2012-02-16 68 views
0

假設MSI軟件包寫入HKCU註冊表分支作爲其安裝的一部分:MSI自愈能恢復註冊表項嗎?

如果應用程序隨後改變這些值,或這些數值以另一種方式改變,將在MSI的自我修復機制恢復這些價值與MSI所說的應該是什麼?

+1

http://support.microsoft.com/kb/235620 – 2012-02-16 12:32:04

回答

0

是的,只要你有一個機會觸發resilency。通常這是COM激活或通告的快捷方式。它也可以是您放入應用程序以調用MSI API的代碼。

如果你有一個像辦公室外接程序,其中另一個進程承載你的代碼的情況,你有沒有存在的,你可以使用這一招的快捷方式或COM激活:

InstallTalk: Using Active Setup to Repair User Settings

也意識到,對於reocrd,這是一個相當沉重,有時令人討厭的過程。如果需要文件並且用戶在修復過程中看到進度條,則必須確保您的MSI可用。如果失敗了,它可能會一遍又一遍地發生。我在會議室看到過這種情況,第一次登錄的人就是Office,但Office無法修復。

另一種方法是將此要求轉移到應用程序中,並使其負責在首次運行時更新用戶配置文件本身。

此外,要意識到MSI無法刪除卸載時所有配置文件中的所有這些註冊表值。這是不可能的,因爲用戶配置文件可能是漫遊和/或甚至沒有加載。

+0

如果是每用戶安裝,那麼不會卸載是根據哪個用戶登錄發生的事情,這意味着註冊表值將會在事實被刪除? – CJ7 2012-02-17 13:57:51

+0

每個用戶只能安裝到執行安裝的用戶的HKCU,是的他們將在範圍內被刪除。但是,意識到這會導致其他問題。參見規則#30 http://blogs.msdn.com/b/windows_installer_team/archive/2006/05/24/605835.aspx – 2012-02-17 15:05:23