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