No matter the application, I’ve always had three issues with MSIs. First,editing the MSI is a pain. Orca makes this a little less painful but the tool is starting to show some age. Second, distributing drivers with the original MSI is nearly impossible! Most of the time, the solution is using a mixture of DEVCON/PNPUTIL or a deployment share. Finally, custom actions (such as activations or follow-up procedures) have to be manually ran or deployed with Group Policy. There isn’t a simple way to embed these into an MSI.
There is one easy free solution to all of these issues. Today, we are going to use Scalable’s Smart Packager to make your MSI maintenance simple.
To follow along with this article, download Smart Packager and grab an MSI to work with. If you don’t have one, 7-Zip always makes a good test subject. Once installed, launch Smart Packager and select the Package Editor Tab. You will be prompted to add an MSI into the Package Editor. Browse to your MSI and add it now.
Now that Smart Packager is installed and ready to edit an MSI, double click on your listed MSI to tackle your first problem!
#1: As a Complete Orca Replacement
If you have worked with MSIs for any length of time, you have probably have used the classic Microsoft tool, Orca. By exposing the MSI as a database, Orca allows for the direct editing of the application. This editing is not simple.
The Package Editor in Smart Packager is the update to Orca that has been needed for years. For example, take a look at the Shortcuts tab. Unlike Orca, Smart Packager clearly shows you where each shortcut is going and uses standard location variables to do so.
Deleting a shortcut is as easy as hitting remove and changing a shortcut’s location is just as simple. You can manually enter a location or select common directories from a drop down menu.
This same simplicity applies to file, registry entries, or services. For me, this feature is awesome! Many of our applications require a separate GPO to copy over a settings file, registry entry, etc. Over the next few weeks, we will cover how you can phase out certain Group Policy Preferences and streamline your deployments.
#2: Distributing Drivers with Applications
I love proving vendors wrong – especially when they tell me that an application can’t be deployed! Most of the time, you are told that the application contains custom drivers and that will stop the deployment. I say they just have lazy developers but that is beside the point.
Adding a driver into an MSI is easy with Smart Packager. In the Package Editor, select the Drivers Tab and then Add. Because your driver files are probably not located in the MSI, you will have to add it as a New Package File.
Being able to add drivers to an MSI with a GUI interface is huge! It can allow you to maintain a single item when deploying mixed software/hardware applications such as USB video cards, imaging devices, etc. This feature also has the potential to reduce logon times in your domain. If you use Group Policy Printer Preferences, you can pre-deploy printer drivers to your machines to speed up printer installations.
#3: Running Custom Actions within the MSI
The final tip that we are going to cover is creating a custom action within your MSI. Often, you will need to follow up an installation with something extra. You might need to activate the application as an administrator or launch a second silent install. Custom Actions let you achieve this without creating complexity.
In the Package Editor, select the Custom Actions tab and then add. You can now add it a separate follow-up executable or VB script.
Regardless of your selection, you can either embed the required file into the MSI or use an existing file. You can also specify additional parameters (such as silent switches and user interaction switches). In my environment, I already know of a handful of applications that I need to reorganize with the custom action tool.
Detailed Walkthroughs and Guides
Over the next few weeks, we are going to follow-up on this article with detailed walk-throughs. We are going to cover how you can simplify your deployments by reducing the deployment types (GP, SCCM, etc). We are going to create an MSI from scratch to directly modify our clients. Finally, we are going to learn how to stop applications from breaking a MDT Task Sequence.
If you have any common deployment issues, leave me comment and we might be able to find a great solution to that as well! If you still haven’t, download Smart Packager and make your application infrastructure a bit more modern.
This post is brought to you by Scalable. What’s this?
I downloaded and tried this out per your recommendation, and we liked it so much my boss spring for the Pro version. This is making my job significantly easier. Thanks for posting about it!!
That is wonderful Matthew! I am so glad that it helped you!
Have a wonderful weekend!
Life is easier than you’d think if one uses specific well known software such as InstallShield for editing MSI.
Just try and feel happiness 🙂
I might be bias because I’ve had such bad experience with InstallShield in the past. I will give it another shot though!
This tool will be great for programs published with group policy. Some published programs don’t have start menu shortcuts. This means users can’t install them without an administrator. I can add a custom shortcut now and be done with it. Thanks for sharing this!!
I never even thought of that! Good idea Sam!
This is an awesome topic. I usually let one of my fellow worker handles all the msi packaging but sometimes I do need to do simple ones. MSI packaging is something most of admin hates to do but has to do it for obvious reasons. I’m happy to run into this awesome blogs. Thanks for sharing all the good stuff.
I am glad it helped you David! I agree with you on packaging/MSI maintenance. It is never fun! Tools like this make it easier though.
This sounds promising. Would you recommend using this, or spending the money to get something like Admin Studio? This might accomplish the things I was hoping to do with Admin Studio, but maybe I am too optimistic.
I regularly use it (and have used previous versions for years). Try it out first and see if it will do everything that you want it to do. Let me know what you think.
Great article! It is great to see real world usage on how something can really help. One question – can you run powershell scripts under custom actions?
Hey Krissy – I don’t think you can natively insert PowerShell scripts. I would bet you could provide a VB wrapper for the PS script though. Embed a VB script that does the following:
command = “powershell.exe -nologo -command PATHTOSCRIPT”
set shell = CreateObject(“WScript.Shell”)
Let me know how this works!
Just got word from Scalable. You can run PowerShell scripts!
I didn’t know all of this was possible with an MSI! I will be downloading this app.
That is great Zack! I am glad this article helped you.
Looking forward to follow-ups.
Me too! Especially the GPP replacement portion. Our environment is too complicated with policies and preferences and deployments and collections…
Thank you Jose!