Saturday, June 10, 2006

Frequently Asked Questions about Windows Installer (MSI) Packaging.

These are the most Frequestly asked queries, which I have compiled from lots of places and have put together.

I have added more questions in other post which can be accessed by below link.

A. Windows Installer is a system service for installing and managing applications. It provides a standard method for developing, customizing, installing, and updating applications.

A. Windows Installer provides the following basic functions:
  • Transactional operations. All installation operations are transactional. For each operation that Windows Installer performs, it generates an equivalent undo operation that would undo the change made to the system. If a failure occurs during the middle of an installation, Windows Installer can roll back the machine to its original state.
  • Self-healing. Windows Installer supports "self-healing" abilities for applications. Applications can detect common installation problems at launch, like missing files or registry keys, and automatically repair themselves.
  • Installation on demand. Windows Installer supports on-demand installations of application features. For example, the spelling checker in Microsoft Office Word may not be installed by default, but a user can trigger an on-demand installation of this feature.
  • Installation in locked-down environments. In fully locked-down environments, users don't generally have permission or the ability to install applications. In most cases, they don't have write-access to the Program Files folder of their computers or to the HKEY_LOCAL_MACHINE registry location. If an administrator approves an installation package by means of Group Policy, for instance, Windows Installer can perform an installation on the user's behalf.
  • State management. Windows Installer provides a set of standard Win32® application programming interfaces (APIs) and automation interfaces for applications and administrators to use for querying the installation state on the machine. The APIs allow querying of the current state, verification of the existing state, repair of a corrupted state, and transition from one state to another.

A. Microsoft Windows 2000, Windows Millennium Edition (Windows Me), and Windows XP include Windows Installer. Windows 2000 includes version 1.1 of Windows Installer, Windows Me includes version 1.2, and Windows XP includes version 2.0. Windows 2000 SP3 also contains version 2.0 of Windows Installer.

A. A number of MSIExec processes can be running during an installation. The reason for this is that Windows Installer uses a client-server model for performing installations. Additionally for security reasons, Windows Installer hosts DLL and script custom actions in a "sandbox" process. Depending on how the install was initiated, one of the MSIExec processes can be the client process. Another MSIExec process is Windows Installer service. Any remaining MSIExec processes are usually sandbox processes for hosting custom actions. The determination as to which MSIExec process will serve as the sandbox process for a script or DLL custom action depends in part on whether the custom action will run elevated or impersonated and whether the custom action is 32-bit or 64-bit.

Q. What is an MST, and why it is used?
A. Whenever there is a vendor supplied MSI, then it is not recommended to do capture the MSI, hence all the changes need to be done in the MSI are done is a Microsoft Transform. Then this MST file is applied on the MSI with the following command line.

MSIEXEC /I {path}\file.msi TRANSFORMS={path}\file.mst /q

Where {path} is the location of the folder where MSI and MST are kept.

A. A small update is a product update that changes a few files or possibly adds some new content. A minor update is a product update that makes enough changes to warrant changing the product version for the product, whereas a major update is a product update with a large number of changes that warrants a change in the product code.
It's sometimes easier to think of a small update as a "hotfix" or Quick Fix Engineering (QFE) update, a minor update as a service pack, and a major update as a product upgrade.
Small and minor updates can be considered almost equal in that the only real difference is that a minor update has a change to the ProductVersion whereas a small update does not. The rules that they follow and application of the patch are the same. Application of small and minor update patches requires explicit reinstallations. Major updates are not subject to that limitation and a reinstallation is not required for patch application. Additionally small and minor update patches are limited in the changes that can be made to the feature-component structure for the package. Significant changes can be made to the feature-component structure in the scope of a major update.

Q. What is the Logical structure of package?
A. A package describes the installation of a full product (Windows Installer does not handle dependencies between products) and is universally identified by a GUID. A product is made up of components, grouped into features.
A component is the minimal part of a product—each component is treated by Windows Installer as a unit: the install developer cannot, for example, use a condition to specify to install just part of a component. Components can contain files, groups of files, directories, COM components, registry keys, shortcuts, and other data. The end user does not directly interact with components.
Components are identified globally by GUIDs, thus the same component can be shared among several features of the same package or multiple packages, ideally through the use of merge modules (although, for this to work correctly, different components should not share any sub-components).
Key paths
A key path is a specific file, registry key, or ODBC data source that the package author specifies as critical for a given component. Because a file is the most common type of key path, the term key file is commonly used. A component can contain at most one key path; if a component has no explicit key path, the component's destination directory is taken to be the key path. When an MSI-based application is launched, Windows Installer checks the existence of these critical files or registry keys (that is, the key paths). If there is a mismatch between the current system state and the value specified in the MSI package (e.g., a key file is missing), then the related feature is re-installed. This process is also known as self-healing or self-repair. No two components should use the same key path.
A feature is a hierarchical group of components—a feature can contain any number of components and other features (a feature contained in another feature is called a "subfeature"). Most installation programs display a "custom setup" dialog box at run time, from which the end user can select which features to install or remove.
The package author defines the product features. A word-processing program, for example, might provide features for the main program executable, the program's help files, and optional spelling checker and stationery modules.

Q. What is Advertisement?
A. Windows Installer can advertise a product rather than actually installing it. The product will appear installed to the user, but it will not actually be installed until it is run for the first time (by means of a Start menu shortcut, by opening a document that the product is configured to handle, or by invoking an advertised COM class).

Q. What is Installation on demand?
A. Similar to advertisement, it consists in the installation of features as soon as the user tries to use them.
Q. How to do Diagnostic Logging?
A. Windows Installer supports detailed logging as a powerful diagnostic tool. Logging can be enabled in the following four ways:
Command-line: If installing an MSI package from the command-line, the /L switch can be used to enable logging. For example, the following command installs Package.msi and outputs verbose logging to c:\Package.log:
msiexec /i Package.msi /l*v c:\package.log
Windows Registry: The following registry value can be used to enable verbose logging:
Key: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
Value Name: Logging
Type: REG_SZ
Data: voicewarmup
The resulting log is named MSI###.log (where "###" is a unique random identifier) and is placed in the system's Temp directory.
Group Policy: The following Group Policy setting can be used to manage logging on multiple systems:
Computer Configuration -> Administrative Templates -> Windows Components -> Windows Installer -> Logging.
Windows Installer API: If installing an MSI package programmatically, the MsiEnableLog function call can be used to create a log file and determine the logging level for the life of the calling process.
Although verbose logs are very useful for diagnosing Windows Installer problems, they can be very long and difficult to read without practice. A quick way to find the location of a problem in the log is to open it in a text editor (such as Notepad) and search for the phrase "Return Value 3". This entry commonly appears in logs close to the point where a critical error has occurred. The Windows Installer SDK provides a tool called WiLogUtl, which parses and annotates Windows Installer log files.

Q. Why does the package go for Self Healing first time the user launches the Application?
A. If the package is containing some HKCU entries then the package will always go for self healing for the first time. This happens because the HKCU keys are only installed for the current user present while installing the package and not all the users as it is the property of the HKCU. So, if other user logs in then there is a mismatch between the current system state and the value specified in the MSI package (e.g., a key file is missing), then the related feature is re-installed. This is called the Self Healing.

Q. How do detect the MSI version on the computer?
A. If you want to check the version of the Windows Installer on your system, check the version of MSI.DLL in the Windows\System 32 folder.


Anonymous said...

dear sir, i wanna pack my microsoft windows PC. please help me in this

Anonymous said...

What is DLL HELL ?

Anonymous said...

Good work Piyush..Keep it up!!!...Renju

satnix said...

Could we arrange some INTERVIEW QUESTIONS and INTERvIEW Related articles here .. coz I have googled out stuff for MSI packaging interview questions but found nothing.
What say ?

Piyush Nasa said...

I will update this and add more questions. I myself take interviews and I don't want people to just cram the questions and give answers in interviews. I will be giving in more details for basics but direct interview questions are not good to put. I hope you understand.

Anonymous said...
This comment has been removed by a blog administrator.
amol said...

Hey Piyush Dude...........nice work
PLZ tell more about the MSI Technology..........Thnx bye

Brunda13 said...

Answer for What is Dll Hell????

Dll stands for Dynamic Link Library.

For instance there is an application (A) with the dll version 1.0 which is already installed on the system, there is another application (B) with the same dll name but different version, let us take it as 2.0.
When the application B is installed on the system which has App A installed, it overwrites the dll file to version 2.0 and if the app B is uninstalled the Dll also gets uninstalled, hence failing to launch Application A as well.

This conflict between the dll file is know as DLL hell.

Hope this is correct Piyush :)

Laxmi said...

