执行.bat文件vb.net

时间:2016-01-04 12:35:16

标签: vb.net batch-file

我需要安装我的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表单上输入的内容。

2 个答案:

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

希望这有帮助!