Inno安装脚本 - 在安装之前运行exe

时间:2013-06-01 07:00:23

标签: inno-setup pascalscript

我想在安装之前运行一个应用程序,我在Inno安装脚本(Pascal)上使用此代码:

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;

当我使用“{win} \ notepad.exe”时,它可以工作但是当我使用“{src} \ MyFolder \ Injector.exe”时,安装程​​序无法打开我的程序并继续安装。

注意:Injector的app.manifest有'requireAdministrator'。但是,此应用程序应以管理员身份运行。

那有什么不对?

2 个答案:

答案 0 :(得分:3)

在代码中使用ExpandConstant等值时,您需要使用{src}函数。

但是,InitializeSetup运行安装任务还为时过早。您应该将此代码移至CurStepChanged(ssInstall)

此外,如果它需要管理员权限,则必须使用Exec,而不是ExecAsOriginalUser运行。

答案 1 :(得分:1)

这可能对你有用......我相信这个问题是因为整个路径中的空间......应该通过双重引用路径来解决...

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

欢呼声..