Я пытаюсь создать программу обновления, используя msiexec для удаления программы, а затем установить более новую версию.
Вот мой код:
command = "/x{[uninstall string here]}";
command += "/qn+ /Le c:\\test\\msilog.txt";
ProcessStartInfo psi = new ProcessStartInfo("msiexec");
psi.Arguments = command;
//psi.UseShellExecute = true;
//psi.Verb = "runas";
Process.Start(psi);
У меня есть
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
установлено в моем манифесте, и это установлено в качестве манифеста приложения.
Когда я запускаю это, я получаю всплывающее окно с надписью «AppSetup fail» и файл журнала говорит
Ошибка 1730. Вы должны быть администратором, чтобы удалить это приложение. Чтобы удалить это приложение, вы можете войти в систему как администратор или обратиться за помощью в вашу группу технической поддержки.
ЕСЛИ я, однако, запускаю cmd от имени администратора и печатаю
msiexec /x{[uninstall string here]} /qn+ /Le c:\\test\\msilog.txt
Работает отлично и денди.
Что мне здесь не хватает?
(Я также попытался раскомментировать эти две строки выше, так как это был один из способов, с помощью которого я обнаружил, что он запускается от имени администратора, но затем он выдает диалоговое окно UAC перед попыткой выполнения, даже если / qn установлен.)