После некоторых исследований я обнаружил, что для запуска автоматической деинсталляции необходимо добавить «3» в конец командной строки UninstallString.Я проверил это, и оно работает:
Обычное удаление
RunDll32 advpack.dll,LaunchINFSection C:\PROGRA~1\PROGRAM\file.inf, DefaultUninstall
Тихое удаление
RunDll32 advpack.dll,LaunchINFSection C:\PROGRA~1\PROGRAM\file.inf, DefaultUninstall,3
Что касается первого вопроса - поскольку механизм удаления является эквивалентом нажатия«Удалить» в «Установка и удаление программ», я считаю, что он не может быть чище / лучше, чем это.