簡體   English   中英

服務啟動時,MSI安裝程序將開始自動修復

[英]MSI Installer start auto-repair when service starts

我有一個基於WiX的MSI,可安裝服務和一些快捷方式(以及許多其他快捷方式)。

按照WiX文檔中的描述創建快捷方式,並在HKCU下將注冊表項作為密鑰文件。 這是所有用戶的安裝,但要通過ICE38,此注冊表項必須在當前用戶下。

服務啟動時(以SYSTEM帳戶運行),它會注意到該注冊表項無效(至少對該用戶有效),然后再次運行安裝以“修復”。

在事件日志中,我得到MsiInstaller事件1001和1004,顯示“資源'HKEY_CURRENT_USER \\ SOFTWARE \\ MyInstaller \\ Foo'不存在”。 這並不奇怪,因為SYSTEM用戶將沒有此密鑰。

我打開了系統范圍的MSI日志記錄,自動修復功能在C:\\ Windows \\ Temp文件夾而不是特定用戶的TEMP文件夾中創建了其日志文件,這似乎暗示當前用戶是SYSTEM(加上日志文件顯示“流程”作為我的服務)。

我可以做些什么來禁用自動修復功能? 我是在做錯什么還是違反了MSI規則? 關於下一步的任何提示?

將組件拆分為單獨的功能。 通過將服務置於自己的功能中,它將不會掃描其他組件。

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

為了避免看到的自動修復,但仍具有相同的效果, 可以使用ActiveSetup ,它是一個簡單的系統,可確保每個用戶都有一個程序-通常是配置程序或配置HKCU注冊表設置的腳本-只運行一次。

上面鏈接第一篇文章 ,我幾年前寫的東西,比較了不同的方法,如果您還沒有猜到的話,則傾向於ActiveSetup ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM