tags:

views:

164

answers:

1

I noticed this warning in the documentation for NSIS's RmDir method:

Warning: using RMDir /r $INSTDIR in the uninstaller is not safe. Though it is unlikely, the user might select to install to the Program Files folder and so this command will wipe out the entire Program Files folder, including other programs that has nothing to do with the uninstaller.

This scares me, since up until now I had not considered this possibility and I had that exact line in my script. But when I tested if this would happen by installing my program to a pre-existing location containing pre-existing files and then running my uninstaller with RmDir /r /REBOOTOK $INSTDIR in it, the existing files were left unharmed.

Is this an outdated warning? I'm using NSIS v. 2.46.

Thanks

+1  A: 

RmDir /r will delete the whole directory tree if it can, so it is "unsafe". See http://nsis.sourceforge.net/Uninstall_only_installed_files for a way to only delete the files you install

Anders
What if I were to create a sub folder at $INSTDIR and put all my program data in there, recursively delete that sub dir, and then do a regular RmDir on the original $INSTDIR?
Cuga
Well, it would help, but the issue could still be there. Lets say your subfolder is named system32 and the user installs to %windir%, you will then delete %windir%\system32
Anders
I think I'll risk it with creating a subdir inside INSTDIR named: <program_name-version>... I think this should work.
Cuga