New MSI Interview Questions.

  1. How to add font files in an MSI package without using Wise Package Studio’s File Display Section.
  2. Difference between deferred & immediate custom action.
  3. What will you do if you can’t solve a issue in a package.
  4. How to add shortcuts to startup folder.
  5. Which applications should not be repackaged in MSI
  6. Which & why files are stored in C:\Windows\Installer
  7. What are the differences between patching, update & upgrade
  8. How to view to installation log files, which third party tools can be used for this task.
  9. Where can I find the schema of MSI file.
  10. How will you get the table details by using MSI SDK but not using ORCA.
  11. How can Network Shortcuts be added in an MSI Package.
  12. How to install certifications using MSI
  13. What are the advantages of admin install
  14. What condition on CA will allow to “Install” and “repair” but not at “uninstall”
  15. How to create nested MSI Installation
  16. How to create MST file from two MSI files.
  17. How to ensure that MSI gets installed only on WinXPSP3, win 7 and IE 8

Restarted working on mayaDeploy

I have restarted the coding of mayadeploy, a Full Package Management Solution for Small Business, It will be re-coded in Python & G++, using WX as GUI library.

Few silent features are as follows,

  1. Based on Server & Client architecture
  2. Using this managers will be able to deploy packages on to his reportee’s computer without any human intervention. (Only for App-V Packages for now)
  3. Will support following file types for deployment:- msi, exe, batch files, App-V Packages
  4. Ver: 2 will support even hardware & software reporting
  5. Will have entire Software Life cycle support.
    1. New Software request or Existing Software request
    2. Integration, packaging, UAT and Deployment lifecycle integrated.

as always i am requesting yours comments and suggestions to make it a success.

updated MSI Questions. Ver.: Alpha 4

Hello all,

I have updated the MSI Interview Questions, the updated document can be downloaded from

Enjoy solving the last 3 questions.

As always the questions & answers might be wrong.

🙂 so please correct me if that is the case :).


Mayank Johri

Tips: MSI: Save differences between two msi as MST file using ruby & python


require ‘win32ole’
msiClass =“WindowsInstaller.Installer”)
msidb = msiClass.OpenDatabase(“C:\\temp\\MountPointGenerator.msi”,0)
newmsidb = msiClass.OpenDatabase(“C:\\temp\\updatedMountPointGenerator.msi”,0)
transform = newmsidb.GenerateTransform(msidb,”c:\\temp\\newtest.mst”)


import win32com.client
import os
import sys


installer = win32com.client.Dispatch(“WindowsInstaller.Installer”)
database = installer.OpenDatabase(msidb, msiOpenDatabaseModeReadOnly)
updatedDB= installer.OpenDatabase(msiupdb , msiOpenDatabaseModeReadOnly)
updatedDB.GenerateTransform(database, mstdb)

QA: MSI Interview: Explain the difference between Property and PROPERTY

Q: Explain the difference between Property and PROPERTY


  1. Public Property:

Public properties can be changed anytime by a user, system or admin on the command line while installing, by applying a transform or by interacting with the authored user interface (Installation Interface)

They are always in upper case

  1. Private Property:

The installer uses then internally and their values are initialized in the installation database (msi) or set by the values determined by the OS.

Private property names must always include lowercase letters. (Thanks Alek for correcting)

MSI Interview Questions

  1. Explain the difference between Property and PROPERTY
  2. Describe the process flow of an installation in terms of the User Interface, Immediate and Deferred sequences
  3. What are the ADDLOCAL and ADDSOURCE properties?
  4. What is the difference between installations using ALLUSERS=””, ALLUSERS=1 and ALLUSERS=2 option?
  5. Advertised vs non-advertised shortcuts, what’s the difference?
  6. Maximum how many files you can add in msi?
  7. ProductCode, PackageCode, UpgradeCode, Explain them
  8. Explain Self healing process in details.
  9. Suppose you’re in an environment where you can’t use advertisement, explain how you would go about setting user specific settings
  10. What is the impact of leaving COM information in a generic registry component as apposed to in each relevant component
  11. How many sequences are there in an MSI
  12. Please sketch the entire process of creating a package, from the software request up to package delivery
  13. How many different sequence tables are there in an MSI
  14. How we can make two applications with same GUID to install on the same machine?
  15. How we create the small,minor and major upgrade?
  16. what is the disadvantage of using lock permissions table
  17. What are secure custom properties
  18. What is the difference between Repair and Self healing?
  19. What is entry point for MSI?
  20. What should be the condition of a custom action if we want to run it during install and uninstall ?
  21. Difference between Run, Run Once, Active Setup
  22. Use of INSTALLLEVEL Property
  23. Self-Heal (advertised shortcut) Vs Install on Demand (product Advertising)
  24. Self-Heal Vs Repair
  25. Per-user installation Vs Per-machine installation
  26. The reason why during a repair, bringing back missing files to System Folders is possible for a standard user who actually does not have a write permission to these folders.
  27. What are your thoughts and experiences for patching .msi files? What approaches have worked the best? What hasn’t worked? Why?
  28. Describe a methodology for populating the user’s profile with Windows Installer functionality. That one was funny because the interviewer was looking for Active Setup which I didn’t consider to be specific to Windows Installer.
  29. How do you configure an installation for an application that requires administrative privileges to work if the end user is not a local machine administrator?
  30. Have you ever had to modify a .msi directly without a graphic interface? Which tables did you modify and why?
  31. Describe the most difficult project you have worked on. What was the problem? How did you solve it? What did you learn?
  32. What tools are in your “packaging toolkit?”
  33. Have you had to edit permissions?
  34. How would you change permissions on files and registry entries?
  35. What are the differences between the lock permissions table and external tools for editing?
  36. How would you populate components from a machine-based installation to a user profile?
  37. What tools do you regularly use asides from your primary tool (WPS or IS or etc…) in the process of creating a package?
  38. An example of a condition you would use, and what it would be useful for.
  39. If you were to receive a vendor MSI, how would you repackage it to comply with company standards?
  40. Do you recommend modifying vendor MSIs? Why/why not?
  41. What are the advantages of using MSIs?
  42. Explain to me what self healing is and how you can leverage it for user specific files/registries
  43. Besides self-healing, what other options do you have for creating user specific files/registries and under what scenarios would you use those?
  44. How would you troubleshoot an application that does not run on a locked down environment but does run as administrator?
  45. When would you use Setup Capture and what kind of clean up would you performed on a captured MSI?
  46. Have you created merge modules? Why?
  47. What is the purpose of Validation and how do you handle ICE errors on vendor MSIs?
  48. Walk me through the entire packaging process from request to deployment you’ve been exposed to in previous roles.

More Questions can be downloaded from Just select the latest PDF file.

Adding Network shortcuts in MSI packages


  1. Create a property eg. INSTDIR in Property table
  2. Populate it with the network directory
  3. Create a property eg SHORTCUT1 in Property table /* IF not using Wise
  4. Polulate it with the full UNC path along with the executable name  /* IF not using Wise.
  5. Create a shortcut using the shortcut under the shortcut table
  6. Update the WkDir coloum in Shorcut table with INSTDIR (no NOT add brakets [] before and after INSTDIR).