Лучшие ресурсы, которые я нашел, чтобы разобраться с UAC, - это Блог Роберта Фламингса , у него есть серия из примерно 25 публикаций, в которых объясняется, как Vista, UAC и MSI взаимодействуют.
Vista всегда будет запрашивать, как только доберется до InstallExecuteSequence, если вы выполняете установку для каждой машины (ALLUSERS = 1), однако , если у вас есть установщик, требующий повышения прав снаружи в этой последовательности лучшим решением будет использование загрузочного EXE-файла с манифестом, указывающим, что при запуске EXE требуется повышение прав.
Мы используем коммерческий загрузчик от Indigo Rose (это отдельное приложение, но оно продается только как часть MSI Factory ), но вы можете проявить творческий подход с NSIS , используйте Visual Studio one , а также есть пример в SDK установщика Windows