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

Трябва да извлека 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
Въпреки че това отговаря на изискванията на OP, все още не смятам, че е необходимо, вижте коментарите ми към въпроса. +1 все пак. - person Martin Prikryl; 20.05.2016