Я хотел бы знать, есть ли более простой способ установить или удалить службы Windows в средах разработки или тестирования без создания пакетов установки? Иногда у меня возникают проблемы с удалением пакетов Visual Studio (даже после остановки службы и закрытия консоли управления службами перед удалением, вынуждающим меня перезагрузить компьютер). эту проблему можно решить с помощью таких инструментов, как InstallShield или WIX, для создания установочных пакетов, но во время разработки будет проще, если я смогу установить службу (вместе со всеми зависимыми файлами) в среде разработки или тестирования без создания установочного пакета.
установка/удаление служб Windows во время разработки
Ответы (4)
Используйте installutil, который является частью .net-фреймворк. Теперь вам все еще нужно скопировать каталог bin на нужную машину и зарегистрировать любые COM-объекты, если вы их используете.
Если вы правильно помните (на данный момент нет доступа к моей машине разработки). Остановите службу - и замените экзешники и dll) перезапустите службу. Вы можете заскриптовать это. Вам нужно будет выполнить первоначальную установку или использовать installutil.exe
Я обнаружил, что это намного проще, чем постоянно устанавливать и удалять.
Я считаю, что команду SC.EXE легко использовать во время разработки. Вставьте его в файл NAnt/BuildBuild/Perl/BAT и мгновенная легкая автоматизация.
Я знаю, что это старый вопрос, но я считаю, что эта информация очень актуальна для всех, кто борется с этой проблемой:
Проблема связана с изменением установщика, включенного в Visual Studio. Я думаю, что изменение произошло между VS2005 и VS2008. Несмотря на это, после изменения, чтобы программа установки обновлений работала правильно без удаления предыдущего продукта, было рекомендовано устанавливать службы с помощью настраиваемых действий на этапах установки, фиксации и отката, но не на этапе удаления. Я полагаю, это связано с тем, что изменение вызвало действие «Удалить» после установки новой версии, удаляя вашу службу при обновлении. Условие «НЕ ПРЕДЫДУЩИЕ ВЕРСИИ УСТАНОВЛЕНЫ» помещается в 3 настраиваемых действия, а проверка наличия предыдущих версий должна быть ИСТИНА. Это приводит к тому же результату, что и копирование файлов поверх старых (но также сохраняет любые другие действия по установке, такие как регистрация объектов и т. д.).
Все это прекрасно работает для обновлений; новая версия установится поверх существующей версии, сервис останется зарегистрированным, все хорошо. Однако, если вы удалите, ваша служба останется зарегистрированной, и новая установка попытается зарегистрировать ее снова, что приведет к ошибке 1001. Я использую SC.EXE для удаления службы вручную при удалении, чтобы избежать этого. Вы можете выполнить чистую деинсталляцию, но это нарушит установку обновлений, на ваш выбор.