如何使用NSIS脚本将应用程序安装为Windows服务?
我在脚本Exec '"sc.exe"
中使用了这个命令但是在安装后我找不到与它相关的Windows服务中的任何服务,所以请帮助我。
答案 0 :(得分:5)
也许NSIS Simple Service plugin可以帮到你。语法就像
一样简单SimpleSC::InstallService "MyService" "My Service Display Name" "16" "2" "C:\MyPath\MyService.exe" "" "" ""
Pop $0 ; returns an errorcode (<>0) otherwise success (0)
这里的示例将服务安装为ServiceType自己的进程+ StartType自动+ NoDependencies + Logon作为系统帐户。 有关幻数的含义,请参阅随附的帮助。
wiki显示5 other methods来处理NSIS服务。
答案 1 :(得分:1)
有 multiple plugins,如 NSIS 网站上所述
对我来说似乎没有必要复杂,所以我最终直接使用了 sc
工具。命令很简单:
!define appName "theApp.exe"
!define displayName "My Awesome Service"
!define serviceName "MyAwesomeService"
ExecWait 'sc create ${serviceName} error= "severe" displayname= "${displayName}" type= "own" start= "auto" binpath= "$INSTDIR\${appName}"'
可用的 sc create
参数的完整列表 here
答案 2 :(得分:-1)
下面是一些脚本,这些脚本首先停止服务,卸载以前的版本,删除表单注册表,然后安装新副本。
“移动界面”部分
SimpleSC :: StopService“ MobileInterface”“ 1”“ 60” SimpleSC :: RemoveService“ MobileInterface” DeleteRegKey / ifempty HKLM“ MobileInterface” RMDIR / r“ $ INSTDIR \ MobileInterface \”
SetOutPath“ $ INSTDIR \ MobileInterface” #定义安装内容并将其放置在输出路径中 文件“ D:\ NCS.Sentinel \ NCS.Sentinel.MobileWebSvc \ bin \ Release \”
SimpleSC :: InstallService“ MobileInterface”“ MobileInterface”“ 16”“ 2”“ $ INSTDIR \ MobileInterface \ NCS.Sentinel.MobileWebSvc.exe”“”“”“” 弹出$ 0;返回错误代码(<> 0),否则返回成功(0) SimpleSC :: StartService“ MobileInterface”“”“ 100”
WriteUninstaller“ $ INSTDIR \ Uninstall.exe”
;商店安装文件夹 ; WriteRegStr HKCU“软件\移动接口”“” $ INSTDIR
SectionEnd