Я могу успешно удалить стороннее приложение через командную строку и с помощью специального установщика Inno Setup.
Командная строка Выполнение:
MSIEXEC.exe /x {14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn
Команда Inno Setup:
[Run]
Filename: msiexec.exe; Flags: runhidden waituntilterminated;
Parameters: "/x {{14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn";
StatusMsg: "Uninstalling Service...";
Я также могу программно удалить приложение при выполнении следующего кода C # в режиме отладки.
C # Код:
string fileName = "MSIEXEC.exe";
string arguments = "/x {14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn";
ProcessStartInfo psi = new ProcessStartInfo(fileName, arguments)
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true
};
Process process = Process.Start(psi);
string errorMsg = process.StandardOutput.ReadToEnd();
process.WaitForExit();
Однако тот же код C # выдает следующую ошибку при запуске в качестве скомпилированной развернутой службы Windows:
"This action is only valid for products that are currently installed."
Дополнительные комментарии:
- Служба Windows, которая выпускает
команда удаления запущена на
та же машина, что и код
протестировано в режиме отладки. Окна
Служба запущена / вошла как
Учетная запись локальной системы.
- Я сверился с журналами приложений
и я подтвердил, что
аргументы выполненной команды
одинаковые как в режиме отладки, так и в режиме выпуска.
- Я проконсультировался с Event Viewer
но он не предлагает никаких подсказок.
Мысли? Любая помощь будет принята с благодарностью. Спасибо.