Безопасно ли делать «RmDir / r $ INSTDIR» в NSIS? - PullRequest
10 голосов
/ 16 июля 2010

Я заметил это предупреждение в документации по методу NSIS RmDir:

Предупреждение: использование RMDir / r $ INSTDIR в деинсталляторе небезопасно.Хотя это маловероятно, пользователь может выбрать установку в папку Program Files, поэтому эта команда уничтожит всю папку Program Files, включая другие программы, не имеющие отношения к деинсталлятору.

Это пугает меня, так как до сих пор я не рассматривал эту возможность, и у меня была именно эта строка в моем сценарии.Но когда я проверил, произойдет ли это, установив мою программу в уже существующее место, содержащее уже существующие файлы, а затем запустив мой деинсталлятор с RmDir /r /REBOOTOK $INSTDIR, существующие файлы остались без изменений.

Это устаревшее предупреждение?Я использую NSIS v. 2.46.

Спасибо

Ответы [ 2 ]

7 голосов
/ 16 июля 2010

RmDir / r удалит все дерево каталогов, если это возможно, поэтому оно «небезопасно».См. http://nsis.sourceforge.net/Uninstall_only_installed_files, чтобы узнать, как удалить только те файлы, которые вы устанавливаете

1 голос
/ 05 января 2012

RMDir для каталога без / r (рекурсивного) флага удалит каталог, если он пуст.В какой-то момент они добавили эту функцию, но не уверены, когда.

Справочник по сценариям NSIS - RMDir

...