Application Packaging Job Interview Questions and Answers
With the release of the MSI Packaging Academy after which you can get a certification that proves your packaging skills, I also thought to give you some of the most used application packaging interview questions, some of which I have asked different applicants during the years. These questions could give you a general idea of what is to be expected when you are going to your next interview and possibly could ease up your emotions.
What is the difference between application packaging and repackaging?
Application packaging refers to the process of creating an installer to a developed application or where the binaries and documentation for required system changes are available, while application repackaging refers to the process of capturing all the system changes a particular installer does and repackage it into a different format (or existing format but with additional changes implemented by your side). In the application repackaging phase, after the initial snapshot, additional changes can be performed on the system and these will be detected by the capturing program and added to the master snapshot.
Define the cases where repackaging is recommended and when repackaging is to be avoided.
Repackaging is mostly required and pushed as a best practice when it comes to MSI in order to bring a common set of rules and behaviors into an infrastructure. All MSI packages follow the same principle and produce easy to read verbose logs.
Speaking about logs, this is another case where application repackaging is necessary, as without logs a failed installation cannot be debugged. This is probably the golden rule of repackaging.
Depending on each interviewer view, customizations can also be calculated into the response, as repackaging is offering the possibility to add further customizations to the installation. However, some interviewers view wrappers (such as PowerShell App Deployment Toolkit) as repackaging, which in my personal opinion is false. The installation is still in the original state and the additional customizations are added on top with the use of other technologies outside of the main package.
When we are discussing cases to avoid repackaging we need to mention:
- Vendor MSI files. Instead, you can customize them using Transform files.
- Patches, updates, and hotfixes for the operating system, Windows Installer Service, MDAC. Those applications shouldn’t be repackaged because they influence Windows security rules.
- Windows Media Player, Microsoft Internet Explorer, antivirus software, and device drivers. These types of applications generate changes in the operating system which includes the protection of Windows files.
Which packaging tools have you used?
This is usually a general question in which every candidate gives different responses, but the most popular ones we can consider are:
- Wise Package Studio
- Advanced Installer
My suggestion is to state the actual experience as usually if a candidate brought up different tools to the table, I would usually ask a couple of questions about the tools as well. The last thing you want to do is show that you are not truthful in your responses.
What are the main benefits of Windows Installer?
Some of the main benefits offered by Windows Installer include:
- Standard formatting (Windows Installer created the MSI package, a new application format)
- Transactional install and rollback (Windows Installer packages can be easily installed according to the user’s requirements, and if the installation fails, all the actions taken upon that moment can be erased)
- The Self-healing option (or self-repair) for corrupted or erased files (when certain files are corrupted or erased, the user can trigger the Repair option, which fixes those files)
- Installation on request (packages can be installed in one simple click whenever the user wants)
- Packages can use Transform type files (which allows a package to be customized)
- Packages can use patches (great for fixing bugs in the applications)
- Managing the state of an application(Windows Installer offers developers an API for monitoring the state of a package - whether it is or it isn’t installed on the machine)
- Administrator’s rights are no longer necessary for installing applications (this depends on whether the application is user-targeted or not)
- Scriptable API (for manipulating MSI type files)
- Packages can be managed via the MSIEXEC.exe command line.
What is an MSI?
To implement a set of common rules in the applications’ administration (installing, repairing, uninstalling), Microsoft released in 2000 the Windows Installer service and MSI files.
An MSI package contains all the information Windows Installer needs for installing or uninstalling an application or a software product.
It includes all the details for rolling the graphical interface for the user, which includes the database and the data streams for different parts of the installation. An .msi file can also have one or more transforms (.mst files), internal or external files, needed for the installation. It can be classified as a database that contains different tables. Each of these tables contains specific instructions and setup-related information.
Define the base structure of an MSI.
The way I would define the structure of an MSI is:
- Components: Files, Registries, Shortcuts, Extensions, Services, Odbcs, System variables
- Custom Actions
Be aware of how you present the situation as I have heard cases where interviewers were defining Features as Products, because a certain feature can be considered “a product” which contains “sub-features”. This statement is completely false and from my perspective I consider it a personal view of the interviewer, but in Microsoft documentation (and in real life), a feature is definitely not a product.
Define features and components
A feature represents a functional part of an application and it can be installed independently from the entire application. A feature can have many subfeatures. The dependency between subfeatures and parent features is the following: if a subfeature is set to be installed, the parent feature will be automatically installed at the same time, but if the parent feature is set to be installed, it is not mandatory for the subfeature to be installed.
A feature can be set to be installed (or not) by modifying the value of the column Level.
A feature can contain as many components as desired, but as a best practice is recommended not to exceed 1600 components/feature. If a certain application contains more than 1600 components, the remaining components should be placed on another feature.
Components are collections of resources that are always installed or uninstalled as a whole on the computer. Resources could be files, registries, shortcuts, or basically anything else that can be installed..
Components represent the base unit of a package, a piece of the application/products that will be installed. They contain a file or group of files, COMs (Component Object Model, they can be a dll or an exe), registries, shortcuts, etc.
Components are hidden from the user and when a user chooses to install a feature, Windows Installer will determine which components must be installed to produce that feature.
Explain the self-healing mechanism
Self healing is one of the main features of Microsoft’s Windows Installer technology. Self healing leverages the Windows Installer database to allow for a full or partial reinstallation of a product if the installation gets broken or corrupt.
Windows Installer addresses this feature through Advertised shortcuts. When the application is installed, the self-healing feature is automatically activated if the application is launched through the advertised shortcuts. Since the shortcuts point to a file from a feature, only the components in this feature can be repaired. Therefore, if one of these components is missing, Windows Installer will trigger an auto-repair for the entire feature.
Be very careful of the above case where only the feature where the component of the executable is healed, some interviewers might redesign the question such as “how would you set the self-healing mechanism on a multi-feature application”.
If no Advertised shortcuts (or no shortcuts at all) are present in the package, but user information and/or actions must be performed for each user, then you should use the Active-Setup mechanism.
1. What is HKCR?
It’s a combination of HKLM\Software\Classes and HKCU\Software\Classes. And it contains the information for COM class registration and file type associations.
2. Where does Windows store the service details?
HLKM/System/CurrentControlSet/Name of the Service
3. Which tables in the MSI database give you control of the services?
ServiceInstall and ServiceControl
4. Define environment variables and what types are there.
An environment variable is a variable that can be accessed by all applications system wide. This can contain everything from paths to actual strings, and multiple values can be defined in a single variable as long as they are separated with “;”.
In terms of types, we have system variables, which can be accessed by all the users on that particular machine, or user variables who are available only for that user.
5. Why would an MSI try to rewrite a file?
The file does not have versioning enabled and only the hash is present in the MSI database. However, hash failures are not uncommon and in this case we would select for that particular component to never overwrite.
6. Can you chain multiple transform files?
Yes, multiple transform files can be applied during the installation of the MSI file as long as they don’t interfere with each other in terms of table manipulation.
7. MSI upgrade or MSP?
Depends on the situation. For fast fixes which need to be as small in size as possible, MSP is the preferred way, but MSP files are hard to work with due to the strict rules which apply to them. In general cases, MSI upgrades are preferred in the industry.