В командной строке работает:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe "C:\WindowsService1.exe"
Но я хочу произвести установку через свое приложение:
System.Diagnostics.Process prc = new System.Diagnostics.Process();
prc.StartInfo.FileName = @"С:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe ""C:\WindowsService1.exe""";
prc.Start();
Выдает ошибку не удается найти указанный файл, хотя путь верный (в локальной переменной он аналогичен CMD). В чем дело?
Как насчет воспользоваться ManagedInstallerClass.InstallHelper()
?
Пример:
public bool InstallService(string servicePath)
{
try
{
ManagedInstallerClass.InstallHelper(new[] { servicePath });
return true;
}
catch (Exception ex)
{
return false;
}
}
Учтите, что ManagedInstallerClass.InstallHelper()
может быть долгим процессом, поэтому я бы советовал предварительно обернуть его в таску и сделать этот метод ассинхронным.
Можно попробовать немного изменить вызов метода Start. Сейчас вы передаёте запускаемое приложение вместе с аргументами. Попробуйте использовать другую перегрузку метода Start.
https://msdn.microsoft.com/en-us/library/h6ak8zt5(v=vs.110).aspx
Т.е. в вашем примере это будет что-то вроде этого:
Process.Start("С:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe", "C:\WindowsService1.exe");
Или же так:
ProcessStartInfo startInfo = new ProcessStartInfo("С:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe");
startInfo.Arguments = "C:\WindowsService1.exe";
Process.Start(startInfo);
Ещё, как вариант, можно воспользоваться библиотекой Topshelf http://topshelf-project.com/, которая сильно упрощает работу с Windows Service.
После компиляции проект установка сервиса будет выглядеть как:
MyService.exe install
Как вариант.Есть такой набор инструментов называется WIX
,для создания установщиков.http://www.schiffhauer.com/wix-template-for-installing-a-windows-service/ стоит взглянуть,преимущества его использования заключаются в следующем.В нём можно указывать,зависимости для службы,возможность переустанавливать,обновлять или удалять её,через установку и удаления программ.Вместо использования InstallUtil
или sc
инструментов.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь создать уникальный индекс который формируется на основании данных из нескольких столбцов БДНо возникают синтаксические ошибки...
Какие Smtp и порты можно использовать для отправки сообщений между разными странами? Имеет ли значение выбор учетной записи если нужно отправить...
Допустим в цикле создаются записи, и нужно сразу в этом же цикле назначать новым записям рукрики
Есть задача вернуть из бд несколько значений по одному IDКак превратить переменные из БД в JSON формат? или как лучше сделать? Пример кода