2016-06-26 75 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;