В командной строке работает:
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
инструментов.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пытаюсь создать уникальный индекс который формируется на основании данных из нескольких столбцов БДНо возникают синтаксические ошибки...
Какие Smtp и порты можно использовать для отправки сообщений между разными странами? Имеет ли значение выбор учетной записи если нужно отправить...
Допустим в цикле создаются записи, и нужно сразу в этом же цикле назначать новым записям рукрики
Есть задача вернуть из бд несколько значений по одному IDКак превратить переменные из БД в JSON формат? или как лучше сделать? Пример кода