Minimizing the Number of User Account Control Prompts During Advanced UI and Suite/Advanced UI Installations

InstallShield 2016

Project • This information applies to the following project types:

Advanced UI
Suite/Advanced UI

Some of the specific details apply to only the Suite/Advanced UI project type. These differences are noted where appropriate.

Edition • The Advanced UI project type is available in the Professional edition of InstallShield. The Suite/Advanced UI project type is available in the Premier edition of InstallShield. For information about the differences between these two project types, see Advanced UI Projects vs. Suite/Advanced UI Projects.

One of the goals of Windows Vista and later, as well as User Account Control (UAC), is to allow users to run as standard users all of the time. Elevation should rarely be required; if it does occur, it should occur for as short of a duration as possible.

Settings in several different areas of InstallShield affect whether an Advanced UI or Suite/Advanced UI installation triggers UAC consent or credential prompts for elevated privileges. In addition, settings in the packages that are included in an Advanced UI or Suite/Advanced UI installation also affect whether end users see a UAC prompt for elevated privileges. Understanding these different settings will help you create the appropriate UAC experience for your installation when end users run it on Windows Vista and later systems and on Windows Server 2008 and later systems.

UAC-Related Settings in an Advanced UI or Suite/Advanced UI Project

The following settings in an Advanced UI or Suite/Advanced UI project help determine whether UAC prompts are displayed:

Required Execution Level—Use this setting on the Setup.exe tab in the Releases view to specify the minimum execution level required by your installation’s Setup.exe file. InstallShield uses the value that you select (Administrator, Highest Available, or Invoker) in the application manifest that it embeds in the Setup.exe launcher. For more information, see Specifying the Required Execution Level for Your Setup Launcher on Windows Vista and Later Platforms.
Require Elevated Privileges—Use this setting for a package in the Packages view to specify whether the package requires elevated system privileges.
Requires Administrative Privileges—Use this setting for an action that you have added to your project in the Events view to specify whether the action requires administrative privileges.

Project • Suite/Advanced UI projects include the Events view, as well as support for assigning actions to events.

UAC-Related Settings in a Package That Is Included in an Advanced UI or Suite/Advanced UI Project

The packages that you include in an Advanced UI or Suite/Advanced UI project have various ways of triggering a UAC prompt for elevated privileges. To learn more, see Minimizing the Number of User Account Control Prompts During Installation.

UAC-Related Run-Time Behavior for an Advanced UI or Suite/Advanced UI Installation

Note the following UAC-related behavior on Windows Vista and later and on Windows Server 2008 and later:

If Required Execution Level is set to Invoker, none of the actions in the project require administrative privileges, and none of the packages in the installation require administrative privileges, end users should see no UAC prompts during installation. The entire installation (displaying the UI, launching the actions, and running the packages) is run in a nonelevated process.
If Required Execution Level is set to Invoker, if none of the actions in the project require administrative privileges, and if one or more of the packages in the installation require administrative privileges, end users should see one UAC prompt—plus up to one additional UAC prompt for each reboot—during installation. The UAC prompt is displayed after the end user clicks the button in the UI to install. The packages that have a Require Elevated Privileges value of Yes are launched with elevated privileges in a new separate process. The remaining portions of the UI, the actions, and the packages that have a Require Elevated Privileges value of No are launched in the original nonelevated process.
If the Required Execution Level is set to Invoker and if one or more of the actions in the project require administrative privileges, end users should see one UAC prompt—plus up to one additional UAC prompt for each reboot—during installation. The timing of the UAC prompt depends on when elevation is first required.

For example, if the earliest scheduled action that requires administrative privileges is configured to occur during the OnBegin event (which is well before any packages are run), the UAC prompt may be displayed shortly after end users launch the Setup.exe file. After end users provide consent or credentials, the installation launches a new elevated process for this action, as well as any subsequent actions and packages that require elevation. Any subsequent actions and packages that do not require elevation are launched in the original nonelevated process, along with the remaining portions of the UI.

However, if the earliest scheduled action that requires administrative privileges is configured to occur after a package that requires elevated privileges, the UAC prompt is displayed after the end user clicks the button in the UI to install. After end users provide consent or credentials, the installation launches a new elevated process for the package, as well as any subsequent actions and packages that require elevation. Any subsequent actions and packages that do not require elevation are launched in the original nonelevated process, along with the remaining portions of the UI.