如果不关闭UAC,我的msi安装程序无法安装在Vista计算机上。由于我的应用程序将分发给我的客户端,大约20台机器,并且他们不想关闭UAC,有没有办法可以设置一些属性,这将允许我的安装程序在UAC没有任何用户交互的情况下运行,已启用,弹出显示
答案 0 :(得分:4)
我找到的最好的资源是我的头脑是Robert Flamings blog,他有一系列约25篇帖子解释了Vista,UAC和MSI如何互动。
如果您进行每台机器安装(ALLUSERS = 1),Vista将始终提示安装EXExcuteSequence,然而如果您有需要提升的安装程序在这个序列之外,那么最好的解决方案是使用一个带有清单的bootstrapper EXE,表明运行EXE时需要提升。
我们使用Indigo Rose的商业引导程序(它是一个独立的应用程序,但它仅作为MSI Factory的一部分出售),但您可以通过NSIS获得创意,使用Visual Studio one和Windows Installer SDK
中还有一个示例答案 1 :(得分:2)
UAC会弹出,因为您正在安装到用户无权访问的文件夹,例如Program Files,可能会尝试安装到用户主驱动器的目录中? Vista中的主驱动程序是c:\ Users \ Username,本地应用程序有一个目录,C:\ Users \ Username \ AppData \ Local \ Apps。
答案 2 :(得分:1)
您可以将安装广告给您的20个客户。当他们触发广告钩子(开始菜单缩短,COM接口,文件关联等)时,程序将以管理员权限安装。
以下是管理员如何宣传包裹的示例:
msiexec.exe -jm c:\\ mypackage.msi
MSDN文章: http://msdn.microsoft.com/en-us/library/aa367548(VS.85).aspx
答案 3 :(得分:0)
This可以帮助你。
编辑:回应您的澄清请求。您可以使用任务计划来计划运行不会提示的安装,然后您可以让用户/系统管理员从脚本安装该调度程序(例如,您可以安排它在用户下次登录时运行)
这是Vista避免确认对话框的唯一方法(没有禁用UAC,你不想这样做。)
我希望这能使事情变得清晰。
答案 4 :(得分:0)
Vista / UAC应提示确认继续安装,而不是完全阻止它。您的MSI名称是什么?比如,如果将其重命名为 setup.msi ,它会神奇地起作用吗?