我有一个 VS2010 解决方案,其中包含 2 个项目 - 一个 .NET 4 程序和一个安装程序。安装程序只是一个简单的安装项目,具有先决条件 - .NET Framework 4。
问题是我需要安装程序setup.exe始终以管理员身份运行,否则安装程序将在 UAC 下失败。(默认情况下它不会提示我提升权限。)
我尝试在 setup.exe 旁边放置一个setup.exe.manifest(如下所示)以强制它以管理员身份运行,但不幸的是 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 的确切路径。(安装包将被移动。)
编辑:顺便说一句,我的问题与此处描述的问题完全相同。但不幸的是,没有为那个人找到解决方案,提问者只是求助于他的客户手动使用以管理员身份运行,这是我试图避免的。