インストーラーは、便利で自給自足のユーザーインターフェイスを介して、通常はアーカイブ内に含まれているソフトウェアインフラストラクチャの複雑な部分を展開するプロセスを抽象化します。
このUIは、グラフィカルにすることも、UNIXシェル(bashなど)などのコマンドラインに出力されるテキストに基づくこともできます。グラフィカルインストーラーの場合、ほとんどの場合、いわゆるinstallation-bootstrapperが使用されます。後者の場合、インストールスクリプトは、bashスクリプト、Microsoftバッチスクリプト、またはコマンドラインで実行されるその他のスクリプト言語です。
最も単純なケースでは、アプリケーションは単に実行可能ファイルであり、オペレーティングシステムはファイルを実行するためにファイルをどのように処理するかを認識しています。アプリケーションファイルは、サブフォルダやその他の補助ファイルを含むフォルダにあり、1つのアーカイブにパックされている場合があります。この場合、インストーラーは必要ありません。
複雑なソフトウェアの場合、たとえばソフトウェア製品の著作権を強制するために、ソフトウェアプラットフォーム全体と基盤となるオペレーティングシステムインフラストラクチャとの緊密な統合が望ましい場合があります。
Windowsの多くのインストーラーは、/e
または/extract
フラグを提供します。たとえばsetup.exe /e
、インストーラーがインストールスクリプトを実行せずに、アーカイブの内容を抽出できるようにします。私は最近それをする必要がありました。
考え方の変化
基盤となるソフトウェア資産がどれほど単純であっても、インストーラーはプロのソフトウェアを提供するための標準になりつつあります。コンピュータに精通したユーザーの数が増え、アプリケーションをあるデスクトップから次のデスクトップに移行したいという要望により、多くの場合単純なアーカイブで提供されるポータブルソフトウェアの人気が高まっています。
(インストーラーに費やした合計時間はわかりませんが、間違いなく数日程度です。)
インストーラーが処理できるタスクは次のとおりです。
- 開梱(多くの場合、エキゾチックな高圧縮アーカイバを使用)
- システムハードウェア要件の確保
- 十分なハードディスク容量を確保する
- ソフトウェアプラットフォームのランタイム要件の確保(例:「再配布可能」)
- 新しいソフトウェアアップデートをチェックする
- リモートリポジトリからソフトウェアをダウンロードする
- プログラムファイルおよびフォルダの作成および/または更新
- 構成ファイル、レジストリエントリ、または環境変数を作成します
- ソフトウェアドライバをインストールし、デバイスをマウントまたはアンマウントします
- インストール手順の説明、リンク、ショートカットの作成により、日常のユーザーのアクセシビリティを向上させます
- ブックマークなどを通じて独自のソフトウェアを宣伝する...
- インストール中にソフトウェアのキーポイントをスライドごとに提示することにより、ユーザーが実際にソフトウェアを起動するインセンティブを作成します
- ソフトウェアのバンドルを通じて、追加の収益を生み出す
- カーネルモジュールと自動的に実行されるコンポーネント(デーモン、Windowsサービスなど)を構成します
- ソフトウェアの自動パッチ
- フォルダ、ファイル、およびユーザーのアクセス許可を設定する
- ソフトウェアをインストールインスタンスに結合し、移植性を防ぐためのUUID参照を作成する
PS:他の点について考えられる場合は、私に知らせてください。私はそれらを取り入れます。