Inno Setup - Файл используется, запретить пропуск / отмена - PullRequest
1 голос
/ 04 февраля 2020

Я настроил «Inno Setup» по мере необходимости, но есть один момент, который я не могу изменить.

У нас есть приложение, которое установлено в сетевой папке на клиентском сервере. В основном обновление файлов работает как положено.

Если какой-то клиент в сети, кто-то, кто не инициировал обновление, открыл приложение, которое я получаю, появляется сообщение / ошибка "удалить файл не удалось .... файл используется другим процессом »- включая 3 кнопки« повторить попытку »,« пропустить эти файлы (не рекомендуется) »,« отменить установку ». Я приложил пример изображения (находится на inte rnet, но то же сообщение).

File in use

Там вы можете увидеть 3 кнопки. Я хочу отключить «пропустить этот файл» и «отменить установку». Пользователь должен иметь возможность нажать «повторить попытку» - он должен застрять, пока все клиенты не закроют свое приложение.

1 Ответ

0 голосов
/ 04 февраля 2020

Я не думаю, что вы можете изменить это окно сообщения.

Существует две альтернативы:

  • Вы можете удалить целевой файл, используя свой собственный код перед установкой новая версия, не позволяющая продолжить, пока файл не исчезнет.

    [Files]
    Source: "Source: "C:\SampleApplicationData\*"; DestDir: "{app}\SampleApp"; \
        Flags: recursesubdirs createallsubdirs; BeforeInstall: ForcedDelete
    
    [Code]
    
    procedure ForcedDelete;
    var
      FileName: string;
      Deleted: Boolean;
    begin
      FileName := ExpandConstant(CurrentFileName);
      repeat
        if not FileExists(FileName) then
        begin
          Log(Format('File %s does not exist', [FileName]));
          Deleted := True;
        end
          else
        if DeleteFile(FileName) then
        begin
          Log(Format('File %s was deleted', [FileName]));
          Deleted := True;
        end
          else
        begin
          MsgBox(Format('Error deleting %s.', [FileName]), mbError, MB_OK);
          Deleted := False;
        end;
      until Deleted;
    end;
    

    Хотя я все еще верю, что код должен по крайней мере разрешить прерывание.

  • Или использовать restartreplace флаг .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...