我已经编写了一个msi文件,在UI阶段提供了"每用户"或"全部"安装选项,现在发现安装程序在Vista上失败了:
如果我只是重用适用于XP的安装程序,即使是"每用户"安装,Vista也会触发UAC提示,这使得安装毫无意义
如果我在PID_WORDCOUNT的第3位关闭UAC,Vista将不再调用UAC,因此即使用户有权安装到机器注册表中(例如),也不会发生权限提升,因此安装失败.
那么:如何在不需要时阻止安装程序调用UAC?或者,即使设置了第3位,如何以编程方式请求UAC?
遗憾的是,Windows Installer不提供创建单个程序包的方法,该程序包可以按机器和每个用户进行安装,但仅在每个机器的情况下提示UAC.问题是可以抑制UAC提示的位存储在SummaryInformation流中,并且在程序包执行时不可修改.