.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 );
}
}