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.)
views:
126answers:
9you 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).
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.
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
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.
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.
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)
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.
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 allInstaller
types with theRunInstallerAttribute
set to true. The tool then executes either the Install Method or the Uninstall Method on each instance of theInstaller
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.
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.