[Ed. Note] Sinan Karaca is the CEO of InstallAware, a small ISV founded in 2003 by InstallShield alumni. Sinan did a great presentation at the European ShareWare Conference earlier this month. I was so impressed with how many features InstallAware included that really addressed the needs of micro-ISVs who need bulletproof installs but don’t want to spend 50% of your development time being driven insane by InstallShield, I asked him to make his pitch here to micro-ISVs.
If you try InstallAware Express, Developer, Studio or Studio Admin and like it, Sinan has made available a 10% discount to mymicroisv.com readers: enter the discount code NOHEADACHE – this takes 10% off any order.
—————
By Sinan Karaca

Do developers actually need an MSI (Windows Installer) setup?

Yes. There are various reasons for this:

  • It is required for Microsoft logo certification. You cannot get certified for the Designed for Windows XP / Vista logos unless you have an MSI installer. Getting the Designed for Windows logo makes a quality statement about your product; it is a vote of confidence in your work. It’s not hard to get this logo, you just need to follow a basic set of guidelines and have an MSI installer.
  • Most system administrators won’t even consider purchasing products that aren’t available with an MSI installer. This is because only MSI setups can be distributed silently and automatically on corporate networks with thousands of computers without paying any per-seat distribution fees that come with distribution systems for non-MSI (EXE) installers. Having an MSI installer lets you penetrate large enterprises to whom you can sell thousands of licenses – why lock yourself out of this huge customer base?

What differentiates InstallAware from other MSI authoring tools?

MSIcode Windows Installer Compiler:

InstallAware is based on a drag-drop scripting language called MSIcode:

  • MSIcode is human readable script that spells out what the installer does, and when – using simple commands such as “Install Files c:\my project\*.* to $TARGETDIR$”.
  • MSIcode is unique to InstallAware and protects you from all internal details of Windows Installer. MSI files contain:
    • Hundreds of rows of database entries in many interlinked database tables, which comprise the basic setup structure,
    • Actions and sequences, which determine the order in which setup actions are carried out,
    • Custom code that was built by skilled developers, inside custom-built DLLs that are embedded into the MSI file.
  • InstallAware protects you from all three of these evils. The moment you build an InstallAware project, the InstallAware compiler automatically populates all the necessary database tables, creates the correct sequences, and injects the necessary custom code into the MSI package. This is all without you ever knowing what is going on “under the hood”. While programming skills and a substantial investment of time are normally a must to build MSI packages, InstallAware lets even non-skilled novices to build complex, powerful setups in record time.

Visual Designers that automatically generate and maintain MSIcode:

While most setup authoring tools offer various forms scripting, there are some serious problems with those scripting environments:

  • A new scripting syntax and programming language must be learned,
  • The scripting environment is completely divorced from the visual designers,
  • Any settings that were configured visually (ex: files, registry keys, shortcuts) are practically inaccessible from the script – thus making it very hard to control or customize such actions at runtime.

InstallAware can be thought of as the Visual Basic or C# of setup authoring tools. Similar to these tools which generate code in the background as controls are dragged and dropped on top of forms, InstallAware generates MSIcode in the background as you work in the visual designers. Want to customize anything? Just switch to the MSIcode view and tweak to your heart’s content. At the MSIcode view you get to see, and update, every setup command that was created for you by the visual designers. Switch back to the visual designers, and your latest MSIcode edits are rendered for you visually. This two-way integrated editing allows for:

  • Rapid prototyping of setup projects,
  • Adding intelligence to your setup at the exact point where you need it, and
  • Easy maintenance and customization of complex projects.

Nothing is hard-coded in InstallAware – you can customize the MSIcode view as much as you like:

  • It’s very easy to build applets like CD browsers in MSIcode (sample project provided),
  • InstallAware’s Web Update capabilities were built using MSIcode, a testament to the power and flexibility of this scripting environment.

Powerful Dialog Designer:

InstallAware ships with a state-of-the-art dialog designer that lets you:

  • Use unique Flash and HTML controls as interactive progress billboards to entertain and educate your users – before your application has even installed!
  • Completely customize every aspect of your setup dialogs, to insert any kind of custom fields, graphics, or navigation (you can even consolidate multiple setup wizard screens into a single screen, like the new Microsoft installs),
  • Seamlessly collect information from the setup wizard and painlessly access that information in your MSIcode script,
  • Customize any of the 15 pre-built setup themes (including themes that look just like the Windows XP operating system installer, the Visual Studio installer), or build your own from scratch. Themes in InstallAware are a lot more than just custom colors or bitmaps!

Using the dialog designer lets you gather business intelligence from your end-users in ways not thought possible before:

  • Ask users for information in your setup wizard, not on a web form where they can walk away from a download,
  • When uninstalling, ask users why they are removing your product, right within the setup wizard,
  • Seamlessly submit any captured information as a native part of the (un)installation process.
  • InstallAware lets you engage in an active dialog with your end-users.

Painless Runtime Installations:

InstallAware lets you install many complex runtimes with a single click on a check-box in the IDE:

  • Any runtime dependencies will be automatically included for installation.
  • Troublesome runtimes such as Microsoft SQL Server Express 2005 are reliably installed – and that even includes checking for and installing a specific, named instance.
  • Most runtimes compress 50% better – all at no extra cost or effort to you (this compression benefit also applies to your main application files).
  • Runtimes can be isolated from your main setup, so they are automatically downloaded from the web, only when needed. Your main setup will still be fully functional and install your main application without forcing a web connection.
  • This is called partial web deployment, and the same idea can also be used to separate large parts of your application from your main setup download, to reduce the size of your setup.

[tags] Installers, InstallAware, MSI[/tags]

Write A Comment