NSIS: удаление папки при удалении - PullRequest
2 голосов
/ 16 февраля 2011

Я хочу удалить папку Startmenu\XXX и меню Program Files\XXX при удалении приложения.

Попробовал RMDir /r, но у меня это не работает.(Windows 7)

Ответы [ 3 ]

5 голосов
/ 16 февраля 2011

RMDir - правильная инструкция, ваш путь, вероятно, неправильный.

Распространенная проблема с удалением стартового меню - забывание использовать RequestExecutionLevel, см. эту страницу в вики NSIS

Process Monitor может помочь вам обнаружить проблемы с путями и привилегиями ...

3 голосов
/ 29 января 2013

Иногда Windows не позволяет удалить папку, когда она все еще используется. Решение состоит в том, чтобы пометить папку (и / или файлы) для удаления при следующей перезагрузке системы. Для этого используйте флаг / REBOOTOK

Для файлов:

Delete /REBOOTOK "<filename>"

Для папок

RMDir /R /REBOOTOK directoryname

После следующей перезагрузки файлы / папки будут удалены.

Смотри также: http://nsis.sourceforge.net/Reference/RMDir

3 голосов
/ 04 января 2012

Вот ваше решение: добавьте «SetShellVarContext all»

http://nsis.sourceforge.net/Shortcuts_removal_fails_on_Windows_Vista

Пример кода:

OutFile Win7.exe
Name Win7

Section
  SetShellVarContext all
  CreateDirectory "$SMPROGRAMS\Win7 Testing"
  CreateShortcut  "$SMPROGRAMS\Win7 Testing\win7test.lnk" "$WINDIR\notepad.exe"
  WriteUninstaller "$EXEDIR\uninst.exe"
SectionEnd

Section uninstall
  SetShellVarContext all
  Delete "$SMPROGRAMS\Win7 Testing\win7test.lnk"
  RMDir "$SMPROGRAMS\Win7 Testing"
SectionEnd

-joedf

...