2013-06-01 409 views
1

我想運行在安裝之前的應用程序,我使用的是Inno Setup的腳本(帕斯卡)此代碼之前運行的exe:Inno Setup的腳本安裝

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「時,安裝程​​序不會打開我的程序並繼續安裝。

注意:噴油器有app.manifest有'requireAdministrator'。但是這個應用程序應該以管理員身份運行

那麼,怎麼了?

+0

我將我的應用程序複製/粘貼到桌面,當我使用這個:'C:\ Users \ Oceanjack \ Desktop \ Injector.exe'時,它不起作用。 –

回答

3

在代碼中使用諸如{src}等值時,您需要使用ExpandConstant函數。

但是,InitializeSetup運行安裝任務還爲時尚早。您應該將此代碼移至CurStepChanged(ssInstall)

另外,如果需要管理員權限,則必須使用Exec而不是ExecAsOriginalUser運行。

1

這可能爲你工作。我相信這個問題是因爲在整個path..that空間應該用雙引號路徑克服...

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

歡呼聲..

相關問題