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