Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix注册表项更改_Wix - Fatal编程技术网

Wix注册表项更改

Wix注册表项更改,wix,Wix,我正在使用WiX安装程序文件编辑注册表项,但在卸载注册表项时,我希望将其设置为默认值0 下面是我用来将其设置为1的代码 <DirectoryRef Id="TARGETDIR"> <Component Id="RegistryEntries" Guid="PUT-GUID-HERE"> <RegistryKey Root="HKCU" Key="Software\Microsoft\Windows\CurrentVersion\

我正在使用WiX安装程序文件编辑注册表项,但在卸载注册表项时,我希望将其设置为默认值0

下面是我用来将其设置为1的代码

  <DirectoryRef Id="TARGETDIR">
<Component Id="RegistryEntries" Guid="PUT-GUID-HERE">
  <RegistryKey Root="HKCU"
               Key="Software\Microsoft\Windows\CurrentVersion\Policies\System"
        Action="createAndRemoveOnUninstall">
    <RegistryValue Type="integer" Name="DisableTaskMgr" Value="1" KeyPath="yes"/>
  </RegistryKey>
</Component>

我希望它在卸载时不会删除密钥,而只是将其设置为0,因为我不确定如果删除密钥,taskmanager的行为会是什么

我还假设Action=“CreateAndRemoveOnInstall”应该是其他内容?

已经不推荐使用“Action”,而应该使用“ForceCreateOnInstall”和/或“ForceDeleteOnInstall”

您还可以在组件上使用“NeverOverwrite”来确保注册表值未被删除

要设置该值,可以使用计划仅在卸载期间运行的自定义操作。使用NOT UPGRADINGPRODUCTCODE作为自定义操作的条件,以确保它仅在卸载期间执行

对于“产品和包添加”下的自定义操作

<InstallExecuteSequence>
  <Custom Action="YourCustomAction" After="InstallInitialize"><![CDATA[(NOT UPGRADINGPRODUCTCODE)]]></Custom>
</InstallExecuteSequence>


此外,我将在[HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Run]中添加一个密钥,以便它在启动时启动我的应用程序。在这种情况下,我假设“CreateAndRemoveOnInInstall”正是我想要的。我从未使用过.wxs文件。如果可以避免,我不想运行自定义操作。因为这是用来写密钥的,所以基本上只要把它改成ForceCreateOnInstall=“yes”就可以了。没有类似的方法只需重新编辑注册表而不执行自定义操作吗?我有一个C#代码,它会写入注册表,我确实尝试使用以下指南创建自定义操作:但是我被卡住了,因为我的wix文件没有一个文件,我编辑了我的响应,以包括您要放置在产品下的InstallExecuteSeSequence you's star,但是就像我以前的InstallExecuteSequence一样,将其放在产品标签中vs尖叫一个错误:(-您的回答也已被接受,因为原始问题已被回答。请忽略最后的评论。将InstallExecuteSequence放在产品标签的末尾可以解决问题。再次感谢您的帮助!