1

我想在安装之前运行一个应用程序,我在 Inno Setup Script(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'。但是,此应用程序应以管理员身份运行。

那么有什么问题呢?

4

2 回答 2

3

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

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

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

于 2013-06-02T05:19:41.013 回答
1

这可能对你有用......我相信这个问题是因为整个路径中的空格......应该通过双引号路径来克服......

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

干杯..

于 2013-07-06T16:14:28.350 回答