inno-setup - 使用 SC 在 Inno Setup 中设置服务属性
问题描述
我在使用 SC 和 Inno Setup 创建服务时尝试设置多个属性到目前为止,我无法让它 100% 工作,我已经让服务名称、显示名称、依赖项和描述正常工作。这只是我需要预设的恢复设置。(见图)
我尝试了多种编写方式,我尝试了在同一行中使用单引号、双引号和斜引号的失败和描述部分,它们都不起作用我在新行上尝试过,如下所示,这也不起作用。不确定它们是否必须按特定顺序排列?
我环顾四周,没有发现任何关于设置恢复设置的例子是: Inno Setup:使用“sc create”安装 Windows 服务 当然我也看过这里:https ://docs.microsoft.com/en-us/previous -versions/windows/it-pro/windows-server-2012-r2-and-2012/cc742069(v%3Dws.11)但我不知道如何将其转换为 inno 脚本。
我知道这不是执行此操作的“正确方法”,最好使用 pascal 代码或使用这些服务脚本http://www.sandon.it/node/9但我只是想以自己的好奇心理解这种方式/education 加上我还没有找到任何好的 Pascal 代码示例。
我确实通过将服务脚本包含在代码部分中,然后使用注册表设置来处理一些 pascal 代码,以便设置它不支持的属性,但是我特别想知道如何仅使用 SC.exe 来做同样的事情以供我自己的教育。
[Run]
Filename: {sys}\sc.exe; Parameters: "create SERVICENAME start= auto DisplayName= ""SERVICEDISPLAYNAME"" binPath=""{app}\SERVICEEXE.exe"" depend= mpssvc"; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "failure ""SERVICENAME"" reset= 100 actions= restart/1000/restart/1000"; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "description SERVICENAME ""SERVICE DESCRIPTION"""; Flags: runhidden
[UninstallRun]
Filename: {sys}\sc.exe; Parameters: "stop SERVICENAME" ; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "delete SRVICENAME" ; Flags: runhidden
解决方案
这个问题有点老了,但我想出了从脚本中设置 SC FAILURE 的解决方案,这可能对其他人有用。
报告的问题(未设置恢复操作)是由命令末尾设置的标志 ( runhidden
) 引起的。如果设置waituntilidle
或waituntilterminated
. 但最简单的解决方案是删除标志,因为waituntilterminated
它是默认标志。
Filename: "{sys}\sc.exe"; Parameters: "failure ""MyService"" reset= 86400 actions= restart/60000/restart/60000/restart/60000"
另一个有趣的事情是,reset
期望以分钟为单位接收时间,但 GUI 显示天数,因此如果值小于 84600,则始终显示 0 天。
GUI 中的“重新启动服务”以分钟为单位,但在命令中以毫秒为单位,因此如果大于 60000,则仅显示 0 以外的内容。
最后一件事是设置少于 3 次失败的方式,动作应该是空的,但需要一些时间来定义。
actions= restart/15000/restart/30000//1000
最后一点在这篇文章中进行了解释:
如何使用“sc”来安装服务并为恢复下的“后续失败”指定 NO ACTION
推荐阅读
- javascript - FormData 图像在使用 Fetch 的发布请求中未定义
- tmux - “tmux load-buffer”可以指定一个会话吗?
- datatable - Primefaces嵌套DataTable与InputText不更新Bean
- java - 使用 Canvas.drawPath 方法绘制大量路径时,UI 冻结
- html - 单个 img 元素保持强制纵横比而无需包装填充黑客
- r - 我是否误解了如何使用 abline 功能?
- angular - 使 MSal for angular 2+ 在登录后不重定向
- python - Pandas 数据框比较值 == none / nothing / null
- java - Android Studio:运行主方法时生成错误
- r - eta squared - R 中的 kruskal wallis - 不同的结果