印刷

ネクストマジックでのインストーラの開発スタイルは?

Answer

このFAQに載せるものではないかもしれませんが・・・下記のような開発スタイルを取っています。

特に、InstallShiledを用いる場合は、つぎのとおりです。

まずInstallShieldがオーサリングツールというのは、インストールすべきファイルを「MSIに記憶させるツール」として使っているためです。

つぎにMSIエンジンが持つ「ロールバック」機能とは、インストール途中でキャンセルが出来る(インストールが無かったことにしてくれる)機能です。インストーラには必須の機能ですが、ロールバックを自前で実装するのはとても手間がかかります。しかしMicrosoftはMSIエンジンという優秀なエンジンを開発してくれたので(感謝)、MSIにロールバックを任せることで、残りのロジックに注力出来る様になりました。当社ではMSIを推奨し使っています。

「リファレンスカウント」もMSIが持つ大切な機能です。多くの商品をインストールするとき、共通するDLLなどは二重にインストールされませんが「私たちもここを参照をしていますよ!」という印がつけられます。これがリファレンスカウントです。このカウントが0になったら、このDLLは誰からも利用されていないためにアンインストール可能となります。アンインストールが失敗してリムーバーに頼る必要があるパターンも、このリファレンスカウントがらみの場合が多いです。

インストールプロセスは、InstallScriptやMSIのスクリプトで書けるレベルのものであれば、それらのスクリプトを使用しています。
しかし当社が請けるインストーラは、たいてい一筋縄ではいかないため、C++やC#のライブラリを自作し、InstallScriptやMSIのスクリプトからそれらのライブラリを呼び出して、殆どを自作ライブラリの中で実行させるような作りとなります。

なお、ORCA(MSIの編集ツール)はめったなことでは使いません。MSIを直接見るときくらいです。