Я написал файл msi, который предлагает выбор установки «для каждого пользователя» или «для всех» на этапе пользовательского интерфейса, и теперь обнаружил, что установщик не работает в Vista:
Итак: как я могу запретить установщику вызывать UAC, когда он действительно не нужен? В качестве альтернативы, как я могу программно запросить UAC, даже если установлен бит 3?





Попробуйте эту ссылку: UAC в примечаниях MSI: как создавать пакеты, которые работают как для стандартного пользователя, так и для отдельной машины?
Это фантастическая ссылка на серию сообщений в блоге, в которых обсуждается, как контроль доступа пользователей (UAC) связан с технологией установщика Windows (.msi). Спасибо за ссылку, @sascha!
К сожалению, установщик Windows не позволяет создать единый пакет, который может устанавливать для каждой машины и пользователя, а только запрашивает UAC для каждой машины. Проблема в том, что бит, который может подавить запрос UAC, хранится в потоке SummaryInformation и не может быть изменен во время выполнения пакета.
Спасибо за подтверждение. Есть ли для этого серьезная причина дизайна, или мы можем надеяться, что этот флаг когда-нибудь станет собственностью?
Я слышал, что MSI 5.0 что-то делает в этой области. Но для этого нам понадобится Win7. <вздох />
Я отключил UAC, установив бит 3 PID_WORDCOUNT в моем пакете MSI. Я могу установить его для «ALLUSERS» и «PER-USER», а также записать для HKLM в обоих режимах на машинах VISTA. Обязательно ли во время установки получать всплывающее окно UAC для привилегированного пользователя?
Отключение этого бита у меня не помогло. Пользователи получат ошибку «В разрешении отказано», даже если они являются членами группы администраторов. Только сам администратор смог успешно установить пакет.
Пожалуйста, поймите, я не говорю о UAC исполняемого файла - нет setup.exe. Вместо этого пользователи запускают файл MSI напрямую.