Возникла необходимость в создании, установке и удалении сервиса. Вкратце сервис будет собирать инфу из сети и класть её в локальную БД.
Подскажите, гнде можно найти достаточно простые тестовые солюшены с сервисами — интересуею в основном автоматическое удаление (ин installer) и многопоточная работа внтури сервисов. В общем, часть, касающаяся не только сервисов, но и их установки-удаления (каким-нибудь стандартным инсталлером).
Нашел статью
Terry Denham, но она незакончена и в принципе уж слдишком простая...
И воoбще, как-то мало в инете инфы по Win-сервисам, все на Веб-сервисы ориентируются.
Проклятый девятнадцатый век, проклятое воспитание: не могу стоять, когда мужчины сидят. ©Ф.Раневская
Здравствуйте, lonli, Вы писали:
L>Возникла необходимость в создании, установке и удалении сервиса. Вкратце сервис будет собирать инфу из сети и класть её в локальную БД.
L>Подскажите, гнде можно найти достаточно простые тестовые солюшены с сервисами — интересуею в основном автоматическое удаление (ин installer) и многопоточная работа внтури сервисов. В общем, часть, касающаяся не только сервисов, но и их установки-удаления (каким-нибудь стандартным инсталлером).
L>Нашел статью Terry Denham, но она незакончена и в принципе уж слдишком простая...
в мсдне хорошие статьи есть, с примерами
... << RSDN@Home 1.2.0 alpha rev. 676>>
Здравствуйте, _Morpheus_, Вы писали:
_M_>в мсдне хорошие статьи есть, с примерами
Статей с удалением я не нашел, например. Общее направление куда посылают — создание инсталлеров в целом.
Пусть это будет маленькая сплетня, которая должна исчезнуть между нами. ©Ф.Раневская
Здравствуйте, lonli, Вы писали:
_M_>>в мсдне хорошие статьи есть, с примерами
L>Статей с удалением я не нашел, например. Общее направление куда посылают — создание инсталлеров в целом.
направление правильное
... << RSDN@Home 1.2.0 alpha rev. 676>>
Здравствуйте, lonli, Вы писали:
L>Подскажите, гнде можно найти достаточно простые тестовые солюшены с сервисами — интересуею в основном автоматическое удаление (ин installer) и многопоточная работа внтури сервисов. В общем, часть, касающаяся не только сервисов, но и их установки-удаления (каким-нибудь стандартным инсталлером).
Если не ошибаюсь, визард сам при создании солюшена с Win-сервисом создает и инсталлятор для него. Если вручную, то нужно добавить класс Installer и прописать его в custom actions. Исходники класса можно найти по словам ServiceInstaller, ServiceProcessInstaller, например
здесьАвтор: L_Druid
Дата: 23.06.05
.
Здравствуйте, 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>>