Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VS2010 Setup Project - Run As Administrator

I have a VS2010 solution with 2 projects in it - a .NET 4 program, and an installer for it. The Installer is just a simple Setup Project with a prerequisite - .NET Framework 4.

The problem is that I need the installer setup.exe to always run as Administrator otherwise the setup will fail under the UAC. (It does not prompt me for privilege elevation by default.)

I tried putting a setup.exe.manifest (shown below) alongside the setup.exe to force it to run as administrator, but unfortunately Windows ignores it, most likely because there is already another manifest file embedded within the setup.exe itself and it's set to asInvoker rather than 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>

I also tried adding a launch condition with the following properties:-

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

That doesn't do a thing either.

So can anyone please shed a light on how to solve this issue?

P.S. I know you can workaround this issue by changing the compatibility settings of the setup.exe, but this is a manual process and cannot be done via an automated build process (TFS). Also, providing a shortcut with compatibility setting is also weird, since no one provide a shortcut to a setup.exe in the same folder, not to mention that the shortcut needs to know the exact path of the setup.exe beforehand. (The setup package will be moved around.)


Edit: By the way, my problem is exactly the same as the one described here. But unfortunately, no solutions were found for that guy and the asker just resort to ask his clients to use Run As Administrator manually, which is what I'm trying to avoid.

like image 711
SF Lee Avatar asked Jul 16 '12 00:07

SF Lee


People also ask

How do I run as administrator?

Press and hold down the SHIFT key while you right-click the executable file or the icon for the application, and then select Run as. Select The following user. In the User name and Password boxes, type the administrator account and password, and then select OK.

Do you need admin rights to run Visual Studio?

You can do nearly everything in the Visual Studio IDE as a normal user, but, you need administrator permissions to complete the following tasks: Installing Visual Studio. Upgrading from a trial edition of Visual Studio. Installing, updating, or removing local Help content.

How do I create an MSI installer in Visual Studio?

Go to Extensions > Manage Extensions > Online > Search, find, download and install Microsoft Visual Studio Installer Projects extension. 2). Add a new Setup Project in your solution > right-click Application Folder > Add > Project Output… > choose the corresponding Project > select Primary output > OK.

How it is possible for the users to modify the application in the Visual Studio?

In the installer, look for the edition of Visual Studio that you installed, and then choose Modify. If you have an update pending, the Modify button is in a different place. This way, you can modify Visual Studio without updating it, should you want to. Choose More, and then choose Modify.


2 Answers

As pointed out by Frank, the Visual Studio setup project's behavior is documented at Microsoft's web site:

Visual Studio Installer Deployment

In other words, the setup.exe produced by VS008 and VS2010 will always be run without prompting for privilege elevation (unless you explicitly run it using the 'Run As Administrator' context menu option). It in turns will run each prerequisite component as well as the main MSI installer as separate processes and prompts for privilege elevation for any of them that needs it. This means that there may be multiple prompts for elevations.

However, for some reasons this does not always work. In my case, the elevation prompt for the .NET Framework prerequisite does not come up at all when I run setup.exe. But if I run the prerequisite installer directly, the prompt will come up. This means that the problem lies not with the prerequisite component, but with either setup.exe or with Windows itself.

The solution (or workaround)? According to Microsoft in the link above, we can force setup.exe to launch each prerequisite component and the main MSI to run with elevation prompts. To do this, we need to manually edit the setup project file (.vdproj) and change the following RequiresElevation value to TRUE, as shown below:

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

This is not the ideal solution, but it is close enough to my original requirement, so I'm satisfied with this solution.

like image 166
SF Lee Avatar answered Nov 02 '22 19:11

SF Lee


If you want to Run MSI in admin mode here is the way, 1) Open your Setup Project, View->Launch Conditions.

2) Right click on Launch Conditions, and add a new Condition in your Launch Conditions.

3) Right click the Condition, choose Properties Window.

4) Set Condition to

AdminUser

. 5) Build and install.

like image 26
Shrivallabh Avatar answered Nov 02 '22 19:11

Shrivallabh