views:

126

answers:

9

The only way to install windows-service I know is using "Visual Studio 2008 Command Prompt", Is there a way to install windows-service on a machine which isn't having Visual Studio installed (assume that .Net version 2.X is installed.)

+3  A: 

you can do it with installUtil which resides in the .net framework folder (on my machine it's C:\Windows\Microsoft.NET\Framework\v2.0.50727).

klausbyskov
+1  A: 

Relevant MSDN page: http://msdn.microsoft.com/en-us/library/sd8zc8ha%28VS.80%29.aspx

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\installutil.exe yourproject.exe

You don't need to have Visual Studio installed for this to work.

Tiberiu Ana
+1  A: 

I guess that you're looking for the "installutil.exe" program, which one uses to install .NET Windows Services. You can find it in %windir%\Microsoft.NET\Framework\v2.0.50727

Daniel Chambers
+2  A: 

Open a command prompt (cmd) and type

help sc

and

sc create

In additon the installutil.exe you're probably talking about is really just in the .Net Framework directory. The command prompt of VS just sets up a nice path, but you can launch it from (my path) C:\Windows\Microsoft.NET\Framework\v2.0.50727 just fine.

Benjamin Podszun
+1  A: 

You don't need the Visual Studio 2008 Command Prompt. You need the InstallUtil.exe program which can be found in

C:\Windows\Microsoft.NET\Framework\v2.0.50727

On x64 machines there's also a 64-bit version in

C:\Windows\Microsoft.NET\Framework64\v2.0.50727

These directories are obviously only available when .NET is installed.

Mark Seemann
A: 

All that's doing is putting the .Net framework tools onto the PATH; you can go still use: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe by specifying the full path on a normal command prompt (obviously adjust for your framework / CPU architecture)

Rowland Shaw
A: 

With visual studio command prompt:

installutil /i fullfilepathtoservice.exe

Without visual studio command prompt:

C:\WINNT\Microsoft.NET\Framework\v1.1.4322 installutil /i fullfilepathtoservice.exe

HTH.

Sunny
+1  A: 

Yep, installutil.exe works nicely, but I got tired of having to remember to start the Visual Studio 2008 Command Prompt in order to use it. Invariably, I'd open an ordinary console only to realize that the installutil.exe location was not part of the path.

Fortunately, the installutil.exe is a wrapper around a set of reflection calls. From MSDN,

Installutil.exe uses reflection to inspect the specified assembly and find all Installer types with the RunInstallerAttribute set to true. The tool then executes either the Install Method or the Uninstall Method on each instance of the Installer type.

What this means is that it is possible to add code to the Windows service to have it install and uninstall itself. By doing so, I no longer require installutil.exe or the Visual Studio 2008 Command Prompt to run it.

I have provided a step-by-step guide for how to do this here. The -install option installs the Windows service and starts it. Conversely, the -uninstall option stops the service and uninstalls it.

Matt Davis
A: 

You can install Windows Services as an MSI. Create the MSI as a normal Project attached to your Service Project.

In your Service Project Create an Installer Class and add the components serviceInstaller and serviceProcessInstaller and configure as required. Add the Project Output from the Service Project to the MSI Project, Set the Custom Actions of the MSI Project for Install, Commit, Rollback and Uninstall to the Output of the Service Project.

Alter the MSI Project in any other way as desired, build the MSI, then you will be able to install your Service to any Windows machine without VS.NET or by using the InstallUtil utility application. The MSI will also handle the Uninstall etc.

There are properties of the serviceProcessInstaller component which you can set for the Account to run the Service under, the serviceInstaller contains properties which can be set such as the Service Name. You will have to set the ServiceName and its Parent, MSDN will provide good information on how to use both of these components.

Hope this helps.

Cheers.

Ivan Dormain