Мне нужно извлечь исполняемый файл в папку приложения и запустить его до начала установки, чтобы я мог решить, продолжать или нет. Кажется, это самая сложная часть. Я вижу, как файл можно установить во временную папку, но у меня это не сработает. Я новичок в настройке Inno, я почти закончил, это мое последнее препятствие. Я надеюсь, что кто-то может помочь
выполнение exe из списка файлов после получения папки приложения, но до начала установки
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
Хотя это ответы, которые запрашивает ОП, я все же не считаю это необходимым, см. Мои комментарии к вопросу. +1 в любом случае.
- person Martin Prikryl; 20.05.2016