Когда я создаю новую службу Windows в Visual Studio 2010, я получаю сообщение об использовании InstallUtil и net start для запуска службы.
Я пробовал следующие шаги:
- Создать новый проект Файл -> Новый -> Проект -> Служба Windows
- Название проекта: ТестСервис
- Построить проект как есть (конструктор Service1, OnStart, OnStop)
- Откройте командную строку, запустите «C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe» TestService.exe
- Запустите net start TestService .
Вывод шага 4
Запуск транзакционной установки.
Начало фазы установки установки.
См. Содержимое файла журнала для выполнения сборки C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestService \ obj \ x86 \ Debug \ TestService.exe.
Файл находится по адресу C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ Tes tService \ TestService \ obj \ x86 \ Debug \ TestService.InstallLog.
Установка сборки "C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestS ervice \ TestService \ obj \ x86 \ Debug \ TestService.exe".
Затрагиваемые параметры:
logtoconsole =
logfile = C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ T estService \ obj \ x86 \ Debug \ TestService.InstallLog
assemblypath = C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestServ ice \ TestService \ obj \ x86 \ Debug \ TestService.exe
Общедоступные установщики с атрибутом RunInstallerAttribute.Yes не найдены в сборке C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exe.
Этап установки успешно завершен, и начинается этап фиксации.
См. Содержимое файла журнала для выполнения сборки C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestService \ obj \ x86 \ Debug \ TestService.exe.
Файл находится по адресу C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ Tes tService \ TestService \ obj \ x86 \ Debug \ TestService.InstallLog.
Фиксация сборки 'C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestS ervice \ TestService \ obj \ x86 \ Debug \ TestService.exe'.
Затрагиваемые параметры:
logtoconsole =
logfile = C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ T estService \ obj \ x86 \ Debug \ TestService.InstallLog
assemblypath = C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestServ ice \ TestService \ obj \ x86 \ Debug \ TestService.exe
Общедоступные установщики с атрибутом RunInstallerAttribute.Yes не найдены в сборке C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exe.
Удалите файл InstallState, потому что нет установщиков.
Фаза фиксации успешно завершена.
Транзакция завершена.
Вывод шага 5
Название сервиса неверно.
Дополнительную помощь можно получить, набрав NET HELPMSG 2185.
Смотря на:
Похоже, в вашем коде нет класса установщика. Это унаследованный класс,
Installer
который расскажет,installutil
как установить ваш исполняемый файл как сервис.Ps У меня есть свой собственный маленький самоустанавливающийся / отлаживаемый шаблон Службы Windows, который вы можете скопировать или использовать: Отладочная, Самостоятельная Установка Службы Windows
источник
Вот альтернативный способ сделать установщик и избавиться от этого сообщения об ошибке. Также кажется, что VS2015 Express не имеет пункта меню «Добавить установщик».
Вам просто нужно создать класс и добавить приведенный ниже код и добавить ссылку System.Configuration.Install.dll.
источник
Две типичные проблемы:
источник
Еще одна возможная проблема (с которой я столкнулся):
Будьте уверены, что
ProjectInstaller
класс естьpublic
. Если честно, я не уверен, как именно я это сделал, но я добавил обработчики событийProjectInstaller.Designer.cs
, например:this.serviceProcessInstaller1.BeforeInstall += new System.Configuration.Install.InstallEventHandler(this.serviceProcessInstaller1_BeforeInstall);
Я предполагаю, что во время автоматического процесса создания функции обработчика в
ProjectInstaller.cs
нем изменилось определение классаpublic class ProjectInstaller : System.Configuration.Install.Installer
в
partial class ProjectInstaller : System.Configuration.Install.Installer
заменив на
public
ключевое слово сpartial
. Таким образом, чтобы это исправитьpublic partial class ProjectInstaller : System.Configuration.Install.Installer
Я использую Visual Studio 2013 Community Edition.
источник
Stealth Change в VS 2010 и .NET 4.0 и более поздних версиях
Общедоступные установщики с атрибутом RunInstallerAttribute.Yes не найдены
В .NET есть изменение псевдонима или очистка компилятора, которая может выявить эту небольшую настройку для вашего конкретного случая.
Если у вас есть следующий код ...
Возможно, вам придется обновить его до
Это как псевдоним, измененный под оболочкой во время компиляции или во время выполнения, и вы получите это поведение ошибки. Вышеуказанное явное изменение в RunInstallerAttribute (true) исправило его во всех наших сценариях установки на всех машинах.
После добавления установщика проекта или службы проверьте наличие «старого» RunInstaller (true) и измените его на новый RunInstallerAttribute (true)
источник
Еще одна уловка, с которой я столкнулся: убедитесь, что ваш производный класс Установщика (как правило
ProjectInstaller
) находится на вершине иерархии пространства имен, я попытался использовать открытый класс в другом открытом классе, но это приводит к той же старой ошибке:Общедоступные установщики с атрибутом RunInstallerAttribute.Yes не найдены
источник