2010-04-07 77 views
1

我有一個基於WiX的MSI,可以安裝服務和一些快捷方式(以及許多其他不支持的文件)。MSI安裝程序啓動服務啓動時的自動修復

按照WiX docs中所述,使用HKCU下的註冊表項作爲密鑰文件創建快捷方式。這是所有用戶的安裝,但要通過ICE38,此註冊表項必須位於當前用戶下。

服務啓動時(它在SYSTEM帳戶下運行)會注意到該註冊表項無效(至少是該用戶)並再次運行安裝以「修復」。

在事件日誌中,我得到MsiInstaller事件1001和1004,顯示「The resource'HKEY_CURRENT_USER \ SOFTWARE \ MyInstaller \ Foo'不存在。」這並不奇怪,因爲SYSTEM用戶不會有這個鍵。

我打開了系統範圍的MSI日誌記錄,並且自動修復在C:\ Windows \ Temp文件夾中創建了它的日誌文件,而不是特定用戶的TEMP文件夾,這似乎暗示當前用戶是SYSTEM(加上日誌文件顯示「呼叫過程」是我的服務)。

有什麼我可以做的,禁用自動修復功能?我做錯了什麼或違反了一些MSI規則?任何關於下一步看什麼的提示?

+0

你不能將快捷方式添加到ALLUSER的開始菜單在文件系統中呢? – 2010-04-07 22:49:29

回答

0

將組件分解爲獨立的功能。通過將服務放入自己的功能中,它不會掃描其他組件。

0

如果使用公佈的快捷方式,則不需要HKCU註冊表項。

+0

這可能聽起來很奇怪,但我工作的地方其實不喜歡廣告/修理。我們的軟件部署在儘管我們緩存軟件的環境中,但客戶不喜歡看到修理期限。 – 2010-04-08 14:48:18

0

爲了避免您所看到的自動修復,但仍然有同樣的效果,you could use ActiveSetup,這是確保每個用戶dead simple系統具有程序 - 通常是一個配置程序或腳本配置HKCU註冊表settings--運行一次。

(該first article linked above,這是我幾年前寫的,比較了不同的方法,如果你不已經猜到,有利於ActiveSetup ...)