Я пытаюсь удалить приложение с помощью C#, используя следующий вызов:Msiexec/дп переключатель предотвращает Uninstall
msiexec.exe /x {my-product-code} /qn
Без переключателя /qn
, диалог будет появляться запрос, если вы хотите удалить. Переключатель /qn
подавляет это диалоговое окно, но он также вызывает неявный «No» для результата диалога, поскольку приложение не удаляется. Если я выключу переключатель /qn
, я получу диалог, как ожидалось, и если я выберу «Да», приложение удалит.
Как я могу использовать переключатель /qn
, не вызывая его неявное «No»?
Если вы добавили регистрацию, что говорит файл журнала перед деинсталляцией? msiexec.exe/x {my-product-code}/qn/l * v uninstall.log " – jbudreau
Я подозреваю, что для удаления требуется привилегия, и ваша программа не будет повышена. Даже если он повышен, не удаляйте удаление - я бы использовал MsiConfigureProductEx(), чтобы убедиться, что вы передаете свои права на удаление. Кроме того, добавьте файл/L * v [путь в текстовый журнал] в командную строку удаления и посмотрите, что происходит. Проблема вряд ли будет подразумеваемой Нет !! – PhilDW
После регистрации я обнаружил, что проблема связана с отсутствием повышенных привилегий, как сказал PhilDW. Это происходит только при использовании переключателя/qn, поскольку административное подтверждение для удаления отсутствует. Я все еще обманываю это, но теперь добавляю StartInfo.UsernName вместе с StartInfo.UseShellExecute. Спасибо за направление, это было именно то, что мне нужно. – occamsTacKnife