2016-01-04 216 views
1

我需要安裝我的win服務。使用installUtil,它只是幾行代碼。執行.bat文件vb.net

@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窗體中輸入的內容輸入用戶名/密碼。

回答

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

希望這有助於!

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") 

命令由「&」分隔。