在Windows XP上安装Windows服务

时间:2014-08-12 20:28:34

标签: vb.net windows windows-services windows-xp-sp3

我正在尝试安装我在Windows XP上的Visual Studio 2012中创建的Windows服务。我怎样才能做到这一点?

我尝试过本教程,但实施它的运气很少。 http://www.ehow.com/how_6046576_install-service-windows-xp.html

我的代码有什么问题吗?

Public Class MyFirstService
  Dim WithEvents timer1 As New System.Timers.Timer

  Protected Overrides Sub OnStart(ByVal args() As String)
    timer1.Interval = 10000
    timer1.Start()
    WriteLog(Me.ServiceName & " has started ...")
  End Sub

  Protected Overrides Sub OnStop()
    WriteLog(Me.ServiceName & " has stopped ...")
  End Sub

  Private Sub timer1_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles timer1.Elapsed
    WriteLog(Me.ServiceName & " is running ...")
  End Sub

  Private Sub WriteLog(ByVal strMessage As String)
    Dim strPath As String, file As System.IO.StreamWriter
    strPath = AppDomain.CurrentDomain.BaseDirectory & "\MyService.log"
    file = New System.IO.StreamWriter(strPath, True)
    file.WriteLine("Test")
    file.Close()
  End Sub

End Class

当我点击我的.exe时,我收到此错误消息MyFirstService.exe不是有效的Win32应用程序。这是我第一次尝试使用窗口服务应用程序。

1 个答案:

答案 0 :(得分:0)

我最近开发了几种Windows服务,并且希望能够轻松地调试它们,而无需在每次构建服务时都在命令提示符中输入大量内容。

为此,我首先将以下内容添加到我的" Build Events"在我的服务项目的项目属性中:

生成后:

call "$(DevEnvDir)..\Tools\vsvars32.bat"
installutil "$(TargetPath)"
net start "$(SolutionName)"

使用上述内容成功构建后,请确保将以下内容添加到预构建中:

net stop "$(SolutionName)"
call "$(DevEnvDir)..\Tools\vsvars32.bat"
installutil /u "$(TargetPath)"

这将使您的项目在构建时自动停止,卸载,重新安装和启动。另外,请确保运行构建后事件On successful build

注意:这确实假设您的服务名称与您的解决方案名称相同。如果它们不同,您需要将$(SolutionName)更改为您的服务名称。