Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для K.A.V.

Ленивый кусок мяса


Contributor


Сообщения: 1986
Благодарности: 723

Профиль | Сайт | Отправить PM | Цитировать


Цитата Kopejkin:
Только "не аккуратненько как-то получается" »
Это да, но никто пользователя и не заставляет вводить кучу путей для установки с заведомо пустыми папками, чтобы сама программа была в каких-то дебрях

В голову пришла такая идея, можно реализовать опять же циклом такую штуку: проверяем, является ли каталог пустым, начиная с $INSTDIR, если пустой - удаляем и "поднимаемся вверх" по дереву папок, делая аналогичную проверку, если папка снова пустая - снова удаляем и ползём ещё выше
разомни пальчики комбинациями ctrl+c и ctrl+v
Код: Выделить весь код
!include "FileFunc.nsh" 
!include "Logiclib.nsh"
Код: Выделить весь код
StrCpy $0 "$INSTDIR"
${While} $0 != "" ; если $0 = пустое значение, значит каталог либо с файлами, либо не существует
   ${DirState} "$0" $1 ; получаем статус директории (пустая/с файлами)
         ${If} $1 == "1" ; если с файлами, то обнуляем $0 и тем самым выходим из цикла
         ${OrIf} $1 == "-1"" ; или если папка не существует, то обнуляем $0 и тем самым выходим из цикла
         DetailPrint "папка '$0' с файлами или не существует => прекращаем проверку" 
         StrCpy $0 "" ; обнуляем переменную с путём, чтобы завершить цикл
         ${ElseIf} $1 == 0 ; если папка пустая
         RMDir "$0" ; удаляем пустую папку 
         DetailPrint "папка '$0' пустая => удаляем" 
         ${GetParent} "$0" $0 ; получаем родителя папки, которую удалили, записываем значение в эту же переменную
         DetailPrint "следующая папка  => '$0'" 
         ${EndIf}           
${EndWhile}
Конечно же, прописывать нужно самым последним действием в секции деинсталлятора, чтобы при начале цикла папка $INSTDIR была пустой, а то цикл сразу завершится...

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:40, 03-06-2015 | #1654