简体   繁体   中英

Unable to install windows service with the help of InstallUtil tool

I use VS 2012 and since the setup projects have been removed from it I have to use InstallUtil.exe.

I don't have projectInstaller class in my windows service app. I run in command prompt:

installutil FilesMonitoringService.exe 

I get:

C:\\Program Files\\Microsoft Visual Studio 8\\VC#>installutil "C:\\Program Files\\Mic rosoft Visual Studio 8\\VC#\\CSharpProjects\\MyService\\MyService\\bin\\Release\\MyServ ice.exe" Microsoft (R) .NET Framework Installation utility Version 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved.

Running a transacted installation.

Beginning the Install phase of the installation. See the contents of the log file for the C:\\Program Files\\Microsoft Visual Studi o 8\\VC#\\CSharpProjects\\MyService\\MyService\\bin\\Release\\MyService.exe assembly's progress. The file is located at C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProj ects\\MyService\\MyService\\bin\\Release\\MyService.InstallLog. Installing assembly 'C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProjec ts\\MyService\\MyService\\bin\\Release\\MyService.exe'. Affected parameters are: logtoconsole = assemblypath = C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProjects\\ MyService\\MyService\\bin\\Release\\MyService.exe logfile = C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProjects\\MySer vice\\MyService\\bin\\Release\\MyService.InstallLog No public installers with the RunInstallerAttribute.Yes attribute could be found in the C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProjects\\MyService\\ MyService\\bin\\Release\\MyService.exe assembly.

The Install phase completed successfully, and the Commit phase is beginning. See the contents of the log file for the C:\\Program Files\\Microsoft Visual Studi o 8\\VC#\\CSharpProjects\\MyService\\MyService\\bin\\Release\\MyService.exe assembly's progress. The file is located at C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProj ects\\MyService\\MyService\\bin\\Release\\MyService.InstallLog. Committing assembly 'C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProjec ts\\MyService\\MyService\\bin\\Release\\MyService.exe'. Affected parameters are: logtoconsole = assemblypath = C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProjects\\ MyService\\MyService\\bin\\Release\\MyService.exe logfile = C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProjects\\MySer vice\\MyService\\bin\\Release\\MyService.InstallLog No public installers with the RunInstallerAttribute.Yes attribute could be found in the C:\\Program Files\\Microsoft Visual Studio 8\\VC#\\CSharpProjects\\MyService\\ MyService\\bin\\Release\\MyService.exe assembly. Remove InstallState file because there are no installers.

The Commit phase completed successfully.

The transacted install has completed.

C:\\Program Files\\Microsoft Visual Studio 8\\VC#>

OK , seems like everything have been installed. But! When I go to task manager to the Services page I can't find my service.

What could be the reason?

Thanks in advance!

Edits: I pointed out that I don't have projectInstaller class because if I add it (in designer -> add installer) and run installutil command I get: (approximate translation)

Installation of FilesMonitoringService... Creation of EventLog FilesMonitoringService in a log jornal Application...

On this setup stage the exception occured.

System.Security.SecurityException: The source is not found, but failed to find by any or all log jornals. Not available jornals: Security.

The recoil stage starts.

// lots of text

The recoil stage has succeded

Setup group operation executed. Setup failed and recoil was executed.

So, if I add projectInstller to my windows service it definitely fails to install with installUtil.
Here is the generated code:

[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
    public ProjectInstaller()
    {
        InitializeComponent();
    }
    private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
    {}
    private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e)
    {}
}

Mabby I need to put some code into afterInstall methods? I also set this properies in a properties window:

serviceInstaller1: ServiceName -> FileMonitoringService, StartType -> Automatic
serviceProcessInstaller1: Account -> LocalSystem

Or can it be implemented without projectInstaller?

Ok, there are couple of things:

1) You need projectInstaller.
2) YourProject -> properties; Startup project -> YourProject.Program
3) build
4) “Run as Administrator” the command prompt!

Everything works now.

complete tutorial link

I don't have a copy of VS2012 to test it now, but I believe that your problem has something to do with the

I don't have projectInstaller class in my windows service app

part.

From msdn :

Installation components register an individual service on the system to which it is being installed and let the Services Control Manager know that the service exists

这似乎微不足道,但在编写installutill参数时要仔细检查,因为您可能会将服务的exe文件与编译引用项目(没有服务安装程序)生成的另一个exe文件混淆,并使其失败。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM