Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WiX doesn't remove registrykey on uninstall

I've created an Component with an Condition DISABLEMSIUPGRADE, which get's set when I install the MSI using our ExternalUI. However, MSI doesn't remove the entry on UnInstall. I think the problem is caused by the Condition, but I can't fix it.

<Component Id="compMSI" Guid="5f18af6a-b839-4b4d-9d4f-79cf7826f749">
  <Condition>DISABLEMSIUPGRADE</Condition>

  <RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(var.PGuid)" Action="createAndRemoveOnUninstall">
    <RegistryValue Name="DisplayName" Type="string" Value="$(var.ProductTitle)" />
    <!-- ... -->
  </RegistryKey>
</Component>

I even placed RemoveRegistryKey Elements in other components to ensure the keys gets removed, but that also didnt do the job...

I also tried to store and read DISABLEMSIUPGRADE property in the Key.

//edit: I've experimented a bit and found out, that the CONDITION Element isn't the cause. I looks like if I have another version of my setup installed, the registry key doesn't get removed. What could cause that?

like image 997
Simon Avatar asked Jul 23 '10 10:07

Simon


1 Answers

The Windows Installer reference counts Components by their Component/@Guid. If you have a Component shared (i.e. Components that have the same @Guid) across MSI files then the contents of the Component will only be removed when both MSIs are uninstalled.

I highly recommend reading about the Component Rules. They control all of this: https://robmensching.com/blog/posts/2003/10/18/component-rules-101

like image 103
Rob Mensching Avatar answered Nov 05 '22 00:11

Rob Mensching