我有一个问题,我猜这个问题很难解决......但是呃。
我正在使用VS2010部署.NET应用程序。我有一个C#Windows Forms项目和一个部署项目。我需要安装程序以管理员权限运行,因为已为所有用户安装了应用程序,并且已进入注册表的条目。
启动setup.exe时,系统不会提示我提升权限。安装程序将启动并建议安装到Program Files(x86),这很好。单击下一步后,安装程序将运行并完成成功消息。这基本上是谎言,因为它没有成功安装。相反,它将应用程序exe直接放到C:\。
如何让安装程序请求管理员权限。或者我是否必须依靠我的客户右键单击设置并选择“以管理员身份运行”,这非常容易出错?
有关我的设置的说明:
我还修改了设置的设置:我将InstallAllUsers设置为True,因为它应该这样做。
当我通过双击(或从项目的上下文菜单中选择Install)构建并启动setup.exe时,我总是得到相同的结果:安装程序在没有要求管理员权限的情况下运行,请求安装位置(我保留默认的C:\ Program Files(x86)\ Company \ ProgramName),然后单击“下一步”继续。因此,exe直接放在C:\中,当然创建的快捷方式指向Nirvana。
如果我手动运行setup.exe,管理员工作正常。但这不可能成为可行的方法。
那么如何告诉设置始终以Admin身份运行?
答案 0 :(得分:3)
我认为这是一个非常有效的问题,是一个真正的问题,并且有一个实际的解释。
我最近遇到过这个问题。在我的情况下,原因是通过GPO在计算机上设置了AlwaysInstallElevated
策略。策略在每台计算机策略中设置为1,在每用户策略中设置为0。可以手动设置这些策略以重现它对MSI安装程序的影响
使用msexec /log install.log /i Deploy.msi
,我有一个设置日志,里面有字符串,如下所示:
MSI (s) (A4:8C) [13:00:42:885]: Ignoring disallowed property TARGETDIR
MSI (s) (A4:8C) [13:00:42:885]: Ignoring disallowed property VSDNETURLMSG
MSI (s) (A4:8C) [13:00:42:885]: Ignoring disallowed property VSDNETMSG
似乎Visual Studio没有正确设置MSI中的SecureCustomProperties
,并且需要进行某种类型的后期处理。我认为转移到WiX可能是一个更好的长期解决方案。
我发现blog post on MSDN帮我找到了这个问题的根本原因。
答案 1 :(得分:1)
我遇到了和你一样的问题,并找到了一个足够好的解决方案。所以它也可能对你有用。解决方案记录在这里:
VS2010 Setup Project - Run As Administrator
我将在此简要重复解决方案。基本上,您需要手动编辑安装项目文件(.vdproj)和以下属性为TRUE:
"MsiBootstrapper"
{
...
"RequiresElevation" = "11:TRUE"
}
答案 2 :(得分:0)
启动setup.exe时,系统不会提示我提升权限。
这是正常行为。升降器不需要升高。
这基本上是谎言,因为它没有成功安装。 相反,它将应用程序exe直接放到C:。
所以它确实安装了您的应用程序,但位置错误。这与海拔无关。在安装项目的文件系统编辑器中,您在哪里添加了应用程序文件?您是否在“应用程序文件夹”中添加了它们?
如何让安装程序要求管理员权限。
单击“安装”按钮时,为所有用户安装的MSI软件包会自动提示提升。如果它没有自动升级并安装在每个机器的位置(如C :),安装将失败,并且不会在目标计算机上复制任何内容。