我需要从C#应用程序启动Node.js服务器,这就像server.js
在Node.js控制台中运行脚本一样简单.但是,我并不完全确定如何实现这一目标.
这是我到目前为止所研究的内容:
在Node.js安装中,有一个名为的文件C:\Program Files (x86)\nodejs\nodevars.bat
,这是Node.js的命令提示符窗口.要启动服务器,我可能会使用以下步骤:
执行nodevars.bat
文件.
SendKeys
到新的进程控制台窗口以启动服务器.
这种方法感觉有点脆弱.无法保证目标用户将Node.js安装在同一位置,同时向过程发送密钥可能不是理想的解决方案.
另一种方法可能是:
编写一个执行的批处理文件nodevars.bat
.
从C#应用程序执行批处理文件.
这似乎是一种更好的方法.但是,这里唯一的问题是nodevars.bat
在新的控制台窗口中打开.
那么对于问题,有没有办法可以使用node.js安装中内置的功能启动node.js服务器脚本?也许发送论据node.exe
?
如果要为多个用户(即服务器)提供服务,则可以使用os-service软件包并安装Windows服务.然后,您可以使用标准API启动和停止服务.
如果要将服务器作为"单一用途"服务器启动,即仅为当前用户服务,则os-service是错误的方法.(通常在使用此方法时,您将为要使用的服务指定唯一的端口,该端口仅供您的应用程序使用).
要从C#启动批处理文件或其他控制台应用程序而不显示控制台窗口,请使用标准方法,但请务必指定:
ProcessStartInfo psi = new ProcessStartInfo(); psi.UseShellExecute = false; // This is important psi.CreateNoWindow = true; // This is what hides the command window. psi.FileName = @"c:\Path\to\your\batchfile.cmd"; psi.Arguments = @"-any -arguments -go Here"; // Probably you will pass the port number here using(var process = Process.Start(psi)){ // Do something with process if you want. }