Какой лучший способ создать установщик службы .NET Windows? - PullRequest
4 голосов
/ 11 февраля 2010

Я только что создал простой сервис .NET Windows. Мои пользователи должны загрузить его с моего сайта и установить на своих компьютерах. Итак, из различных сообщений форума (включая этот сайт) я знаю, что для этого мне нужен установщик. Или я могу просто дать им служебные файлы и указать, как их установить. Я начал с создания проекта установки и смог скомпилировать свой собственный установщик .msi. Но один пользователь пожаловался, что не может удалить его сейчас. Я исследовал его и обнаружил, что у формата .msi есть некоторые проблемы, в основном связанные с тем, как он считает ссылки в GAC. Было очень легко помочь ему починить компьютер. Из моих разговоров с пользователями я знаю, что было бы почти невозможно научить их использовать sc.exe или installutil.exe. Я также нашел службу в http://installer.codeeffects.com, которая может создать установщик для моей службы без какого-либо кода, но я не уверен, должен ли мой установщик быть MSI или EXE. Итак, очевидно, что я в полном замешательстве здесь :) Пожалуйста, помогите, ребята, любые общие или подробные советы будут высоко оценены.

Ответы [ 5 ]

6 голосов
/ 11 февраля 2010

Ваш сервис должен принять аргумент для регистрации в качестве сервиса:

MyService.exe /i

В вашем сервисе вы проверяете этот аргумент и, если он присутствует, получаете сервис для регистрации самого себя:

ManagedInstallerClass.InstallHelper(args);

См. мой ответ на этот вопрос для более подробной информации. Таким образом, вы можете заставить пользователя самостоятельно зарегистрировать службу через командную строку.

Если это все еще слишком сложно для ваших пользователей, вы можете использовать Environment.UserInteractive, чтобы проверить, дважды ли пользователь щелкнул сервис. Если это так, установите / удалите службу. Если это не так, запустите службу (это будет маршрут, выбранный при запуске службы через апплет служб и при запуске компьютера).

2 голосов
/ 11 февраля 2010

Почему вы не используете встроенный установщик VS? Я использую это годами.

Проблема (и причина, по которой вы можете подумать, что она не работает) заключается в том, что для службы Windows необходимо добавить некоторые настраиваемые действия, чтобы служба могла зарегистрироваться.

Посмотрите на это и на Чтобы добавить настраиваемое действие в раздел проекта установки :

http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

0 голосов
/ 04 апреля 2012

Я думаю, вы можете отделить службу от своего приложения. Пусть служба вызовет исполняемый файл с действующей логикой приложения, и вы сможете поддерживать свой исполняемый файл, переустанавливая его несколько раз, даже не удаляя / переустанавливая часть службы приложения.

Это от человека, которому надоело иметь дело с установщиком Microsoft. Вы можете получить гораздо лучший ответ от опытного гуру установщика. Я не уверен, что я жду этого. У меня похожая проблема, и это, вероятно, мой подход связанный вопрос .

0 голосов
/ 11 февраля 2010

Вот действительно классное пошаговое руководство по созданию установщика службы с помощью Visual Studio 2005. (практически идентично в Visual Studio 2008).

http://aspalliance.com/1316_Working_with_Windows_Service_Using_Visual_Studio_2005.all

Это мне очень помогло: D

0 голосов
/ 11 февраля 2010

Мое предложение будет MSI для установки файлов в требуемом месте, включая командные файлы, которые выполняют installutil.exe. Затем выполните шаги после установки, которые выполняют командные файлы.

И для удаления, тот же подход - командные файлы выполняются как шаг перед удалением, а затем удаление продолжается. Я должен был сделать что-то подобное раньше. И я знаю, что это боль.

...