2016-06-26 112 views
1

我將從客戶端機器安裝我們的軟件,並且我想運行一個程序CreateServiceCMD,該程序在文件服務器上停止/啓動三項服務。因此在文件服務器上運行第四個服務,它將等待CMD文件。優點是:安裝無需管理員權限!Inno Setup在安裝之前和之後運行代碼

你要知道它是如何工作(應該工作):選擇路徑後

  • 開始建立從客戶機
  • ,程序CreateServiceCMD(stop)將在服務器上創建的CMD文件,我特別服務將停止其他三個服務
  • 服務器
  • 上安裝文件,啓動應用程序一旦與參數「UpdateAutoClose」(見下文),因此應用程序將被啓動,該數據庫將被更新,在applicati自動關閉,一切正常,並設置完成
  • 但在完成之前,我必須調用程序CreateServiceCMD(start),我的服務器上的特殊服務再次啓動其他三個服務。

我嘗試了一切,但我找不到CreateServiceCMD(start)的正確位置。 AfterInstallPostInstallwpFinishedDeInitializeSetup(),我嘗試了好幾個小時......

[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;