2013-06-01 4 views
1

Я хочу запустить приложение перед установкой, и я использую этот код на загрузочном Inno Script (Pascal):Inno Setup Script - Запуск EXE перед установкой

function InitializeSetup():boolean; 
var 
    ResultCode: integer; 
begin 

// Launch Notepad and wait for it to terminate 
if ExecAsOriginalUser('{src}\MyFolder\Injector.exe', '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then 
begin 
// handle success if necessary; ResultCode contains the exit code 
end 
else begin 
    // handle failure if necessary; ResultCode contains the error code 
end; 

// Proceed Setup 
    Result := True; 

end; 

Когда я использую «{выиграть} \ notepad.exe ", он работает, но когда я использую" {src} \ MyFolder \ Injector.exe ", программа установки не открывает мою программу и продолжает установку.

Примечание: Инжектор имеет приложение, которое имеет «requireAdministrator». Однако это приложение должно запускаться как администратор.

Итак, что случилось?

+0

Я копирую/вставляю свое приложение на рабочий стол, и когда я его использую: «C: \ Users \ Oceanjack \ Desktop \ Injector.exe», он не работает. –

ответ

3

Необходимо использовать функцию ExpandConstant при использовании таких значений, как {src}.

Однако InitializeSetup также слишком рано запускать задачи установки. Вы должны переместить этот код в CurStepChanged(ssInstall).

Кроме того, если для этого требуются разрешения администратора, он должен быть запущен с Exec, а не ExecAsOriginalUser.

1

Это может работать для вас ... Я считаю, что эта проблема из-за пробела в целом path..that должны преодолеть с двойной ссылкой на пути ...

Exec('cmd.exe','/c "'+ExpandConstant('{src}\MyFolder\Injector.exe')+'"', '',SW_SHOW,ewWaitUntilTerminated, ResultCode); 

веселит ..

Смежные вопросы