Служба C # .Net не устанавливается на 64-разрядную версию Win 7 - PullRequest
1 голос
/ 24 февраля 2012

.Net 3.5

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

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

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

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

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

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

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

Iдаже пытался удалить установщик 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 ]

1 голос
/ 24 февраля 2012

удалить ваш сервис

  installutil /u yourproject.exe

перезагрузите компьютер

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

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

0 голосов
/ 25 августа 2012

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

0 голосов
/ 24 февраля 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...