Reputation: 24899
I am trying to install a windows service.
running c:\windows\microsoft.net\Framework64\v4.0.30319\InstallUtil.exe c:\foo\MyAssembly.exe
i get a nice message that all phases (install, commit) completed successfully.
(i do not get prompted to enter service credentials)
afterwards i do not see the service in services console. nothing useful in install log.
the solution is built on a 64bit box, and i am trying to install the service on a 64bit machine. however, i do not see 64bit as an option in solution properties. i did manually edit all the csproj files to select "x64" for [platform] nodes..
i can run the service out of visual studio no problem.
installer.cs
[RunInstaller(true)]
public partial class Installer : System.Configuration.Install.Installer
{
public Installer() {
InitializeComponent();
}
}
this is the default installer provided by visual studio.
Upvotes: 22
Views: 21119
Reputation: 1422
The following SO Question has similar scenarios and answers that may also be relevant to someone coming here from a Google search link.
Install Windows Service created in Visual Studio
Upvotes: 0
Reputation: 40788
You need to add some Installer objects to the Installers collection. The example here is what you want for installing a windows service. Something like
[RunInstaller(true)]
public class Installer : System.Configuration.Install.Installer
{
private ServiceInstaller serviceInstaller;
private ServiceProcessInstaller processInstaller;
public Installer()
{
// Instantiate installers for process and services.
processInstaller = new ServiceProcessInstaller();
serviceInstaller = new ServiceInstaller();
// The services run under the system account.
processInstaller.Account = ServiceAccount.LocalSystem;
// The services are started manually.
serviceInstaller.StartType = ServiceStartMode.Manual;
// ServiceName must equal those on ServiceBase derived classes.
serviceInstaller.ServiceName = "Hello-World Service 1";
// Add installers to collection. Order is not important.
Installers.Add(serviceInstaller);
Installers.Add(processInstaller);
}
}
Upvotes: 30