UAC stands for User Account Control and is the new technology in Windows Vista to provide users with different level of administrative rights and privileges. UAC main purpose is to support a more secured environment then what Windows XP offers.
Microsoft has a good white paper that covers UAC in detail and therefore I have no intention to cover it here:
Most developers I know have intentionally disabled UAC because they found it to be rather annoying, time consuming and too restrictive.
Although I can agree with these opinions I try to have it enable as much as possible simple because that will be the most likely scenario for many of my customers. In addition, from a general point of view I support it because by default all users (except Guests) are logged on to Windows Vista as standard users and get extended rights only when needed.
Since we can disable the UAC we may believe that we can solve most issues when installing different kind of softwares. However, in my own experience it may or may not be true.
In my case, I got some old ActiveX controls and .NET controls where they are either no longer updated or my subscriptions have expired and I have not renewed them. The errors I have faced when installing these controls as well as older softwares are:
This error occurs when the installation package needs to run a VBScript file and it cannot find the vbscript.dll. The error message is something like “The installation script shipped with the package needs access to an earlier version of VBScript”. In order to resolve it we need to locate the vbscript.dll on the targeting computer and registrate it with regsvr32.exe. But if Windows Script Host (WSH) is not available on the targeting computer then it must be installed prior installation of the wanted softwares. This issue is not related to whether UAC is disabled or not.
Speaking about Script Languages and Tools check out the Script Center at Microsoft.
The error message that popups during the installation is like “There is a problem with this Windows Installer package.” The only workable solution in this case is simple to disable UAC, install the software, and finally enable UAC again.
Of course, the best would be if the vendors can provide us with so called UAC compatibility applications.
Windows Vista and UAC Compatibility Applications
The above referenced white paper includes a stepwise process to analyze and to create Windows Vista and UAC compatibility applications. It also includes links to analyze tools which are useful to test if applications meet the requirements.
For my MSI (Microsoft Installer Packages) with customized add-ins and solutions this is too advanced. Honestly, I did find the last chapters of the white paper to be “far over my head”.
Anyway, the key question is the same:
- How can we make our MSI packages UAC compliant?
Included in the latest Windows SDK for Windows Vista is a new version of the Orca tool which makes it rather easy:
- Start Orca
- Open the wanted MSI file
- Select the command View | Summary Information…
- Check the option UAC Compliant as the following screenshot shows (and then save the updated MSI file):
If you only want to use this new version of the Orca tool and not install the whole SDK you may download it from here.
Of course, my own favorite tool for creating managed add-ins – Add-in Express .NET – has also this possibility as the following image shows:
As You note, there also exist an option to make the setup compatible with standard users. This is convenient as we, when using it, don’t need to test if the setup will work with standard users or not. A setup that target this group of users do not place anything under the Program section or in any other section that standard users do not have elevated right to access
All in all, now I got a working main development platform where Windows Vista is the operating system.