我有一个JRuby程序,我想成为一个Windows服务。我已经看到了使用Ruby创建服务的一些事情,但我们不想在客户机上安装ruby。它似乎在JRuby中不受支持。
我创建了一个虚拟程序来试试这个:
path = "C:/tmp/my-svc.log"
if File.exists?(path)
File.open(path,"a"){|f| f.write(" called again\n")}
else
File.open(path,"w"){|f| f.write(" called first time\n")}
end
while true do
sleep 5
puts 'I am a service'
end
我这样做了:
Z:\ play&gt; sc.exe创建“larz service 2.1”binpath =“C:\ jruby-1.6.7.2 \ bin \ jruby -SZ:\ play \ my-win-svc.rb”start = auto < / p>
[SC] CreateService SUCCESS
尝试启动它我遇到了这个错误:
Z:\ play&gt; sc start“larz service 2.1”
[SC] StartService FAILED,错误193。
Z:\ play&gt; sc查询“larz service 2.1”
SERVICE_NAME: larz service 2.1`
TYPE : 10 WIN32_OWN_PROCESS`
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
我已经在网上看到了很多关于创建Windows服务的不同方法的帖子,使用initsrv.exe,powershell,运行CMD,编辑注册表等等,但我不确定究竟发生了什么,或者我是不是需要调用一些API。看起来好像其他方法没有添加任何特定的启动参数。另外,我在测试服务的开头添加了代码来写入/ tmp中的文件,并且文件没有被写入,因此当我尝试启动程序时,它实际上从未被执行过。
谢谢..
好的,所以我走得更远,但仍然神秘莫测
Z:\ play&gt; sc config“larz service 2.2”obj = EEE \ lgud password =“Ssssssss @”
[SC] ChangeServiceConfig SUCCESS
Z:\ play&gt; sc start“larz service 2.2”
[SC] StartService FAILED 1069:
由于登录失败,服务未启动。
似乎我为user / pw输入了正确的格式,因为有时它在config命令上出错了。
答案 0 :(得分:0)
如果您确信密码正确,则您指定的用户可能没有正确的权限作为服务运行。尝试在Windows服务应用程序(services.msc)Log On tab上输入帐户信息,以便在该用户出现问题时通知您。
但除此之外,我不知道如果没有安装Ruby,你将如何实现这一目标。您的服务的可执行路径设置为.rb文件 - 如果不是Ruby,您希望Windows启动哪个应用程序来运行该文件?