Здравствуйте, 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>> |