web-dev-qa-db-ja.com

スタンドアロンの実行可能ファイルとインストールされた実行可能ファイルの違いは何ですか?

少なくともWindowsでは、静的にリンクされた実行可能ファイルを直接ダウンロードして直接起動するか、独自のプログラムを作成して(動的にでも)インストールせずに実行できることに気づきました。

それが私の要点です...インストールプロセスの目的は何ですか?たぶん Windowsレジストリ のほかに。ただし、実用性と使用目的のために、単一の独立したスタンドアロンプ​​ログラムを実行し、不揮発性ストレージに保存し、それが搭載されているデバイスのファイルシステムを介してアクセスし、OSで実行することができます。では、事実上あらゆる規模の多くの優れたプログラムがインストール構成を経由せずに完全に機能する場合、この「インストール」ビジネスの何が重要なのでしょうか。それは私を少し困惑させます、そしてデータベースまたは他のメタデータ/アクセス構成システムを除いて、後者(インストールされた実行可能ファイル)がスタンドアロンと同じように機能し、機能する場合、ここで実際の違いは何ですか?

ここでは、インストールされていないプログラムとインストールされていないプログラムで気づいていない違いはありますか?

PS:これは、Windows OSだけでなく、同様の機能を実装するものすべてに適用する必要があります。

17
user279884

プログラムがスタンドアロンの実行可能ファイルではなくインストーラーとして提供される理由はいくつかあります。

ファイルサイズの問題

  • 多数の大きな依存関係を持つプログラムは、依存関係をダウンロードして共通の場所に配置するWebベースのインストーラーをバンドルして、複数のプログラムで共有できるようにすることができます。たとえば、DirectXは非常に大きなライブラリです。 DirectXに依存するシステム上のすべてのプログラムが、DirectXランタイム全体をバンドルしただけの場合、かなりのスペースを消費します。 4 TBハードディスクの場合、これは問題にならないと思われるかもしれませんが、SSDは容量がかなり小さく、ウルトラブックで一般的に使用されるようになります。ストレージはわずか64 GBです。もちろん、DirectX以外にも多くの共有ライブラリがあります。

  • 非常に大規模で継続的に更新されるプログラムは、多くの小さなファイルのコレクションとして配布するのが最適です。ランチャーまたはアップデータプログラムは、インターネットで更新をチェックし、更新がある場合は必要な変更のみをダウンロードします。すべての大きなプログラムが単一のモノリシック実行可能ファイルとして出荷された場合、ファイルロックのためにディスク上の実行可能実行ファイルにパッチを適用することがほぼ不可能であるため、パッチプロセスで実行可能ファイル全体を再ダウンロードする必要がある可能性が非常に高くなります。また、アップデーターはそのファイルの場所を知る必要があるため、そのディレクトリパスをレジストリ内の既知の場所に保存することがよくあります。

ユーザーの利便性に関する懸念

  • Visual StudioやMicrosoft Officeなどの非常に大規模なプログラムのインストーラーを使用すると、ユーザーが特定の機能のインストールを選択しないようにすることができます。これには3つの潜在的な利点があります。インストーラーがWebダウンローダーの場合、ダウンロード時間と帯域幅の消費を削減できます。また、ユーザーのマシンの「混乱」と「膨らみ」を減らし、スタートメニュー/デスクトップショートカットを減らし、スタートアッププログラムを減らします。

  • 複雑なプログラムのインストーラーには、多くの場合、ユーザーが使いやすいグラフィカルインターフェイスを使用してインストーラーの一部として設定できる構成オプションが付属しています。たとえば、MySQLまたはSQL Serverインストーラーを参照してください。インストーラーで[完了]をクリックする前に、データベースサーバーを起動して実行するプロセス全体を実行できます。

  • インストーラーは、ライセンスキーなどの必要な情報をユーザーに要求できます。これにより、プログラム自体の設計が簡素化され、プログラムが実行しなければならないことやチェックする必要があることの数が減ります。これにより、ユーザーはonceプログラムが正常にインストールされ、「正常に動作する」はずであるという自信を持つことになります-プログラムを使用するのを妨げる可能性のある「問題」がプログラム内になくなる。

互換性の問題

  • 一部のプログラムは他のプログラムと競合します。これは、ソフトウェアエンジニアリングの単純で残念な事実です。他のプログラムとの競合が判明しているプログラムをインストールする前に、互換性のないプログラムがインストールされていないかどうかを確認するために、まずシステムをチェックすると役立つことがよくあります。そうすれば、ユーザーに警告することができます。たとえば、VMwareとVirtualBoxの以前のバージョンには非常に危険な非互換性の可能性があり、ブルースクリーンの死を引き起こしました。これは、あるプログラムが他の製品によってユーザー用にすでに予約された後、特別な仮想化プロセッサ命令を使用しようとするためです。 。インストーラーなしで単に最終製品をユーザーに提供する場合、互換性のある製品の存在をeveryプログラムの開始時に確認する必要があり、プログラムの開始が遅くなる可能性があります。 。

  • プログラムは、ユーザーレベルではなく、システム全体のレベルでのみインストールできる他のシステムコンポーネントに依存している場合があります。これらの特別なシステムコンポーネントをインストールするには、通常、管理者権限が必要であり、通常、インストーラーを実行する必要があります。

