WiX installer not removing files on uninstall

12,715

Solution 1

SO, I found out what my issue was.

I wasn't properly adding the guids. The files and folders now properly get removed.

Solution 2

Check out this thread; Removing files when uninstalling WiX

First of all, I hope you are not removing files that are installed by MSI, that would beat the purpose of MSI. It should already do that.

Secondly, you can try adding empty CreateFolder element to Component(it might be the case of component not registering, if KeyPath element is not included, or Components KeyPath="Yes" is not included).

Make sure that you use RemoveFolder element. As you can also read from the link, recursion is not supported, so you need to manually delete everything, and make sure that there are no subfolders.

Ps that's pretty tiring, you can use CustomAction to execute [System64]\cmd.exe with rmdir and include recursive flag there, then schedule it after RemoveFiles, and run it on only on UNISTALL.

Share:
12,715
Chris None
Author by

Chris None

Updated on September 15, 2022

Comments

  • Chris None
    Chris None about 1 year

    I am telling a wix MSI file to remove files on uninstall, and it's simply not registering it.

    For the bundle I call the MSI file thusly:

    <MsiPackage SourceFile="..\..\..\..\Kiosk\MyProject\bin\Release\MyProject.msi"        Name="MyProject.msi" DisplayInternalUI="yes" Permanent="no" />
    

    And in the MSI file I call this:

    <ComponentGroup Id="Purge" Directory="INSTALLFOLDER">
      <Component Id="PurgeFiles" Guid="">
        <RemoveFile Id="RemoveBaseFolder" Name="*" On="uninstall" Directory="INSTALLFOLDER" />
        <RemoveFile Id="RemoveLanguage_af" Directory="Language_af" Name="*.*" On="uninstall"/>
        <RemoveFile Id="RemoveLanguage_de" Name="*.*" On="uninstall" Directory="Language_de"/>
        <RemoveFile Id="RemoveLanguage_es" Name="*.*" On="uninstall" Directory="Language_es"/>
        <RemoveFile Id="RemoveLanguage_fr" Name="*.*" On="uninstall" Directory="Language_fr"/>
        <RemoveFile Id="RemoveLanguage_it" Name="*.*" On="uninstall" Directory="Language_it"/>
        <RemoveFile Id="RemoveLanguage_ja" Name="*.*" On="uninstall" Directory="Language_ja"/>
        <RemoveFile Id="RemoveLanguage_ko" Name="*.*" On="uninstall" Directory="Language_ko"/>
        <RemoveFile Id="RemoveLanguage_ru" Name="*.*" On="uninstall" Directory="Language_ru"/>
        <RemoveFile Id="Removezh_CN" Name="*.*" On="uninstall" Directory="zh_CN"/>
        <RemoveFile Id="RemoveDatabase" Name="*.*" On="uninstall" Directory="Database"/>
        <RemoveFile Id="RemoveFileData" Name="*.*" On="uninstall" Directory="FileData"/>
        <RemoveFile Id="RemoveRecordingTempData" Name="*.*" On="uninstall" Directory="RecordingTempData"/>
        <RemoveFile Id="RemoveSignatureData" Name="*.*" On="uninstall" Directory="SignatureData"/>
        <RemoveFile Id="RemoveCacheUpdater" Name="*.*" On="uninstall" Directory="CacheUpdater"/>
        <RemoveFile Id="RemoveRecordingUploader" Name="*.*" On="uninstall" Directory="RecordingUploader"/>
      </Component>
    </ComponentGroup>
    

    I then reference the component group with:

    <Feature Id="ProductFeature" Title="CacheUpdaterInstaller" Level="1">
    <ComponentGroupRef Id="Purge"/>
    </Feature>
    

    Why are the files not being deleted? I have tried from both the burn exe file and the MSI file itself. The program installs fine, but the removal seems to not work at all.

  • Chris None
    Chris None almost 10 years
    The MSI isn't removing the files, it's not removing registry keys, all it does is remove itself from the program menu and that's IT.
  • Shintaro Takechi
    Shintaro Takechi over 6 years
    In this case, what do you mean by "properly adding the guids"? Do you mean adding Guid="{xxx}"?