Inno Setup在安装之前和之后运行代码

时间:2016-06-26 13:56:11

标签: service inno-setup

我将从客户端计算机安装我们的软件,并且我想运行一个程序CreateServiceCMD,它在文件服务器上停止/启动三个服务。因此,在文件服务器上运行第四个服务,它将等待CMD文件。优点是:安装无需管理员权限!

你必须知道它是如何工作的(应该有效):

  • 从客户端计算机开始设置
  • 选择路径后,程序CreateServiceCMD(stop)将在服务器上创建CMD文件,我的特殊服务将停止其他三个服务
  • 在服务器上安装文件
  • 使用参数“UpdateAutoClose”启动应用程序一次(见下文),因此应用程序将启动,数据库将更新,应用程序将自动关闭,一切正常,设置已完成
  • 但在完成之前我必须调用程序CreateServiceCMD(start),我的服务器上的特殊服务会再次启动其他三项服务。

我尝试了所有内容,但找不到CreateServiceCMD(start)的正确位置。 AfterInstallPostInstallwpFinishedDeInitializeSetup()我试了好几个小时......

[Run]

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

问题是,我必须等到应用程序再次关闭,然后运行我的程序,但我找不到合适的位置。我尝试的一切都太早了。

希望有人能帮忙......?

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找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;