I am about to start a new InstallSheild project. It looks like there are three choices for the project type, MSI, InstallScript, and InstallScript-MSI. How should I choose which one to use?
Basic MSI:
This is the standard installation type. It uses Windows Installer for nearly all of the installation (prerequisites, language selection, and some other things are handled by the setup.exe). An MSI is a database with many tables that describe how the installation works. The number of tables can be a little overwhelming at first, but InstallShield does a good job of abstracting it; most of the time, you don't need to directly edit the database tables.
This is the most common type of installation, so there is a lot of information available about it. The InstallShield forum is a great source of information. Also, many installations use MSIs, so if you understand them, it will be easier to understand what other installations do (eg. if you need to install another manufacturer's MSI as part of your installation). Silent installations can be accomplished easily with a command line argument.
Unfortunately, since the MSI controls the installation through database tables, there is a bit of a learning curve. If you do end up having to directly edit the MSI tables, it can be confusing at first since there are many tables and some of their purposes and interactions are subtle. Also, creating and sequencing dialogs is more difficult in an MSI since all the interactions need to be controlled by tables. Custom MSI dialogs can be created, but only in C++.
I would recommend this project type for most uses.
InstallScript:
These projects use an installation script to install software instead of Windows Installer. Since the installation script is a linear program, it can be easier to understand how it works. One advantage this project type has is that creating and sequencing dialogs is easier. Also, InstallScript dialogs can be skinned and look a little better than MSI dialogs. Running a silent installation requires a separate "response file" to control the UI. I wouldn't recommend using this project type unless you have a specific reason to (eg. if you have to very precisely control the behavior of the installation in a way not supported by MSI).
InstallScript MSI:
This is essentially a Basic MSI project that uses InstallScript to control the UI and an MSI to control the actual installation. It has the advantage of using an MSI to control the installation, but working with dialogs is easier. It still requires a response file to control the UI during a silent installation. If you don't care about silent installations or have a complicated UI dialog sequence, you may find this project type useful.