Служба C# .Net не будет установлена ​​на Win 7 64 бит

.Net 3.5

Я встроил в сервис exe возможность установить его с помощью функции -i. У меня есть пользовательский класс установщика, и я использую общую технику, найденную здесь. Этот класс установщика в основном имеет собственный сервис и установщик обслуживаемых процессов.

Этот код хорошо работал в течение очень долгого времени. Наконец-то столкнулся с 64-битной машиной Win 7, где она отказывается устанавливать.

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

Возникла исключительная ситуация на этапе установки. System.ComponentModel.Win32Exception: указанный сервис уже существует

Я только что закончил с полной переустановкой ОС, первым делом я попытался установить как службу, и это та же ошибка. Почему он думает, что журнал событий уже существует?

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

Я даже добавил код, чтобы проверить, нашел ли он EventLog, используя System.Diagnostics.EventLog.SourceExists который сообщает, что нашел его, и поэтому я добавил вызов System.Diagnostics.EventLog.DeleteEventSource но это не помогает

Я даже пытался удалить установщик EventLog из ServiceInstaller, но тогда это начинает терпеть неудачу по другим причинам.

Есть идеи?

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

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);
        Installers.Add(process );
    }
}

3 ответа

Удалить свой сервис

  installutil /u yourproject.exe

перезагрузите вашу машину

http://msdn.microsoft.com/en-us/library/sd8zc8ha(v=vs.80).aspx

дайте мне знать, если у вас все еще есть проблема

В конце концов, моей проблемой был наш внутренний установщик. Я закомментировал это, и теперь просто устанавливаю службу из командной строки, и теперь она устанавливается на 64-битной ОС. До сих пор не знаю, почему это будет работать раньше на 32 бит.

Используйте installutil, как упоминает @MicahArmantrout, если исполняемый файл все еще находится на диске.

В противном случае откройте командную строку от имени администратора и выполните: sc delete "my service name"

Другие вопросы по тегам