выполнение exe из списка файлов после получения папки приложения, но до начала установки

Мне нужно извлечь исполняемый файл в папку приложения и запустить его до начала установки, чтобы я мог решить, продолжать или нет. Кажется, это самая сложная часть. Я вижу, как файл можно установить во временную папку, но у меня это не сработает. Я новичок в настройке Inno, я почти закончил, это мое последнее препятствие. Я надеюсь, что кто-то может помочь


person FredBuster    schedule 18.05.2016    source источник
comment
Я вижу, как можно установить файл во временную папку, но у меня это не сработает. - Почему? Вы должны объяснить нам свои ограничения, иначе не сможете предложить решение.   -  person Martin Prikryl    schedule 18.05.2016
comment
Хорошо я понял. Это приложение Delphi, использующее таблицы Foxpro. Чтобы убедиться, что таблицы не открыты в сети, прежде чем я начну установку обновления. Я запускаю небольшое консольное приложение, которое должно запускаться в папке установки. Это приложение пытается открыть одну из таблиц в монопольном режиме. Если эта таблица уже открыта, открытие завершается ошибкой, и приложение создает небольшой текстовый файл, чтобы отметить ошибку. Затем Inno может проверить наличие этого текстового файла, чтобы отменить установку и предложить пользователю закрыть приложение на других рабочих станциях. Может кто-нибудь, пожалуйста, помогите. Ваше здоровье   -  person FredBuster    schedule 19.05.2016
comment
Почему приложение должно быть в папке установки? Ищет ли файлы (таблицы) в той же папке, где находится программа? Это не распространено. Чаще всего программа ищет файлы в своей рабочей папке. Разве это не так?   -  person Martin Prikryl    schedule 19.05.2016
comment
Так оно и есть. Я не могу это изменить. Однако это не отвечает на мои вопросы, я все еще борюсь с этим. Как я могу это сделать с указанными параметрами?   -  person FredBuster    schedule 23.05.2016
comment
То есть вы уверены, что программа ищет файлы в своем бинарном пути, а не в рабочем каталоге? Вы действительно пробовали это? Если вы это сделали, используйте ответ @kh25.   -  person Martin Prikryl    schedule 23.05.2016
comment
FredBuster, мое решение сработало для вас? Если это так, отметьте это как принятый ответ, пожалуйста, для будущей ссылки.   -  person kh25    schedule 24.05.2016


Ответы (1)


Попробуйте PrepareToInstall() или InitializeSetup():

function PrepareToInstall(var NeedsRestart: Boolean): String;
var
  ResultCode: Integer;
begin

  ExtractTemporaryFile('Install.exe');

  if FileCopy(ExpandConstant('{tmp}\Install.exe'), ExpandConstant('{app}\Install.exe'), False) then
  begin
     if not Exec(ExpandConstant('{app}\Install.exe'), '', '', SW_SHOW,  ewWaitUntilTerminated, ResultCode) then 
        Result := 'Installation failed. ' + SysErrorMessage(ResultCode);
  end;
end;
person kh25    schedule 20.05.2016
comment
Хотя это ответы, которые запрашивает ОП, я все же не считаю это необходимым, см. Мои комментарии к вопросу. +1 в любом случае. - person Martin Prikryl; 20.05.2016