У меня есть одна программа с именем MyCustomUpdater.exe, которая загружает zip-файл службы Windows и извлекает его.Как установить службу Windows из C# (настольное приложение)
папка Extract имеет MyWindowsServices.exe файл
Я хочу, чтобы установить эти MyWindowsServices.exe из MyCustomUpdater.exe
Я использую сильфон код упоминания для него
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.Verb = "runas";
process.Start();
if (process != null)
{
process.StandardInput.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Windows) + "\\Microsoft.NET\\Framework\\v4.0.30319\\installutil.exe /u \"" + "E:\Testing\MV.AutoUpdateWindowsService.exe" + "\"");
process.StandardInput.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Windows) + "\\Microsoft.NET\\Framework\\v4.0.30319\\installutil.exe \"" + "E:\Testing\MV.AutoUpdateWindowsService.exe" + "\"");
process.StandardInput.Close();
}
process.Close();
Но это не будет устанавливать windows service
Этот код просто открывает одно пустое окно командной строки; без дальнейшего исполнения.
Я также пытаюсь запустить команду установки окна службы в
process.StartInfo.Arguments
Я использую точечную Net Framework 4.5 с визуальной студии 2013
добавить app.manifest файлы для моего MyCustomUpdater.exe после включения app.manifest я установил его. правой кнопкой мыши на программе> Недвижимость> Application> Ресурс> манифеста [Нажмите на ниспадающего] и выберите app.manifest после этого я случайно код
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Windows) + @"\Microsoft.NET\Framework\v4.0.30319\installutil.exe", _FilePath);
Это работает отлично Но для процесса удаления
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Windows) + @"\Microsoft.NET\Framework\v4.0.30319\installutil.exe", "/u " + _FilePath);
или
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Windows) + @"\Microsoft.NET\Framework\v4.0.30319\installutil.exe" + " /u ", _FilePath);
Не работает
Беллоу код app.manifest файла
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<PermissionSet Unrestricted="true" ID="Custom" SameSite="site" />
<defaultAssemblyRequest permissionSetReference="Custom" />
</applicationRequestMinimum>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
</application>
</compatibility>
</asmv1:assembly>
Помоги мне.
Благодаря
Hi. Есть ли причина, по которой вы хотите передать exe в 'cmd.exe', используя стандартный ввод, а не непосредственно выполнить installutil.exe (т. Е. В' StartInfo.FileName')? – Rob
Я добавил 'process.OutputDataReceived + = (s, e) => _ILog.Fatal (@" OutputDataReceived: "+ e.Data);' также, но не может получить выход –
Как это не удается? Есть ли какие-либо подсказки в файле 'InstallUtil.InstallLog'? – Rob