40
votes

When I try to install a Windows service:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil

I get, what looks to be, some success messages and some failure messages. Part way down:

An exception occurred during the Install phase.
System.ComponentModel.Win32Exception: The specified service has been marked for deletion

At the end:

The Rollback phase completed successfully.

The transacted install has completed.
The installation failed, and the rollback has been performed.

The service is given an entry in the Services applet, but it is marked as "Disabled". When I attempt to change it to another state, I get a "marked for deletion" error message.

There are no messages in the Event Log. There is nothing useful in the log file created by installutil.exe (I believe it's written to the current working directory).

I have no direction to go with this. What do I do?

6

6 Answers

91
votes

It turns out that the install might, or probably will, fail if that service is highlighted in the Services applet. It's safest to just close the Services applet, install the service, and then re-open the Services applet. It's really stupid.

Also, make sure to run the console as admin.

11
votes

I experienced the same and the issue for me was that a service with the same name was already installed. So in order to install the new service I had to uninstall the older services. I am learning how to create and setup windows services and thus the naming conflicting. Tried uninstalling the service first through:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil -u servicename.exe

Once this statement executes successfully, install your service and it should succeed without any rollbacks.

3
votes

Right Click on Command Prompt and choose RUN AS ADMINISTRATOR
Then copy and paste in: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe C:\TestService\bin\Debug\TestService.exe

Result in TestService.InstallLog is:

Installing service TestService...
Service TestService has been successfully installed.
1
votes

Some times this happens due to permission issues. Run the "Developer Command Prompt for VS 2012" as Administrator. Then it will work.

0
votes

Adding few more check's and points to solve this above issue.

  1. Build service in release mode and take release folder files and kept in different path
  2. Copy that path and go to visual studio command prompt window and run this bellow sample command to install the service.
  3. Please close services.msc window if its opened , then run C:Program Files (x86)\Microsoft Visual Studio 11.0>InstallUtil.exe C:\RunLocationServices\TestService.exe
  4. Go services.msc and select that service and click on start ,if it changed to "started" then your service running fine.

Still if issue exists then Another Checkpoint & SOLUTION When a service starts, the service communicates to the Service Control Manager how long the service must have to start (the time-out period for the service). If the Service Control Manager does not receive a "service started" notice from the service within this time-out period, the Service Control Manager terminates the process that hosts the service. This time-out period is typically less than 30 seconds. If you do not adjust this time-out period, the Service Control Manager ends the process. To adjust this time-out period, follow these steps: 1.Go to Start > Run > and type regedit 2.Navigate to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control With the control folder selected, right click in the pane on the right and select new DWORD Value 3.Name the new DWORD: ServicesPipeTimeout 4.Right-click ServicesPipeTimeout, and then click Modify Click Decimal, type '180000', and then click OK 5.Restart the computer

Still if issue exists then problem in your service code ,infinate loop may occur due to your methods/classes of service calling. Do code review of each line.

0
votes

This problem is due to security, you'd better open developer command prompt for VS 2012:

RUN AS ADMINISTRATOR

and install your service. It will surely fix your problem.

I tried and the issue was resolved.