繁体   English   中英

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

[英]Inno Setup : execute command/batch file after install process is complete

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

  1. 我一开始设置了一些环境变量。 当然,它们在Inno脚本完成执行(即安装完成)之前不会生效。
  2. 安装服务需要环境变量。
  3. 安装,配置和启动服务的命令位于批处理文件中,安装完成后需要执行该命令。 我只需要执行一次此批处理文件。

安装完成后,如何使用Inno执行此批处理文件? 它可以在用户完成安装过程后立即执行,也可以在系统重新启动时运行一次。 通过Inno脚本可以实现吗?

还是有一种方法可以使我的环境变量生效,以便我的批处理文件可以运行?

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

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

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

请帮助任何指针/建议。

谢谢。

要计划在下一个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和RunOnce注册表项的信息

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

执行顺序:

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

实际上,程序是并行运行的。 某些条目可以很容易地成为可以运行到Windows会话结束的应用程序。 因此,Windows无法等待程序完成之后再启动另一个程序。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM