Category: Programming
Creating Needed Installers for Windows Services

This is not the Actual “Installer”. This is code needed for the Service to operate correctly.
We will get to Installing Later…
Add the Installer Code:
Create a new class file in your project and call it ProjectInstaller.
We wil replace the text in the ProjectInstaller class with the following code:
Version:0.9 StartHTML:0000000100 EndHTML:0000012095 StartFragment:0000000100 EndFragment:0000012095
1 Imports System.ComponentModel
2 Imports System.Configuration.Install
3
4 <RunInstaller(True)> Public Class ProjectInstaller
5 Inherits System.Configuration.Install.Installer
6 ‘Installer overrides dispose to clean up the component list.
7
8 <System.Diagnostics.DebuggerNonUserCode()> _
9 Protected Overrides Sub Dispose(ByVal disposing As Boolean)
10 Try
11 If disposing AndAlso components IsNot Nothing Then
12 components.Dispose()
13 End If
14 Finally
15 MyBase.Dispose(disposing)
16 End Try
17 End Sub
18
19 ‘Required by the Component Designer
20 Private components As System.ComponentModel.IContainer
21
22 ‘NOTE: The following procedure is required by the Component Designer
23 ‘It can be modified using the Component Designer.
24 ‘Do not modify it using the code editor.
25
26 <System.Diagnostics.DebuggerStepThrough()> _
27 Private Sub InitializeComponent()
28 Me.ServiceProcessInstaller1 = New System.ServiceProcess.ServiceProcessInstaller
29 Me.ServiceInstaller1 = New System.ServiceProcess.ServiceInstaller
30 ‘
31 ‘ServiceProcessInstaller1
32 ‘
33 Me.ServiceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem
34 Me.ServiceProcessInstaller1.Password = Nothing
35 Me.ServiceProcessInstaller1.Username = Nothing
36 ‘
37 ‘ServiceInstaller1
38 ‘
39 Me.ServiceInstaller1.ServiceName = “NewService1”
40 Me.ServiceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic
41 ‘
42 ‘ProjectInstaller
43 ‘
44 Me.Installers.AddRange(New System.Configuration.Install.Installer() _
45 {Me.ServiceProcessInstaller1, Me.ServiceInstaller1})
46 End Sub
47
48 Friend WithEvents ServiceProcessInstaller1 As _
49 System.ServiceProcess.ServiceProcessInstaller
50
51 Friend WithEvents ServiceInstaller1 As _
52 System.ServiceProcess.ServiceInstaller
53
54 Public Sub New()
55 MyBase.New()
56
57 ‘This call is required by the Component Designer.
58 InitializeComponent()
59
60 ‘Add initialization code after the call to InitializeComponent
61
62 End Sub
63 End Class
This will create the ProjectInstaller class and insert 2 Objects in the designer:

ServiceInstaller1 – Settings: The Service Name, Display Name, description, StartType
ServiceProcessInstaller – Settings: The Account the service will run under
In this example, the settings are set as follows:
ServiceName: NewService1
DisplayName: {blank}
Description: {blank}
StartType: Automatic – (will auto start on reboot)
Account: LocalSystem – (do not need user/password. This will run under System account)
Now we have to build the project.
Services Part 3:> Build and Install your Service
Creating Services with VB Express
Visual Basic Express is a great, free tool from Microsoft. You don’t get all that Visual Studio 2005 offers though. One of the things VB Express does not have is templates to create a Windows Service.
We can still make Services with VB 2005 Express. All it takes is a little manual work. I will walk you thru a example on how to make a service in Visual Basic Express.
Choose Console Application, and give it the name of NewService1.
It will open in the designer with a module. Rename the module to NewService1.
Now we have to get some references for our Service. In the solution Explorer, double click on My Project and choose the References tab.
We need to Add the following references:
System.Configuration.Install
System.ServiceProcess
Now back to the NewService1 Module. We will be replacing all the text in the module, thus turning it into a class. Replace all the text with the text below:
1 Imports System.ServiceProcess
2 Imports System.Configuration.Install
3
4 Public Class NewService1
5 Inherits System.ServiceProcess.ServiceBase
6 Friend WithEvents Timer1 As System.Timers.Timer
7
8 Public Sub New()
9 MyBase.New()
10 InitializeComponents()
11 ‘ TODO: Add any further initialization code
12 End Sub
13
14 Private Sub InitializeComponents()
15 Me.ServiceName = “NewService1”
16 Me.AutoLog = True
17 Me.CanStop = True
18 Me.Timer1 = New System.Timers.Timer()
19 Me.Timer1.Interval = 6000
20 Me.Timer1.Enabled = True
21 End Sub
22
23 ‘ This method starts the service.
24 <MTAThread()> Shared Sub Main()
25 ‘ To run more than one service you have to add them to the array
26 System.ServiceProcess.ServiceBase.Run(New System.ServiceProcess.ServiceBase() _
27 {New NewService1})
28 End Sub
29
30 ‘ Clean up any resources being used.
31 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
32 MyBase.Dispose(disposing)
33 ‘ TODO: Add cleanup code here (if required)
34 End Sub
35
36 Protected Overrides Sub OnStart(ByVal args() As String)
37 ‘ TODO: Add start code here (if required)
38 ‘ to start your service.
39 Me.Timer1.Enabled = True
40 End Sub
41
42 Protected Overrides Sub OnStop()
43 ‘ TODO: Add tear-down code here (if required)
44 ‘ to stop your service.
45 Me.Timer1.Enabled = False
46 End Sub
47
48 Private Sub InitializeComponent()
49 Me.Timer1 = New System.Timers.Timer
50 CType(Me.Timer1, _ System.ComponentModel.ISupportInitialize).BeginInit()
51 ‘
52 ‘Timer1
53 ‘
54 Me.Timer1.Enabled = True
55 CType(Me.Timer1, System.ComponentModel.ISupportInitialize).EndInit()
56 End Sub
57
58 Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As _ System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
59 Dim MyLog As New EventLog() ‘ create a new event log
60 ‘ Check if the the Event Log Exists
61 If Not MyLog.SourceExists(“NewService1”) Then
62 MyLog.CreateEventSource(“NewService1”, “NewService1 Log”) ‘ Create Log
63 End If
64 MyLog.Source = “NewService1”
65 MyLog.WriteEntry(“NewService1 Log”, “It is running”, EventLogEntryType.Information)
66
67 ‘disable the timer so you dont fill up the log
68 Timer1.Enabled = False
69 End Sub
70
71 End Class
72
This will create the NewService class and insert a Timer into your designer.
If you Double-Click on the NewService1 in the SolutionExplorer, you will see the designer and the Timer1 object.
This code will run after 6 seconds has passed, and will insert a log entry for our service saying “ It is running”.
We need to set the Service Name in the Designer:
Double click on NewService1 to get the gray page. Then click somewhere in the grey to get the properties for this class.
Under ServiceName put NewService1.
Services Part 2:> Creating the needed Installers
Programmers – Use your talents to make some money online. Click Here to Read More
Building a Setup Package for your Windows Service
If you want to install your Service on other PC’s. The you want to make an Installer Package.
Build the Setup Package for Your Windows Service:
Prerequisites: You will need to have .net 3.5 on the target pc.
Choose File> Add> New Project.
At the Add New Project window, Choose:
Right click on Setup1 in Solution Explorer and choose:
At Add Project Output Group, It will select NewService as the Primary Output. Just hit OK.
Then you need to tell Setup to Install the Service. Do this by right clicking Setup1. Choose View > Custom Actions.
Then right click Custom Actions, and choose Add Custom Action. In Select Item in Project, double click Application Folder:
And choose OK. It will add one item for each custom Action:
Next, Right click Setup1 and Build. It will create the Setup Executable in your Projects bin\release folder.
Thats It!. Run the Setup on the Target computer, and reboot. It will install and run the Service on reboot.
Programmers – Use your talents to make some money online. Click Here to Read More
Building and Installing Windows Service Visual Studio 2008
You cannot just hit Run and debug your Windows Service. That would be really cool, but it is not that hard to get it running.
Build and Install service on your pc:
Choose Build in the Menubar above and choose Build NewService.
This will build your executable in the bin\release folder of your project. If you try to run the program by itself, it will not run and give you an error. Instead you have to load the service into your computer by using InstallUtil.exe.
You can run InstallUtil.exe from the VisualStudio Command Prompt.
Installing:
InstallUtil “PATH_TO_YOUR_EXE.exe”
Uninstalling:
InstallUtil “PATH_TO_YOUR_EXE.exe” /U
When you run in the command window, you will see alot of text, and at the bottom it should read:
The Commit phase completed successfully.
The transacted install has completed.
Now we have to start the service in Service Manager. – Right click on My Computer on the Desktop, and choose Manage.
Choose Services and Applications, Services, and New Service:
Right click and Choose Start.
Then Go to EventViewer, Application and you should see a log for service starting, and after 10 seconds you should see your ‘Service Running” log entry
Now you have a running Service. Don’t forget to stop it. You dont want to fill your Event log up! We set the service to Automatic in Part 2, so you may want to uninstall using InstallUtil.exe to remove from your system.
Next we will build a Setup package so you can install easily on computers that are not running Visual Studio.
Services Part 4:> Build Setup Package for your Windows Service
Programmers – Use your talents to make some money online. Click Here to Read More