Запустите приложение после нажатия на кнопку Готово (не после установки) - PullRequest
2 голосов
/ 31 мая 2019

У меня есть установка для установки моего приложения, и мне нужно запустить приложение после успешной установки. Я использовал postinstall, чтобы сделать это.

но он показывает флажок, и пользователь может снять его. Мне нужно запустить приложение, не спрашивая, потому что это своего рода служба, которая должна работать при запуске. если пользователь снял флажок, он должен перезагрузить компьютер для запуска.

Таким образом, я могу использовать код Filename: "{app}\myapp.exe" без каких-либо флагов в разделе RUN для запуска приложения, но проблема в том, что оно запускается сразу после установки, а не после нажатия кнопки «Готово».

Первая проблема - у моего приложения есть окно с инструкциями. он появляется при запуске, поэтому окно настройки переходит в конец. И вторая проблема заключается в том, что мое приложение не позволяет завершить работу, если не удалить из-за необходимости запуска в фоновом режиме. Настройка ожидает завершения процесса.

Есть ли способ запустить приложение после нажатия кнопки "Готово" в inno setup?

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Упрощение ответа из Запуск файлов и программ в соответствии с пользовательскими флажками после нажатия кнопки «Готово» в 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, если вы хотите запустить программу с повышенными привилегиями / привилегиями администратора (если программа установки использует их вообще).

0 голосов
/ 31 мая 2019

Добавьте code секцию к вашему сценарию, как это:

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  ResultCode: Integer;
begin
  if CurStep = ssDone then
    Exec(ExpandConstant('{app}\MyProg.exe'), '', '', SW_SHOW, ewNoWait, ResultCode);
end;

Она будет запущена только при успешной установке.

Используйте ExecAsOriginalUser вместо Exec, если выне хочу, чтобы exe запускался от имени администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...