如何使用NSIS脚本将应用程序安装为Windows服务

时间:2013-07-22 11:51:49

标签: windows-services nsis

如何使用NSIS脚本将应用程序安装为Windows服务?

我在脚本Exec '"sc.exe"中使用了这个命令但是在安装后我找不到与它相关的Windows服务中的任何服务,所以请帮助我。

3 个答案:

答案 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”

WriteRegStr HKLM“ D:\ NCS.Sentinel \ NCS.Sentinel.MobileWebSvc \ bin \ Release \ NCS.Sentinel.MobileWebSvc.exe”

WriteUninstaller“ $ INSTDIR \ Uninstall.exe”

;商店安装文件夹   ; WriteRegStr HKCU“软件\移动接口”“” $ INSTDIR

SectionEnd