我的安装程序是一个32位程序,当我将它安装到64位Windows 7时,它会写入注册表中的64和wow目录。但是,当我删除程序时,wow目录键仍然保留在那里,因此DotNetInstaller仍然将其标记为已安装,尽管它不是。这是注册表键部分:
<Component Id="ClientRegKey" Guid="{9239B7BA-71FA-4703-A597-355522505E7D}">
<RegistryKey Id="Registry_Client" Root="HKLM" Key="Software\Client\Client11"
Action="createAndRemoveOnUninstall" >
<RegistryValue KeyPath="yes" Name="Installed" Type="integer" Value="1" Win64="yes"/>
</RegistryKey>
</Component>
答案 0 :(得分:0)
在您的注册表值元素中,您为什么这样做 提到win64 = true?这甚至是一个有效的属性,我在文档中没有看到它。
http://wixtoolset.org/documentation/manual/v3/xsd/wix/registryvalue.html
我认为该属性导致安装程序在常规节点中创建注册表项。默认情况下,Windows 7上的x86安装程序将仅在Wow节点中创建注册表项。请删除该属性,我认为没问题。
从文档中看,似乎不推荐使用action属性,看看它也是如此。