В командной строке работает:
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 инструментов.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости