Windows Installer FAQ – Part 3

As you guys are aware, I am writing a series of posts which covers some key discussions, topics and FAQs in the stream of application packaging. In this third post, we will look at some questions on key OS components and Installation sequences.

Q11. What is the difference between a Task, Process and a Service  
A process is an instance of a computer program, consisting of one or more threads, that is being sequentially executed by a computer system that has the ability to run several computer programs concurrently. A task is “an execution path through address space”. In other words, a set of program instructions that are loaded in memory.
Windows service is a long-running executable that performs specific functions and which is designed not to require user intervention. (Thanks to Wiki for the answers)

Q12. How do you determine the installer Version in a machine

Option 1: In a command window, type msiexec, the window displayed will tell you the version number.

Windows Installer Version - Detection Method 1



Option 2: Check the file attributes of Msi.dll in the folder C:\Windows\System32

Windows Installer Version - Detection Method 2


Q13. Explain Advertising Phenomenon / On Demand Installation  
The availability of an application to a user without actually installing the application is called Advertisement, In this technique, only the interfaces required for loading and launching the applications are presented to the User. Windows Installer does not install the necessary components until a user or application attempts to activate the advertised program. This is usually done by launching the advertised shortcut. This concept is called install-on-demand.

There are 2 types of Advertisment, “Publish” and “Assign”.
Publish – In this type, the application’s advertising entry point will be visible for the user (usually a shortcut) – Generally used.
Assign – In this type, the application will be available only in Add remove program. The application is installed from here. (this option is used for only advanced users (or) when the application size is huge and they do not want a normal user to install it accidently by launching the shortcut, when he doenst need it)

An application can be tested for advertisement by using the /j switch. (/ju and /jm for user and machine respectively)
For eg: msiexec /jm ABC10.msi /qb

Q14. What are the various Installation sequences? / What are the differences between execute immediate and deferred? / When do you choose a CA to be written in Deferred?  
The various installation sequences are listed below.,
User Interface: The User Interface sequence, which is executed at the beginning of installation, gathers system information, displays dialogs to the end user, and records end user choices. It is suppressed during silent installations.
Execute Immediate: In this mode the installer creates an internal script and run then to make some system changes.
Execute Deferred: It encompasses all the actions between InstallInitialize and InstallFinalize.


Difference Between Execute Immediate and Deferred

Q15. What is the difference between the AdminUser and Privileged properties?
The AdminUser property is set when the user performing the installation is an administrator; the Privileged property is set when the user is allowed to install with elevated privileges. A user can install with elevated privileges if the user is an administrator, both the per-user and per-machine AlwaysInstallElevated policies are set or the application has been assigned by the system administrator.

If the user is an administrator, then both the AdminUser and Privileged properties are set. If the user is not an administrator, then AdminUser is never set. In that case, privileged is only set if the user has been given permission by the administrator through assignment or policy to install the application as elevated. In many cases, it is recommended that launch conditions or similar conditions use Privileged instead of AdminUser to allow for installation of applications assigned by administrators.

I would recommend, You read the other parts too – Part 1 , Part 2 , Part 3 , Part 4, Part 5 (Coming Soon)


  1. VJ Very useful information ! The Software package community may be glad for your contribution.RegardsRodolfo

  2. VJ Very useful information ! The Software package community may be glad for your contribution.

  3. Hi Vijay

    Good one.

    I have a suggestion for Q12. How do you determine the installer Version in a machine

    If the MSI Version needs to be checked with script or programmatically, you can create an vbs file with the following VBScript code
    set installer = createobject(“windowsinstaller.installer”)
    msgbox “MSI Version – ” & installer.version


  4. hi, indeed nice info, but perhaps in Q14 or Q15 you can also explain the system context (for your Custom Action) because now it looks like that you have to set you policy (elevated priveleges) or have to be a member of the admin group in order to iinstall specific msi packages.

    Besides in my opinion you don't want to set the policy due to security reasons.
    This will mean that every msi package can do everything on you local machine regardles of which account is kicking off the msi.

    Kind regards,
    Derek Dousma

  5. Yup.. Got your point. Lets cover the System Context and policy based deployment in detail in Part no 5.
    Thanks for your comments Derek.

    Btw, if you want to contribute in writing the FAQ questions and Answers. You are most welcome. Please make a set of 5 questions and lemme know. Lets keep this list growing.


  6. As a beginner to packaging world, this info. really looks very useful to me..Thanks a lot !!

    If you have any guide where I can learn about MSI packaging please do let me know..

    Thanks in advance!

Leave a comment

Your email address will not be published.