VS2010安装项目 - 以管理员身份运行(VS2010 Setup Project - Run A

2019-07-30 10:52发布

我有在2个它项目VS2010的解决方案 - 一个.NET 4的程序,并为它的安装。 安装程序仅仅是一个带有先决条件的简单安装项目 - .NET Framework 4中。

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

我试图把一个setup.exe.manifest(如下图所示)旁边的setup.exe以迫使它以管理员身份运行,但不幸的是Windows将忽略它,很可能是因为已经有本身嵌入的setup.exe中的另一个清单文件,它是设置为asInvoker而非requireAdministrator。

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>

我也尝试添加一个启动条件具有以下特性: -

(name): Elevated
Condition: Privileged
Message: This installation requires elevated permissions to continue.

这并不做任何事情无论是。

所以,任何人都可以请揭示如何解决这个问题光?

PS我知道你可以通过改变Setup.exe的兼容性设置解决此问题,但这是一个手动过程,无法通过自动生成过程(TFS)来完成。 此外,提供具有兼容性设置一个快捷方式也奇怪,因为没有在同一个文件夹中提供了一个快捷方式SETUP.EXE,更何况该快捷方式需要知道的setup.exe的确切路径提前。 (安装包将被到处移动)。


编辑:顺便说一下,我的问题是完全一样描述一个在这里 。 但不幸的是,被发现的那家伙没有解决方案和提问者只是采取了问他的客户手动使用以管理员身份运行 ,而这正是我想避免的。

Answer 1:

正如弗兰克指出,在Visual Studio安装项目的行为被记录在微软的网站:

Visual Studio安装部署

换句话说,该setup.exe通过VS008和VS2010生产总是会提示无权限提升(除非你明确地使用“ 以管理员身份运行 ”上下文菜单选项运行)运行。 它轮流将运行每个必备组件,以及主要的MSI安装程序为单独的进程,并提示权限提升为其中的任何需要它。 这意味着,有可能是海拔多个提示。

然而,由于种种原因,这并不总是工作。 就我而言,.NET Framework的先决条件的提升提示没有出现在所有当我运行setup.exe但是 ,如果我直接运行必备组件安装程序,提示就上来了。 这意味着,问题不在于与必备组件,但无论是setup.exe或Windows本身。

将溶液(或解决方法)? 根据微软在上面的链接,我们可以强制 setup.exe发动每个必备组件和主MSI 提升提示运行。 要做到这一点,我们需要手动编辑安装项目文件(.vdproj)及以下更改RequiresElevation值设置为TRUE,如下图所示:

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

这不是理想的解决方案,但它是足够接近我原来的要求,所以我很满意这个解决方案。



Answer 2:

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

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

3)右键单击条件,选择属性窗口。

4)设置条件来

ADMINUSER

。 5)建立和安装。



Answer 3:

我觉得你的问题是与安装程序的名称做。 此链接

如何避免UAC时,我的EXE文件名包含单词“更新”?

说,如果名称中有更新或安装程序,然后将UAC一命呜呼

您可以将您的安装程序重命名为别的东西吗?



文章来源: VS2010 Setup Project - Run As Administrator