2016-06-26 1 views
1

Я установлю наше программное обеспечение с клиентской машины, и я хочу запустить процедуру CreateServiceCMD, которая останавливает/запускает три службы на файловом сервере. Поэтому на файловом сервере выполняется четвертая служба, которая будет ждать CMD-файла. Преимущество: для установки не требуются привилегии администратора!Inno Setup Код запуска до и после установки

Вы должны знать, как это работает (должно работать): настройка

  • стартовой клиентской машина
  • после выбора пути, процедура CreateServiceCMD(stop) создаст файл CMD на сервере, и мой специальная служба остановит три другие услуги
  • установка файлов на сервере
  • запуск приложения один раз с параметром «UpdateAutoClose» (см. ниже), поэтому приложение будет запущено, база данных будет обновлена, приложение автоматически закрывается, и все в порядке, и настройка завершена.
  • , но перед завершением я должен вызвать процедуру CreateServiceCMD(start), что моя специальная служба на сервере снова запустит остальные три службы.

Я пробовал все, но я не могу найти правильную позицию для CreateServiceCMD(start). AfterInstall, PostInstall, wpFinished, DeInitializeSetup() и я попробовал это в течение нескольких часов ...

[Run] 

Filename: "{code:GetInstallDir|Program}\{#AppStartName}"; Parameters: "-UpdateAutoClose"; \ 
    Flags: postinstall skipifsilent; \ 
    Description: "{cm:LaunchProgram, {#AppName} {#AppVerTxt} Datenbank Update}" 

Проблема заключается в том, я должен ждать, пока приложение закрыто снова, а затем запустить мою процедуру, но я не могу найти нужное место. Все, что я пробовал, слишком рано.

Надеюсь, кто-то может помочь ...?

ответ

0

Я считаю, что вы ищете CurStepChanged:

procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if CurStep = ssInstall then 
    begin 
    { installation is starting } 
    CreateServiceCMD(stop); 
    end 
    else 
    if CurStep = ssPostInstall then 
    begin 
    { installation has finished } 
    CreateServiceCMD(start); 
    end; 
end;