我需要安装我的win服务。使用installUtil只需几行代码。
@ECHO OFF
REM The following directory is for .NET 2.0
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v2.0.50727
set PATH=%PATH%;%DOTNETFX2%
echo Installing MyService...
echo ---------------------------------------------------
InstallUtil /i MyService.exe
echo ---------------------------------------------------
echo Done.
pause
但我的想法是没有创建.bat文件然后运行它。 有没有办法我可以“。执行”上面那些代码行而不创建运行它然后删除它的.bat文件?。
我需要每次动态创建此代码,因为我需要输入用户名/密码,具体取决于用户在.net表单上输入的内容。
答案 0 :(得分:2)
您可以通过它的参数启动cmd并在一行中执行:
Process.Start("cmd.exe", "/k set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v2.0.50727 & set PATH=%PATH%;%DOTNETFX2% & InstallUtil /i MyService.exe")
如果你想让它显示你写的文字并“暂停”(保持开放):
Process.Start("cmd.exe", "/k set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v2.0.50727 & set PATH=%PATH%;%DOTNETFX2% & echo Installing MyService... & echo --------------------------------------------------- & InstallUtil /i MyService.exe & echo --------------------------------------------------- & echo Done. & pause")
命令由“&”分隔。
答案 1 :(得分:1)
我知道自从你第一次问这个问题已经过了一个月,但我最近提出了一个非常好的解决方案 - 只使用这个简单的VB.NET代码:
Public Sub InstallService(ByVal ServicePath As String)
Dim InstallUtilPath As String = IO.Path.Combine(System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(), "installutil.exe")
Dim InstallUtilProcess As Process = Process.Start(InstallUtilPath, """" & ServicePath & """")
InstallUtilProcess.WaitForExit()
'Service is now installed.
InstallUtilProcess = Process.Start(InstallUtilPath, "/i """ & ServicePath & """")
InstallUtilProcess.WaitForExit()
'The second action is now done. Show a MessageBox or something if you'd like.
End Sub
ServicePath
参数是您要安装的服务的路径。 InstallUtilPath
变量将设置为installutil.exe应用程序的路径。它将获取您正在运行的当前框架的路径。
当我运行.NET Framework 4时,路径为C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe
希望这有帮助!