Inno Setup:安装过程完成后执行命令/批处理文件

时间:2015-07-10 18:46:52

标签: windows batch-file inno-setup

朋友们,我正在编写一个可以完成很多工作的脚本 - 安装我的应用程序+其他开源软件,设置s / w作为服务,执行批处理文件来做一些事情等。

  1. 我在开始时设置了一些环境变量。它们当然不会生效,直到Inno脚本完成执行(即安装完成)。
  2. 安装服务需要环境变量。
  3. 安装,配置和启动服务的命令位于批处理文件中,我需要在安装完成后执行。我只需要执行一次这个批处理文件。
  4. 使用Inno,如何在安装完成后执行此批处理文件?它可以在用户完成安装过程后立即执行,也可以在系统重启时运行一次。它可以通过Inno脚本实现吗?

    或者有没有办法让我的环境变量生效,以便我的批处理文件可以运行?

    我知道在用户完成安装过程并重新启动系统后,有一些安装程序会执行安装。 Inno是否支持这种功能?

    我不确定CurStepChanged + ssPostInstall方法是否可以在这里工作,因为它基本上与Inno开始使用的环境相同,而且我的变量尚未生效。

    如果通过Inno脚本无法实现这一点,我会在系统启动时放置批处理文件 - 在这种情况下,我需要检查服务是否已经安装/运行并采取适当的措施。但那将是粗糙的。​​

    请提供任何指示/建议。

    感谢。

1 个答案:

答案 0 :(得分:1)

要计划在下次Windows启动/登录时运行批处理文件,请将值添加到HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce键:

[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\RunOnce"; \
    ValueType: string; ValueName: "MyProg"; ValueData: """{app}\MyBatch.bat"""

运行程序/批处理时,Windows会自动删除RunOnce键中的值。

了解Run and RunOnce Registry Keys

  

默认情况下,在运行命令行之前删除RunOnce键的值。您可以使用感叹号(!)为RunOnce值名称添加前缀,以推迟删除该值,直到命令运行为止。如果没有感叹号前缀,如果RunOnce操作失败,则下次启动计算机时不会要求关联的程序运行。

执行顺序:

  

如果在任何特定密钥下注册了多个程序,则这些程序的运行顺序是不确定的。

实际上程序并行运行。某些条目可以很容易地成为运行到Windows会话结束的应用程序。所以Windows不能等到程序完成才能启动另一个程序。

如果您需要按特定顺序运行批处理文件,只需创建一个指向主批处理文件的条目,该文件按您需要的顺序运行其他批处理文件。