Wix MSI安装程序在服务启动时启动自动修复
我有一个基于WiX的MSI,它安装了一个服务和一些快捷方式(以及许多其他不安装的文件) 快捷方式是按照中所述创建的,其中HKCU下的注册表项作为密钥文件。这是一个全用户安装,但要通过ICE38,此注册表项必须位于当前用户之下 当服务启动时(它在系统帐户下运行),它会注意到该注册表项无效(至少对该用户无效),并再次运行安装以“修复” 在事件日志中,我得到MSIInstall事件1001和1004,显示“资源'HKEY_CURRENT_USER\SOFTWARE\MyInstaller\Foo'不存在”。这并不奇怪,因为系统用户没有此密钥 我打开了系统范围的MSI日志记录,自动修复在C:\Windows\Temp文件夹中创建了它的日志文件,而不是特定用户的Temp文件夹,这似乎暗示当前用户是系统(加上日志文件显示“调用进程”是我的服务)Wix MSI安装程序在服务启动时启动自动修复,wix,windows-installer,Wix,Windows Installer,我有一个基于WiX的MSI,它安装了一个服务和一些快捷方式(以及许多其他不安装的文件) 快捷方式是按照中所述创建的,其中HKCU下的注册表项作为密钥文件。这是一个全用户安装,但要通过ICE38,此注册表项必须位于当前用户之下 当服务启动时(它在系统帐户下运行),它会注意到该注册表项无效(至少对该用户无效),并再次运行安装以“修复” 在事件日志中,我得到MSIInstall事件1001和1004,显示“资源'HKEY_CURRENT_USER\SOFTWARE\MyInstaller\Foo'不存
我可以做些什么来禁用自动修复功能吗?我是做错了什么还是违反了MSI规则?是否有关于下一步查找的提示?将组件拆分为单独的功能。通过将服务置于其自身功能中,它不会扫描其他组件。如果您使用广告快捷方式,则不需要HKCU注册表项。为了避免看到的自动修复,但仍然具有相同的效果,这是一个确保每个用户都有一个程序(通常是配置HKCU注册表设置的配置程序或脚本)只运行一次的系统
(这是我几年前写的一篇文章,比较了不同的方法,如果你还没有猜到的话,它支持ActiveSetup…你不能在文件系统中添加alluser开始菜单的快捷方式吗?这听起来可能有些奇怪,但在我工作的地方,我们实际上不喜欢广告/修复。我们的软件部署在这样的环境中:虽然我们缓存了软件,但客户不希望看到修复。