Служба 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"