朋友们,我正在编写一个可以完成很多工作的脚本 - 安装我的应用程序+其他开源软件,设置s / w作为服务,执行批处理文件来做一些事情等。
使用Inno,如何在安装完成后执行此批处理文件?它可以在用户完成安装过程后立即执行,也可以在系统重启时运行一次。它可以通过Inno脚本实现吗?
或者有没有办法让我的环境变量生效,以便我的批处理文件可以运行?
我知道在用户完成安装过程并重新启动系统后,有一些安装程序会执行安装。 Inno是否支持这种功能?
我不确定CurStepChanged
+ ssPostInstall
方法是否可以在这里工作,因为它基本上与Inno开始使用的环境相同,而且我的变量尚未生效。
如果通过Inno脚本无法实现这一点,我会在系统启动时放置批处理文件 - 在这种情况下,我需要检查服务是否已经安装/运行并采取适当的措施。但那将是粗糙的。
请提供任何指示/建议。
感谢。
答案 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不能等到程序完成才能启动另一个程序。
如果您需要按特定顺序运行批处理文件,只需创建一个指向主批处理文件的条目,该文件按您需要的顺序运行其他批处理文件。