我有一个用于安装应用程序的设置,成功安装后需要运行该应用程序。我用postinstall
来做到这一点。
,但显示一个复选框,用户可以取消选中它。我需要不询问就运行该应用程序,因为它是一种需要在启动时运行的服务。如果用户未选中它,则需要重新启动PC才能启动。
因此,我可以使用Filename: "{app}\myapp.exe"
部分中没有任何标志的RUN
代码来启动应用程序,但是问题是,安装完成后立即运行,而不是单击完成按钮。
第一个问题是我的应用程序有一个指令窗口。它会在启动时显示,因此设置窗口会返回到后面。第二个问题是我的应用程序不允许终止,除非卸载需要,因为它需要在后台运行。等待过程结束的安装程序。
在完成设置中单击完成按钮后,是否可以运行该应用程序?
答案 0 :(得分:0)
为简化Run Files and Programs according to custom checkboxes after clicking on Finish Button in Inno Setup中的答案,您可以使用如下代码:
[Code]
function NextButtonClick(CurPageID: Integer): Boolean;
var
ResultCode: Integer;
begin
if CurPageID = wpFinished then
begin
if ExecAsOriginalUser(
ExpandConstant('{app}\MyProg.exe'), '', '', SW_SHOW, ewNoWait, ResultCode) then
begin
Log('Executed MyProg');
end
else
begin
MsgBox('Error executing MyProg - ' + SysErrorMessage(ResultCode), mbError, MB_OK);
end;
end;
Result := True;
end;
如果要使用提升的权限/管理员权限运行程序(如果安装程序完全使用它们),请用ExecAsOriginalUser
替换Exec
。
答案 1 :(得分:0)
将code
部分添加到脚本中,如下所示:
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
begin
if CurStep = ssDone then
Exec(ExpandConstant('{app}\MyProg.exe'), '', '', SW_SHOW, ewNoWait, ResultCode);
end;
只有在成功安装后才会触发。
如果您不希望exe以管理员身份运行,请使用ExecAsOriginalUser
代替Exec
。