Удаление Win-сервиса
От: lonli Беларусь  
Дата: 11.05.07 10:58
Оценка:
Возникла необходимость в создании, установке и удалении сервиса. Вкратце сервис будет собирать инфу из сети и класть её в локальную БД.

Подскажите, гнде можно найти достаточно простые тестовые солюшены с сервисами — интересуею в основном автоматическое удаление (ин installer) и многопоточная работа внтури сервисов. В общем, часть, касающаяся не только сервисов, но и их установки-удаления (каким-нибудь стандартным инсталлером).

Нашел статью Terry Denham, но она незакончена и в принципе уж слдишком простая...

И воoбще, как-то мало в инете инфы по Win-сервисам, все на Веб-сервисы ориентируются.
Проклятый девятнадцатый век, проклятое воспитание: не могу стоять, когда мужчины сидят. ©Ф.Раневская
Re: Удаление Win-сервиса
От: _Morpheus_  
Дата: 11.05.07 12:42
Оценка:
Здравствуйте, lonli, Вы писали:

L>Возникла необходимость в создании, установке и удалении сервиса. Вкратце сервис будет собирать инфу из сети и класть её в локальную БД.


L>Подскажите, гнде можно найти достаточно простые тестовые солюшены с сервисами — интересуею в основном автоматическое удаление (ин installer) и многопоточная работа внтури сервисов. В общем, часть, касающаяся не только сервисов, но и их установки-удаления (каким-нибудь стандартным инсталлером).


L>Нашел статью Terry Denham, но она незакончена и в принципе уж слдишком простая...


в мсдне хорошие статьи есть, с примерами
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[2]: Удаление Win-сервиса
От: lonli Беларусь  
Дата: 11.05.07 13:31
Оценка:
Здравствуйте, _Morpheus_, Вы писали:

_M_>в мсдне хорошие статьи есть, с примерами


Статей с удалением я не нашел, например. Общее направление куда посылают — создание инсталлеров в целом.
Пусть это будет маленькая сплетня, которая должна исчезнуть между нами. ©Ф.Раневская
Re[3]: Удаление Win-сервиса
От: _Morpheus_  
Дата: 11.05.07 15:54
Оценка:
Здравствуйте, lonli, Вы писали:

_M_>>в мсдне хорошие статьи есть, с примерами


L>Статей с удалением я не нашел, например. Общее направление куда посылают — создание инсталлеров в целом.


направление правильное
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re: Удаление Win-сервиса
От: algol Россия about:blank
Дата: 11.05.07 16:14
Оценка:
Здравствуйте, lonli, Вы писали:

L>Подскажите, гнде можно найти достаточно простые тестовые солюшены с сервисами — интересуею в основном автоматическое удаление (ин installer) и многопоточная работа внтури сервисов. В общем, часть, касающаяся не только сервисов, но и их установки-удаления (каким-нибудь стандартным инсталлером).


Если не ошибаюсь, визард сам при создании солюшена с Win-сервисом создает и инсталлятор для него. Если вручную, то нужно добавить класс Installer и прописать его в custom actions. Исходники класса можно найти по словам ServiceInstaller, ServiceProcessInstaller, например здесь
Автор: L_Druid
Дата: 23.06.05
.
Установка и удаление Win-сервиса
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 11.05.07 16:24
Оценка: 1 (1)
#Имя: FAQ.dotnet.service.install.remove
Здравствуйте, lonli, Вы писали:

_M_>>в мсдне хорошие статьи есть, с примерами

L>Статей с удалением я не нашел, например.

Solution Explorer — файл с классом сервиса, контекстное меню — View Designer — контекстное меню на окне дизайнера — Add Installer

Выбрать добавленный инсталлер в дизайнере, заполнить свойства.

В проект будет добавлен класс

   [RunInstaller(true)]
   public partial class ProjectInstaller : Installer


атрибут RunInstaller позволяет задейтсвовать этот класс при использовании инсталяторов, которые делает студия, я их не использую, атрибут убираю, в класс Program добавляю

      private static void InstallService()
      {
         // установить
         using (ProjectInstaller pi = new ProjectInstaller())
         {
            IDictionary savedState = new Hashtable();
            try
            {
               pi.Context = new InstallContext();
               pi.Context.Parameters.Add("assemblypath", Process.GetCurrentProcess().MainModule.FileName);
               foreach (Installer i in pi.Installers)
                  i.Context = pi.Context;
               pi.Install(savedState);
               pi.Commit(savedState);
            }
            catch (Exception ex)
            {
               Console.WriteLine(ex.Message);
               pi.Rollback(savedState);
            }
         }
      }

      private static void RemoveService()
      {
         // удалить
         using (ProjectInstaller pi = new ProjectInstaller())
         {
            try
            {
               pi.Context = new InstallContext();
               pi.Context.Parameters.Add("assemblypath", Process.GetCurrentProcess().MainModule.FileName);
               foreach (Installer i in pi.Installers)
                  i.Context = pi.Context;
               pi.Uninstall(null);
            }
            catch (Exception ex)
            {
               Console.WriteLine(ex.Message);
            }
         }
      }


и вызываю их при запуске с командной строкой -install или -remove
... << RSDN@Home 1.2.0 alpha rev. 678>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.