Hi Piyush,
I am a tester.I have some questions regarding a career option like - MSI Application packaging. How is this career option? Can we jump from tester to Application packager? Currently I am getting many emails regarding these openings which are basically related to MSi packaging only because i have MSi and Installshield in my resume.Waiting for your reply.

Laxmi said...

I would like to know about application packaging as a career optio in MSI? I am tester and would like to change to this career option.

Culao said...


I read this post 2 times. It is very useful.

Pls try to keep posting.

Let me show other source that may be good for community.

Source: Production interview questions

Best regards

Anonymous said...

This is brilliant Piyush !!
Would be good for people preparing for interviews :)


Anonymous said...

This is brilliant Piyush !!
Good for people preparing for interviews :)

Cheers !!

garg said...

Hello Piyush

I read your blog its realy fantastic for bigners.Actualy I have an interest in Application Packaging so please suggest some useful matterials or notes for this because I want to become a master in Application packaging...

Piyush Nasa said...

Hi Garg,

read MSI.chm and blogs for application packaging. You can read and forums..

uanks said...


Anonymous said...

DO you know how to troubleshoot "silently launched embedded setup issue " while installing applications ?
Already tried , unplugging the lan cable and deleted entries from regedit . still no luck .

Piyush Nasa said...

What is the issue that you are facing in silent isntallation of embedded application?
Are you able to install the embedded setup manually?

chandra said...

one application can installed in admin mode but not in user mode,how i troubleshoot this?

chandra said...

what r the company standards?

Piyush Nasa said...

MSI can only be installed in Admin mode and not in user mode.
Please explain your question more.
Every company has different packaging standards to follow. As you do packaging, you will learn more on this.

myagimahesh said...

hello all,
can anybody tell me about application packaging career in future.

Anonymous said...

hi piyush Nasa ... can u pls give me an idea in wt al areas should a pacakger concentrate before they go for an intervew ??

Piyush Nasa said...

Application Packaging: It has been there for atleast 12 years now. Growing technology and every company is seeking its benifit now.
It is a cost saving mechanism for companies so should be in demand in future.

Piyush Nasa said...

Before going for interview, just lookup few concepts. Try to see and doo all different types of things. Do lots of experiments and test them.
The more you have hands on experience, the more confident you will be in interview.
Don't just think of clearing the interview, because even if you clear it and do not have your concepts right, you will not be able to perform as per expectations.
So work hard and learn as much as you can..

Anonymous said...

Hi Piyush,

How to create embedded mst.

Anonymous said...

hey thanks :)

madhu said...

hi piyush ...

can u pls tel me wt al certifications can a packager take who is having 2yrs of experience.

Piyush Nasa said...

I have Altiris Certification in WISE Package Studio 7.0 but that is discontinued now.
Flexera has taken up WISE PAckage Studio. It is expected that they will come up with some certification for application packaging.
Otherwise, I would recommend you to do ITIL or MCP for Windows server. It will help you in future.

madhu said...

hi pyush,

Application called adobe acrobat reader AcrobatPro_10_Web_WWEFD.exe wen i launch an application and wen i launch the pdf file and wen i click on to hlp tab it prompts an error sayin like "online hlp content could not be displayed. verify u can launch your web browser and have access on it"

madhu said...

hi pyush,

Application called adobe acrobat reader AcrobatPro_10_Web_WWEFD.exe wen i launch an application and wen i launch the pdf file and wen i click on to hlp tab it prompts an error sayin like "online hlp content could not be displayed. verify u can launch your web browser and have access on it" in the source . i just wanted to know the reason y it does in source itlf.

Piyush Nasa said...

Since it is online help, can you make sure you are connected to internet and all your proxy settings are in place.
If it is in the source, you should not worry about fixing it in your package.

Anonymous said...

ok thank you.

Anonymous said...

okay thank you.

Anonymous said...

hi can u tellme how to change WindowsInstaller bit of registry from 1 to 0 or 0 to 1 programmetically...
thanks in advance

Piyush Nasa said...

I am not aware of this bit.. Can you give some more details?

Farrukh Waheed said...

Good job and keep up the good work in future.. I'm looking into these for my job interviews...
If you have any more good stuff, please do share...

Thanks a bunch...

venkat kv said...

can anybody tell me when we add a file to msi which tables in the msi database with effect.

Sairam Veeranjaneya said...

Nice article p Piyush

Piyush Nasa said...

@Venkat, just add the file and do a difference to see what all got affected.