Next Magic Inc.

- The Ultimate Internet -

 
トップページ 技術情報 インストーラ開発 インストーラFAQ インストーラFAQ ネクストマジックでのインストーラの開発スタイルは?

印刷

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

Answer

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

  • 使用ツール: InstallShield、Windows Installer、Inno Setup
  • インストーラ単体で行えない処理を行う場合: C++、C#などでカスタム機能を実装。
  • インストール対象: 一般的なアプリケーションおよびデバイスドライバ

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

  • InstallShiled=オーサリングツール
  • MSI=「ロールバック」「リファレンスカウント」が実現出来るエンジン
  • InstallScriptやMSIのスクリプト=若干のロジック。主に下記ライブラリの呼び出し
  • C++/C#のライブラリ(自作)=概ねのロジック、カスタム機能の実装。

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

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

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

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

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