特権の昇格と特別サービス

  • 一部のプログラムは、オペレーティングシステムの機能の変更に依存しており、これらの変更は、何らかの管理者権限でそれらを処理する何らかのインストーラーなしでは簡単に実装できません。たとえば、ドライバーまたはカーネルモジュール(Wiresharkなど)をインストールするプログラムは、カーネルモードコンポーネントを個別のファイルで出荷する必要があるため、実行できませんsimply。絶対的に最善のケースでは、ユーザーに手動でアーカイブを解凍してから、デバイスドライバーのインストーラーを実行する必要があります。サービスは、インストールに管理者権限が必要なもののもう1つの例です。インストーラーソフトウェアは、メインプログラム自体が実行するたびに管理者権限を要求する必要がなく、洗練された方法で管理者権限を取得するのに特に優れています(多くの場合、これは不必要なセキュリティ上の危険にさらされます)。

インストーラーが有用である理由をこれらすべての理由で説明したので、ここでは反対側からのいくつかの観察を示します。

  • 多くのプログラムは、管理者権限を必要とするインストーラーとしてのみダウンロードできるものであっても、インストーラーから強制的に「解凍」して、インストールせずに直接実行できます。他のプログラム、特にオープンソースのプログラムは、 PortableApps によって自己完結型の実行可能ファイルに再パッケージ化されます。 someプログラムをインストーラーから解凍すると、機能が低下したり、エラーが発生したり、その他の問題が発生したりすることに注意してください。

  • Windows以外のオペレーティングシステムでは、ほとんどの場合、ルートを取得しなくても、プログラムをダウンロード(またはコンパイル)して、通常のユーザーとして実行するだけです。オペレーティングシステムのコア部分であるパッケージに関してはいくつかの例外がありますが、ほとんどのユーザーアプリケーションでは、パッケージマネージャーを使用してシステム全体にインストールすることなく、ホームディレクトリで実行できます。 Windowsは、Windowsのほとんどのデスクトッププログラムにインストーラーがあり、通常は他の方法ではインストールできないという、少し特殊なケースです。

  • Windows以外のプラットフォームでも、カーネルモジュールをロードする機能を必要とするプログラムには、カーネルモジュールをコンパイルして正しいディレクトリにインストールする、ある種のインストーラが付属しています。また、プログラムがdaemonであり、システムサービススクリプトを使用して開始される場合は、インストーラーが表示されることも期待できます。 /etc/init.d。このタイプの「シュリンクラップされたバイナリ」は、GNU/Linuxではあまり一般的ではない配布方法ですが、ほとんどのLinuxディストリビューションは、ほとんどのソフトウェアをインストール可能なパッケージの形式で提供します。それぞれのパッケージには、ルートアクセス(管理者アクセス)が必要です。


結論

インストーラーが必要な理由を尋ねました。簡単に言えば、私たちはしません-厳密に言えば、とにかく。 できないアプリケーションの例は、リソース、インストーラーなどのない単一の自己完結型の実行可能ファイルにバンドルされることはほとんどありません。 VMware Workstationが管理者権限を自動的に取得し、ハイパーバイザーカーネルモジュールをディスク上のファイルに書き込み、プログラムの起動時に動的にインストールし、データ内にバンドルされているすべてのリソース(画像、サウンドなど)を出荷できるような複雑なもの実行可能ファイルのセクション。

インストーラーを使用するかどうかは、ソフトウェアプロデューサーが作成する必要がある選択肢です。インストーラーの使用には長所と短所があります。多くのベンダーは、ソフトウェアとして両方をインストーラとして、およびとして配布することを選択していますスタンドアロンバイナリ、または少なくとも解凍して実行できるZipファイル。インストーラーを絶対に必要としないソフトウェアの場合、これは非常に実用的な方法であり、皆を幸せにします。通常、インストーラー以外の形で出荷されないソフトウェアは、インストーラーが必要な特権を取得する最も洗練された方法であるため、それ自体のコンポーネントをインストールするために管理者特権を必要とするソフトウェアです。

個人的には、使用しているコンピューターの管理者権限を持っていないときにプログラムを実行したい場合があるため、インストーラーは日常業務で非常に煩わしいものです。インストーラーを手動で解凍してプログラムファイルを解凍し、それらのファイルを正しく実行するのにかなりの経験があります。ただし、常に管理アクセス権がある自宅の個人用PCでは、ほとんどのインストーラーがデスクトップショートカットを作成するかどうかなどの便利なオプションを提供するため、インストーラーを使用せずに手動で実行する必要があったため、インストーラーは便利で便利だと感じています。

16
allquixotic