C# - установщик службы windows не регистрирует службу

Я пытаюсь использовать установщик для службы Windows и хотел бы избежать использования InstallUtil.исполняемый. Установщик работает правильно (исполняемый файл и DLL находятся в правильном каталоге), но служба не отображается под управлением компьютера.

вот что я сделал до сих пор:

имя класса службы по умолчанию-Service1.

в установщике проекта Имя службы установщика Службы соответствует имени класса - Службу1.

под пользовательскими действиями основной вывод службы был добавлен для установки, фиксации, отката и удаления.

Я использую http://support.microsoft.com/kb/816169 в качестве ссылки.

какие идеи?

3 ответов


имеет ли ваш проект службы класс установщика? У вас должен быть один, который выглядит примерно так:

[RunInstaller(true)]
public partial class Service1Installer : Installer
{
    public Service1Installer()
    {
        InitializeComponent();
        ServiceProcessInstaller process = new ServiceProcessInstaller();
        process.Account = ServiceAccount.LocalSystem;

        ServiceInstaller serviceAdmin = new ServiceInstaller();
        serviceAdmin.StartType = ServiceStartMode.Manual;
        serviceAdmin.ServiceName = "Service1";
        serviceAdmin.DisplayName = "Service1";
        serviceAdmin.Description = "Service1";

        Installers.Add(serviceAdmin);
    }
}

убедитесь, что в проекте службы создан класс ServiceInstaller и ServiceProcessInstaller. (Проверка этой ссылке для получения дополнительной информации).

закройте окно Управление компьютером и Службы, снова запустите программу установки и откройте окно службы.

Если это не работает, перезагрузите компьютер. Возможно, некоторые файлы заблокированы.

само собой разумеется, что вам, вероятно, нужны административные привилегии на машине для этого работать правильно.


думаю,я понял. Это может быть ошибка с кодом дизайнера, или, возможно, я пропустил шаг.

Я думаю, что в коде конструктора, в методе InitializeComponent (), он должен добавить:

this.Installers.AddRange(new System.Configuration.Install.Installer[] {this.serviceProcessInstaller1, this.serviceInstaller1});

его там не было, поэтому я добавил Это в конструктор ProjectInstaller:

Installers.Add(serviceInstaller1);
Installers.Add(serviceProcessInstaller1);

теперь при установке он указан как служба управления компьютером.