Проблемы при удалении папки во время удаления с помощью Inno Setup - PullRequest
2 голосов
/ 18 января 2011

Я начинаю с того, что я новичок в использовании Inno setup, и мне жаль, если это глупый вопрос. Я пытаюсь удалить папку со всеми ее подпапками и файлами во время удаления приложения. Определенная папка создается в «Мои документы», когда приложение запускается в первый раз. Для его удаления я использую функцию «Delltree»:

    procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var Ceva: integer;
begin
  case CurUninstallStep of
    usUninstall:
      begin
        MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall is about to start.', mbInformation, MB_OK)
         end;
    usPostUninstall:
      begin
            Ceva := MsgBox('CurUninstallStepChanged:' #13#13 'Do you want to delete the folder ?.', mbConfirmation, MB_YESNO)
        if Ceva = idYES  then
        DelTree('{userdocs}\myfolder', True, True, True);           
      end;
  end;

По какой-то причине константа "{userdocs}" не работает. Если я поставлю точный путь к папке "DelTree ('C: \ Users \ myuser \ Documents \ myfolder', True, True, True);" все работает нормально.

1 Ответ

2 голосов
/ 18 января 2011

Когда вы используете константу в коде, вам нужно использовать функцию ExpandConstant. Таким образом, ваша команда Deltree должна быть:

DelTree ( 'ExpandConstant ({UserDocs}) \ моя_папка', True, True, True);

В качестве альтернативы, вы смотрели раздел [UninstallDelete]? Он может удалить каталог и файлы во время удаления без необходимости кода.

...