Wix 在自定义操作中写入本地计算机注册表(有条件)

Wix 在自定义操作中写入本地计算机注册表(有条件),wix,windows-installer,uac,Wix,Windows Installer,Uac,Windows Installer具有智能功能,可以自动决定是将注册表值存储在HKEY\U当前用户还是HKEY\U本地机器(在WiX中使用Root=“HKMU”) 我需要在安装期间编写一些复杂的注册表项,因此我为此创建了一个自定义操作。根据是否设置了ALLUSERS,HKEY\U当前用户或HKEY\U本地用户将是自定义操作使用的位置 不幸的是,我必须意识到,即使在ALLUSERS安装中,自定义操作也没有写入HKEY_LOCAL_机器所需的权限,除非以管理员身份启动安装。如何让自定义操作写入HKE

Windows Installer具有智能功能,可以自动决定是将注册表值存储在
HKEY\U当前用户
还是
HKEY\U本地机器
(在WiX中使用
Root=“HKMU”

我需要在安装期间编写一些复杂的注册表项,因此我为此创建了一个自定义操作。根据是否设置了
ALLUSERS
HKEY\U当前用户
HKEY\U本地用户
将是自定义操作使用的位置


不幸的是,我必须意识到,即使在
ALLUSERS
安装中,自定义操作也没有写入
HKEY_LOCAL_机器所需的权限,除非以管理员身份启动安装。如何让自定义操作写入
HKEY_LOCAL_机器
,但仍保留每个用户安装的选项?

不要使用自定义操作,您将丢失Windows Installer的所有其他智能功能,如ugprades、回滚、卸载等

相反,将注册表值放在它们自己的组件中,并在组件上设置一个条件。如果条件的计算结果为true,则将安装组件及其关联的注册表资源


请看下面的图片。这听起来像是您希望进行评估的内容。

谢谢您的建议!我现在已经尽可能多地使用附加条件的安装程序组件。这就给我留下了一个Windows Installer无法满足的单一要求,因此我有一个自定义操作,该操作将仅在每台机器的情况下执行。有时,您不希望回滚注册表项,例如指示以前已安装过该软件。