1

コンピューター プログラミングの経験が「豊富」なコンピューター エンジニアリングの学生として、私は軽く言います。

Java (ゲーム エンジン/ゲーム)、C (または任意の C バリアント) (アプリケーション)、PHP (オンライン スクリプト/データベース プログラム)、Javascript (UI) などのプログラムを作成するときはいつでも.プログラムの「インストール」が何をするかを完全に理解しており、それを行う必要はありませんでした。

以前の調査から、プログラムをインストールするとレジストリに書き込みが行われることがわかりましたが、なぜこの複雑なプロセスが必要なのですか? プログラムがインストールされると、実際に何が起こるのでしょうか? 実行可能ファイル (C の .exe / Java の .jar ファイル) を作成できるのに、なぜこれを行うのですか?

スクリプト言語に関しては (私は主に php を知っているので、その例に固執します)。「スクリプトのインストール」または「プラグインのインストール」と聞こえます。実際には、スクリプトをインストールすることは、スクリプト/html フォーム/javascript/etc を含むフォルダーのグループをサーバーにコピーするだけではありませんか?

この主題または同様のトピックに関する説明、リンク、および個人的な知識をいただければ幸いです。できるだけ多くのことを学ぼうとしますが、常にそれ以上のものがあります。

4

1 に答える 1

2

非常に一般的な答えを言うと、インストールとは、プログラムが実行できるように完全にセットアップされていることを確認する手順です。(多少同じ定義を使用するウィキペディアのページもあります)。すべてのインストール タイプの完全かつ正確な要約を提供しようとするつもりはありませんが、一般的な概要を生成しようとするだけです。

最終的には、すべてが cpu コマンドによって制御されます。そこにたどり着くには、翻訳を行う必要があります。それに加えて、通常の状況では、カプセル化環境 (OS) があります。それらの間に、ドライバーなどへの依存関係がある可能性があります。

Windows/Unix/etc であれ、OS は私たちのために存在するので、直接のハードウェア ステアリングについて心配する必要はありません (このシナリオではとにかく)。 OS。OS 上で直接、または .Net/Java (Apache for PHP) などのフレームワークを介して

これまでのところ既知の概要ですが、ここで話しているインストールの種類のパラメーターを設定しました:)

従来の C では、言語は最初に、OS によって解釈できる一連の命令にコンパイルされました。あなたが言うように、インストールは必要なく、プリコンパイルのみでした。Java/.Net では、フレームワークが既にインストールされているため、コンパイルされた中間言語とすべての参照はフレームワークによって処理されます。Javascript などのブラウザ言語は、ブラウザで解釈されます。ブラウザ自体はインストール済みなので、インストールは不要です。PHPスクリプトも解釈されます。ほとんどの場合、Apache を使用しますが、個別にインストールする必要はありません。もちろん、batches/vbscript/etc などの他のスクリプト言語にはすべて、独自の OS インタープリターがあります。

レジストリへの書き込みについて読んだときに私を引き起こしたポイントを理解するために、da da da dum DLL Hellについて言及しています。リンクされたウィキペディアのページでは、dll で発生した問題について説明していますが、主にレジストリの書き込みへの橋渡しとして言及したいと思います。インストールでレジストリへの書き込みが必要になる最も一般的なケースの 1 つは、dllを登録することです。別のセット (.dll) が OS によって認識されていない限り、別のセット (.dll) の一連の関数を使用する一連の実行 (.exe) を単純に持つことはできませんでした。dll を認識して使用できるようにするには、登録する必要がありました。これはコマンド プロンプト (私の記憶が正しければ regsrv32) から実行できますが、エンド ユーザーの場合は、インストール プログラムがこれを処理します。

要するに、インストール プログラムは、プログラムを実行できるように環境を準備します。プログラムが特別な準備なしで技術的に実行できる場合でも、インストール プログラムはデスクトップ ショートカットを設定したり、メニュー オプションを追加したり、ファイル タイプをリンクしたりできます (Windows の別のレジストリ設定)。

于 2012-07-02T07:57:25.920 に答える