SF *_*Lee 10 installation uac visual-studio-2010
我有一个VS2010解决方案,其中包含2个项目 - 一个.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>
Run Code Online (Sandbox Code Playgroud)
我还尝试添加具有以下属性的启动条件: -
(name): Elevated
Condition: Privileged
Message: This installation requires elevated permissions to continue.
Run Code Online (Sandbox Code Playgroud)
这也没有做任何事情.
那么有人可以阐明如何解决这个问题吗?
PS我知道您可以通过更改setup.exe的兼容性设置来解决此问题,但这是一个手动过程,无法通过自动构建过程(TFS)完成.此外,提供兼容性设置的快捷方式也很奇怪,因为没有人提供同一文件夹中setup.exe的快捷方式,更不用说快捷方式需要事先知道setup.exe的确切路径.(安装包将被移动.)
编辑:顺便说一句,我的问题与这里描述的问题完全相同.但遗憾的是,没有找到该人的解决方案,而提问者只是要求他的客户手动使用"以管理员身份运行",这正是我想要避免的.
SF *_*Lee 13
正如Frank所指出的,Visual Studio安装项目的行为记录在Microsoft的网站上:
换句话说,在setup.exe通过VS008和VS2010生产将始终被提示没有权限提升(除非你明确地使用"运行它运行以管理员身份运行 "上下文菜单选项).它反过来将每个必备组件以及主MSI安装程序作为单独的进程运行,并提示任何需要它的任何人的权限提升.这意味着可能有多个提升提示.
但是,由于某些原因,这并不总是有效.在我的例子中,当我运行时,.NET Framework先决条件的提升提示根本没有出现setup.exe.但是,如果我直接运行必备安装程序,则会出现提示.这意味着问题不在于必备组件,而在于setup.exeWindows本身或与Windows本身有关.
解决方案(或解决方法)?根据Microsoft在上面的链接中,我们可以强制 setup.exe启动每个必备组件和主MSI以使用提升提示运行.为此,我们需要手动编辑安装项目文件(.vdproj)并将以下RequiresElevation值更改为TRUE,如下所示:
"MsiBootstrapper"
{
"LangId" = "3:1033"
"RequiresElevation" = "11:TRUE"
}
Run Code Online (Sandbox Code Playgroud)
这不是理想的解决方案,但它足够接近我原来的要求,所以我对这个解决方案很满意.
如果您想在管理模式下运行 MSI,方法如下: 1) 打开您的安装项目,查看->启动条件。
2) 右键单击启动条件,然后在启动条件中添加一个新条件。
3) 右键单击条件,选择属性窗口。
4) 将条件设置为
管理员用户
. 5) 构建和安装。
| 归档时间: |
|
| 查看次数: |
15833 次 |
| 最近记录: |