InstallAware Studio Admin 6.0
by Bob Kelly
InstallAware has certainly come a long way in a short time. I had a look at InstallAware 2005 just over a year ago and was happy to see something innovative being done within the sometimes restrictive confines of the Windows Installer (without the need for scripting runtimes). As you will see, InstallAware has become much more focused on what it can do for Windows Administrators (not just developers)...
There are a number of cool samples projects included that give you a good idea of how InstallAware aims to stand out from its competition: for example there are sample projects for user feedback, online user authentication, serial validation, MS SQL Server connections, Multi-Lingual setups, saving web downloads, multiple instances and DIFx Driver Installation.
The sample projects open with a Welcome tab and a project tab, the default view is the MSIcode view which may seem a bit overwhelming on first launch. However, if you choose the Visual view from the tab at the bottom left of the screen youå€¤l see a very friendly visual view.
The DIFx Driver Installation project is a good one to start with because it is does a rather good job of showing you what your setup can be capable of. As with several functions that can normally be a challenge when working with MSI setups, driver installation is something most would love to see made easy. I'll get more into what other kinds of unique actions are provided by InstallAware later, but for now I want to step back and take a broader look:
If you have the demo installed, you can follow along, but it is quite easy.
Click the "new" button from the toolbar (first one on the left) and choose "DIFx Driver Installation from the list of samples displayed. Give it any name or path you want, but for testing purposes, the default "My Sample Project" works just fine.
Build the project by choosing build from the toolbar (or menu bar under "Project).
Click the "Run current project without debugging" button from the toolbar which appears as a red explanation point (also located under the menu bar under "Run").
The setup installs, but you'll see it runs more like an application (that runs as a MSI) than a typical setup. You are presented with the dialog shown here, where you can install the driver and then install the "Virtual Toaster Device". Obviously, this is a sample driver with sample hardware available for demonstration purposes (a rather clever way for InstallAware to show off).
From here, choose Install Virtual Toaster Driver, click next and the driver installs. When done, you are brought back to this same dialog.
Choose "Attach Virtual Toaster Device" and Windows will detect the new device and install the driver (so you can confirm it works).
When you are done playing, choose "Unplug", "Uninstall" and finally "Remove" to clean up.
Note: you will also notice that along side the "Run current project without debugging" button is a simple "Run Current Project" button. This runs the project with the built-in debugger, which has the code view scroll to highlight the current portion of the script being executed as the installation takes place. While other solutions offer a debugger, I really like how InstallAware puts it in the forefront as part of its normal operation (as opposed to a separate view or even a separate tool).
The Visual View
You'll see right away that the IDE is excellent, both simple and nice to look at. The layout is logical and similar to other setup authoring tools.
I did find the file view a bit hard to navigate as it shows all the folder properties as they would be referenced in the MSIcode view, for example: $TARGETDIR$ is where most of my files will typically go. While I liked this approach, I did find it hard to find my files with so many empty folders present in the tree. While it was helpful that the tree appeared fully expanded by default, an option to hide those folders that do not include current file references would be welcome here. The registry view was similar, but with actual registry paths instead of property names, there were far less folders in the tree to examine.
Ever messed with custom actions to run an executable at some point during the installation? It is not a trivial task and takes some learning to get comfortable with, but even those that think they know custom actions quite well will be happy to have this little gem at their disposal. As an Advanced Option you have the ability to easily specify an executable you want to run, you can run it before install, after install, before uninstall, after uninstall or from the finish dialog- and it is as easy as one simple form.
Still not impressed? How about handling driver installations? This is another task that can prove a time-consuming and painful operation and it is another that InstallAware offers a single simple dialog to address. An example of the results was demonstrated in the DIFx Driver Install sample project, but actually performing the task in your MSI is just about as easy as it gets. Editing security? You can very easily set security on files, folders, shares, registry keys, services and printers with the "Set Access Control" feature.
Even things you may have not even thought about doing with your setup are included like Scheduled Tasks which allows you to configure tasks to run on the target system using Windows Task Scheduler as part of your setup. You can use Authenticode Signatures to sign your setup executables. You can employ something called “Web Media Blocks” which allow you to build a self contained installation which can obtain required runtimes from the Internet as part of the download (if they are unavailable). The list goes on and on!
There is also something InstallAware refers to as Creatives which are setup elements that allow you to add a bitmap to display as a splash screen during setup initialization. You can even add an html file to provide interactive content while the installation takes place. As an admin, you may not need these features, but you cannot deny they are cool capabilities; you can even add flash content for the user to see (and even interact with) during installation.
InstallAware also includes an update client, which I sometimes find annoying, but in this case it is very easy to disable and if you want to keep up to date- the interface and options match Windows Update almost exactly so there is no learning curve and configuring it is very simple. Running as a service, it does request a username and password when first configured. If you like it too, you may be happy to hear that this is actually a feature of InstallAware that you can take advantage of in your own setups (at no extra charge).
The MSIcode View
The code is remarkably simple and easy to follow. While you could probably become very familiar with its scripting language, you really don’t need to. There is a list of drag and drop script commands that make the job easy by prompting you with a simple form to fill in the details of the command when you drag it into your project (see list at right).
InstallAware Customization Options
As a result of how InstallAware operates, transforms are not supported. It instead provides other ways to custom install packages in InstallAware. Naturally when we are talking about transforms, we are talking about customizing vendor MSI (after all, if it were a package you created you could manipulate it directly or by customizing variables from the command line). However, if you want to implement the powerful features of InstallAware in all your packages you can: While there are certainly many possibilities, the best is to have your InstallAware package "shell" to a vendor provided setup. This allows your MSI to run the vendor-provided MSI and allows it to run natively as part of a larger setup. This method even natively captures and displays the progress, questions, and errors of the "shelled to" setup. It even suppress the external user interface, to provide a single, "master" install wizard (though you will probably be pushing yours silently). This Un/Install MSI Setup command provides you with full access to the installation command line of the MSI that you are shelling to so you can pass any command-line customization you wish. Of course, the Un/Install MSI Setup command can also maintain/repair an existing installation, as well as remove it. Anything you could pass on the MSI command line, you can pass here.
For customization of an existing MSI you created with InstallAware, you'll be happy to know that every variable is exposed as a public property so it can be overridden from the command line using the form VARIABLE=VALUE.
Finally, if you have repackaged MSI setups (that you created, not one from a vendor) you can very quickly very quickly import them using the Database Import Wizard to create a InstallAware project.
I gave PackageAware a spin and as you may have guessed by its name, this is the suite's repackaging utility. It very kindly recommended running it as a stand-alone utility on a clean machine – and even recommended using VMWare or Virtual PC to optimize the capture process. To help enforce this concept, InstallAware Studio Admin actually opens the folder where this single executable utility sits instead of running it directly in the IDE.
The PackageAware for InstallAware utility presents a simple wizard and gives you the opportunity to specify what files and registry keys to exclude and what registry root keys you wish to include. Naturally, the defaults are extensive and will suit the needs of most users.
The system is scanned and shows you a count of registry values or files found, the total elapsed time and even a constantly updated rate of speed with which it is progressing in the form of how many files/registry entries per second (see image at right). Even on my relatively slow virtual machine the scan was perhaps the fastest I have seen. It completed quickly, and while the competing tools don’t provide this kind of information for comparison the numbers I saw were registry entries at up to about 6000 registry values per second and files as fast as 5000 per second.
Touted as a separate utility for running on another system, I was not surprised the wizard ended with saving a project file (*.mpr) which was not automatically opened in PackageAware. So it is by design that the packager is not not tightly integrated with the InstallAware IDE. When moving packages and sources from your test system to an InstallAware system, you can use the Refactor Paths tool to update paths in the captured project, if you choose to move the project files. If you are more comfortable creating packages directly on the local system as many other tools do, you can simply install InstallAware on the capture system.
All in all, InstallAware should have the competition watching closely. Just one or two of these features may be reason enough for many to make a switch, but more so is the simple focus of the tool. While InstallAware studio does not provide tools for scanning patches, detecting and resolving conflicts between packages, and package management; these can often become features that often go unused. Some competing tools have become so cumbersome and bloated that they are requiring some pretty hefty requirements (such as SQL and IIS). So, for those looking to develop powerful MSI packages without the need to spend months getting to know the Windows Installer SDK, InstallAware is possibly the best choice I have seen.
There are four editions available, from $199 to $1499 with a 33% discounts if you currently use InstallShield/ZeroG (Macrovision) or Wise (Altiris) products. A 30 day evaluation and pricing can be found here: http://www.installaware.com/buy-store.htm