このFAQに載せるものではないかもしれませんが・・・下記のような開発スタイルを取っています。
特に、InstallShiledを用いる場合は、つぎのとおりです。
まずInstallShieldがオーサリングツールというのは、インストールすべきファイルを「MSIに記憶させるツール」として使っているためです。
つぎにMSIエンジンが持つ「ロールバック」機能とは、インストール途中でキャンセルが出来る(インストールが無かったことにしてくれる)機能です。インストーラには必須の機能ですが、ロールバックを自前で実装するのはとても手間がかかります。しかしMicrosoftはMSIエンジンという優秀なエンジンを開発してくれたので(感謝)、MSIにロールバックを任せることで、残りのロジックに注力出来る様になりました。当社ではMSIを推奨し使っています。
「リファレンスカウント」もMSIが持つ大切な機能です。多くの商品をインストールするとき、共通するDLLなどは二重にインストールされませんが「私たちもここを参照をしていますよ!」という印がつけられます。これがリファレンスカウントです。このカウントが0になったら、このDLLは誰からも利用されていないためにアンインストール可能となります。アンインストールが失敗してリムーバーに頼る必要があるパターンも、このリファレンスカウントがらみの場合が多いです。
インストールプロセスは、InstallScriptやMSIのスクリプトで書けるレベルのものであれば、それらのスクリプトを使用しています。
しかし当社が請けるインストーラは、たいてい一筋縄ではいかないため、C++やC#のライブラリを自作し、InstallScriptやMSIのスクリプトからそれらのライブラリを呼び出して、殆どを自作ライブラリの中で実行させるような作りとなります。
なお、ORCA(MSIの編集ツール)はめったなことでは使いません。MSIを直接見るときくらいです。