Visual studio 2010 VS2010安装项目-以管理员身份运行

Visual studio 2010 VS2010安装项目-以管理员身份运行,visual-studio-2010,installation,uac,Visual Studio 2010,Installation,Uac,我有一个VS2010解决方案,其中包含两个项目—一个.NET4程序和一个安装程序。安装程序只是一个简单的安装项目,它的先决条件是.NET Framework 4 问题是我需要安装程序setup.exe始终以管理员身份运行,否则安装程序将在UAC下失败。(默认情况下,它不会提示我提升权限。) 我试图在setup.exe旁边放置一个setup.exe.manifest(如下所示),以强制它以管理员身份运行,但不幸的是Windows忽略了它,很可能是因为setup.exe本身中已经嵌入了另一个清单文件

我有一个VS2010解决方案,其中包含两个项目—一个.NET4程序和一个安装程序。安装程序只是一个简单的安装项目,它的先决条件是.NET Framework 4

问题是我需要安装程序setup.exe始终以管理员身份运行,否则安装程序将在UAC下失败。(默认情况下,它不会提示我提升权限。)

我试图在setup.exe旁边放置一个setup.exe.manifest(如下所示),以强制它以管理员身份运行,但不幸的是Windows忽略了它,很可能是因为setup.exe本身中已经嵌入了另一个清单文件,并且它被设置为asInvoker而不是requireAdministrator

那也没用

那么,有人能告诉我们如何解决这个问题吗

另外,我知道您可以通过更改setup.exe的兼容性设置来解决此问题,但这是一个手动过程,无法通过自动生成过程(TFS)完成。此外,提供具有兼容性设置的快捷方式也很奇怪,因为没有人提供同一文件夹中setup.exe的快捷方式,更不用说快捷方式需要事先知道setup.exe的确切路径。(安装程序包将四处移动。)



编辑:顺便说一句,我的问题与描述的问题完全相同。但不幸的是,没有为那个家伙找到解决方案,询问者只是要求他的客户手动使用Run As Administrator,这正是我试图避免的。

我认为您的问题与安装程序的名称有关。此链接

表示如果名称中包含更新或设置,则UAC将启动


能否将安装程序重命名为其他名称?

正如Frank指出的,Visual Studio安装项目的行为记录在Microsoft的网站上:

换句话说,VS008和VS2010生成的
setup.exe
将始终在不提示提升权限的情况下运行(除非使用“以管理员身份运行”上下文菜单选项显式运行)。它依次将每个必备组件以及主MSI安装程序作为单独的进程运行,并为需要它的任何组件提示权限提升。这意味着可能会有多个高程提示

然而,由于某些原因,这并不总是有效的。在我的例子中,当我运行
setup.exe
时,.NET Framework先决条件的提升提示根本不会出现但是如果直接运行必备安装程序,将出现提示。这意味着问题不在于必备组件,而在于
setup.exe
或Windows本身

解决方案(或解决方法)?根据上面链接中的Microsoft,我们可以强制
setup.exe
启动每个必备组件,并使用提升提示运行主MSI。为此,我们需要手动编辑安装项目文件(.vdproj),并将以下
RequiresElevation
值更改为TRUE,如下所示:

"MsiBootstrapper"
{
    "LangId" = "3:1033"
    "RequiresElevation" = "11:TRUE"
}

这不是理想的解决方案,但它与我的原始需求非常接近,因此我对该解决方案感到满意。

如果您想在管理模式下运行MSI,这里就是方法, 1) 打开安装项目,查看->启动条件

2) 右键单击启动条件,并在启动条件中添加新条件

3) 在条件上单击鼠标右键,选择“属性”窗口

4) 设置条件

管理员用户


5) 构建并安装。

但这正是我想要的!我希望UAC加入,但它没有。另外,名称“setup.exe”是由Visual Studio自动生成的,不能更改。可能有用的背景:并且-尤其是应用程序提升部分谢谢Frank,您的第二个链接实际上提供了我需要的信息!如果您能在此基础上提供一个正确的答案(关于MsiBootstrapper->RequiresElevation=True的部分),我将接受您的答案。:)打开.vdproj文件后,我必须在何处设置此属性?没有问题,我找到了它,它是右键单击并使用notpad打开的。我在Windows 7 64位俄文版中遇到了一个错误,其中合并模块的安装路径不正确。如果setup.exe是以管理员权限启动的,则相同的安装工作正常。我曾尝试更改设置行为以立即请求提升权限-使用“RequiremeLevation”更改,但不幸的是,此解决方案不起作用。(因此立即要求提升,但这无助于解决我的问题)这对我很有效。看起来我们也可以使用
Privileged
-“如果用户是管理员,安装程序只设置AdminUser属性。如果用户是管理员,安装程序设置Privileged属性,或者如果策略允许用户以提升的权限安装”[]
(name): Elevated
Condition: Privileged
Message: This installation requires elevated permissions to continue.
"MsiBootstrapper"
{
    "LangId" = "3:1033"
    "RequiresElevation" = "11:TRUE"
}