在NSIS中使用引号中的binpath创建服务

在NSIS中使用引号中的binpath创建服务,nsis,Nsis,直到今天,我还在使用.nsi文件中的以下代码创建服务: nsExec::Exec 'SC CREATE "MyService" binpath= "$APPDATA\My App Folder\service\SService.exe" start="auto"' nsExec::Exec 'sc description "MyService" "Starts The Service"' 它工作

直到今天,我还在使用.nsi文件中的以下代码创建服务:

nsExec::Exec 'SC CREATE "MyService" binpath= "$APPDATA\My App Folder\service\SService.exe" start="auto"'
nsExec::Exec 'sc description "MyService" "Starts The Service"'
它工作得很好,但到今天为止,创建的服务无法启动,出现以下错误:
错误193 0xc1
,或者换句话说,服务路径不正确。我打开注册表编辑器
Computer\HKEY\u LOCAL\u MACHINE\SYSTEM\CurrentControlSet\Services\MyService
,将
C:\ProgramData\My App Folder\service\SService.exe
更改为
“C:\ProgramData\My App Folder\service\SService.exe”
(添加了引号),然后它又开始工作了

问题是,如何创建一个周围有
的binpath?我试过了

 nsExec::Exec 'SC CREATE "MyService" binpath= "$\"$APPDATA\My App Folder\service\SService.exe$\"" 

但服务从未被创建。在NSIS中,使用
创建binpath的正确语法是什么?如果您有任何想法,为什么windows突然决定不接受没有
的路径,也请分享这些知识。

这与NSIS无关,您只是没有为sc.exe使用正确的语法。sc.exe可能使用,这意味着您必须使用
\“

nsExec::Exec '"$sysdir\sc.exe" CREATE "MyService" binpath= "\"$APPDATA\My App Folder\service\SService.exe\"" start= auto'
Pop $0 ; Exit code