繁体   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