標準“インストール”実際に?
-
06-07-2019 - |
質問
私は多かれ少なかれ趣味のプログラマーであり、.NET ClickOnceの世界でコーディングの面で成長しています。
"インストール"プログラム、実際に何が起こりますか?!
また:exeから実行される小さなアプリ/ツールもあります。ほとんどのプログラムに派手なインストールプロセスが必要なのはなぜですか?長所、短所、長所と長所は何ですか?短所?通常、インストールは必要ですか、それとも標準的な方法に似ていますか?
追加の質問に対する謝罪。私は単純な英語の多かれ少なかれ素人の主な要因の説明を望んでいます。
解決
Windowsの世界で標準的な慣行になった多くのレガシーな理由を本当に見ています。
最初に、いくつかのコントラストがあります。これは、常にこの方法とは限らないためです。 「アプリケーション」 Mac OS Xの単純なディレクトリは、内部に特定の構造を持ち、 .app
拡張子が付いた名前のディレクトリです。アプリケーションのインストールは、アプリケーションフォルダにアプリケーションアイコンをドラッグするだけで簡単です。アンインストールには、ごみ箱にドラッグする必要があります。それだけです。(通常)高級なインストーラーは必要ありません。
Windowsでは、アプリケーションは通常、「登録」する必要がある独立したコンポーネントから構築されます。これには、インストーラープログラムがWindowsレジストリにいくつかの断片を書き込み、コンポーネントの場所をWindowsに指示することが含まれます。はい、アプリケーションはおそらくどこにあるかを知っているはずです(それらはすべて同じ場所にインストールされているため)
通常、Windowsのインストールプログラム:
- ファイルのコピー
- コンポーネントを登録します
- セキュリティ権限を設定します(適切な場合)
- [スタート]メニューやデスクトップにアイコンを追加します
- より多くのものをレジストリに書き込み、Windowsにプログラムを「プログラムの追加と削除」に追加するように指示します
他のヒント
プログラムは、動作し、競合するすべての製品が失敗するようにコンピューターを変更しようとします。 Windowsでは、次のことを意味します。
- 遅くなり、壊れたエントリでいっぱいになるまで、レジストリ内の任意のキーを変更します
- DLLをソフトウェアで使用できる単一の古代バージョンに置き換える
- できるだけ多くの場所にできるだけ多くのファイルを展開する
- アンインストールスクリプトを作成して、OSを再インストールしなくてもユーザーがソフトウェアを削除できるという錯覚を維持します。まれに、ユーザーがこのスクリプトを実行しようとする場合、他のアプリケーションで使用される可能性のある" The file ....本当に削除しますか?はい/いいえ/多分/任意の回答/すべての回答が正しいこと"
- 不明瞭な場所にフックをインストールして、コンピューターの起動時にソフトウェアが実行されるようにします。起動プロセスが遅くなる場合がありますが、ソフトウェアはすぐに起動するため、支払うのは少額です...あなたのために。
- 時間がかかるが誰もあなたが何をするのか分からないようなあいまいなことをする(「セットアップはインストールを準備しています」は15分間何をしますか?)
- 十分なディスク容量があるかどうかを確認しますが、32ビット整数を使用して、1 TBのディスクにインストールできないことを確認します。
-
重要なタスクは、インストールで失敗し、エラーを出力することです:" Installation failed。これは、ウイルス対策ソフトウェアがインストールされているためである可能性があります。無効にしてからもう一度お試しください。"これにより、ユーザーがアンチウイルスに不信感を抱くようになります(特に、インストーラーの不明瞭なバグがトリガーされなかったため、2回目の実行中にインストールが成功した場合)。いまいましいものもアンインストールします。
世界中のウイルス作成者も人です!スパムは、インターネット上のトラフィックの大部分を補います。これは、それが重要であり、地球上で最大のコミュニティの一員になりたくないということを意味するはずです。さらに、この方法で大金を稼ぐことができます。必要なのは、弱い良心や犯罪エネルギーです。
-
インストーラーの非常に重要な部分は、レジストリキー
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ S-7-9-23-64738-1349283462-3754093625-を増やすことです。 4491 \ IsYourWindowWideEnough \ NotGivenUpYetHuh \ GoAway \ ImportantSystemInformation \ Letスペースの処理方法をご覧ください\ DamnIGottaStopSincePathsCanHaveOnl \ ReinstalCtr
この重要なシステムカウンターは、システム全体を再インストールするという強い衝動を感じるまで、ユーザーにとって不安定な錯覚を作り出すのに役立ちます。これは、プロのIT業界がサポート時間を販売し、新しいコンピューター、より多くのRAM、より大きなハードディスク、または新しいWindowsバージョンを販売するのに役立ちます(それらはより良いものである必要があります ?)
注:このテキストを真剣に考えている場合は、専門家の助けを求めてください。
「空想」を使用する理由インストールプロセス
- インストールプロセスを記録する そのため、再生(修復)または 元に戻す(アンインストール)
- 単純なファイルコピーを超えたアクションを実行するには(レジストリキーの作成、コンポーネントの登録、他の任意のアクションの実行
"標準"ほとんどのインストールでのオプションは、「Program Filesのような標準の場所で、通常必要なすべてのビット」です。カスタマイズせずに、おそらくいくつかのエキスパートレベルの機能を有効にせずにインストールします。
ウィキペディアは、典型的なインストーラーが以下を作成または変更することを教えてくれます。
- 共有および非共有プログラムファイル
- フォルダ/ディレクトリ
- Windowsレジストリエントリ(Windowsのみ)
- 構成ファイルのエントリ
- 環境変数
- リンクまたはショートカット
したがって、プログラムでこれらの変更の1つ以上が必要な場合は、そのジョブを実行するインストーラーを作成する必要があります。
インストールするプログラムによって異なります。 「インストール」単純に(比較的小さな)実行可能ファイルをディレクトリにコピーすることから、共有ライブラリのセットアップ、パッチレベルチェック(SP2以降で実行するように設計されています-SP2以降がありますか?)現在のユーザーまたはすべてのユーザーに対して。それらのほとんどは、後で簡単にアンインストールできるように、パッケージマネージャーでインストールを登録します。
インストーラーは、便利で自給自足のユーザーインターフェースを介して、アーカイブ内に含まれるソフトウェアインフラストラクチャの複雑な部分を展開するプロセスを抽象化します。
このUIは、グラフィカルなものでも、unixシェル(bashなど)などのコマンドラインで出力されるテキストに基づくものでもかまいません。グラフィカルインストーラの場合、ほとんどの場合、いわゆるインストールブートストラップが使用されます。後者の場合、インストールスクリプトはbashスクリプト、Microsoftバッチスクリプト、またはコマンドラインで実行されるその他のスクリプト言語です。
最も単純なケースでは、アプリケーションは単に実行可能ファイルであり、オペレーティングシステムはファイルを実行するために何をすべきかを知っています。アプリケーションファイルは、 1つのアーカイブに圧縮されたサブフォルダーとその他の補助ファイルがあるフォルダーに存在する場合があります。この場合、インストーラーは必要ありません。
複雑なソフトウェアの場合、ソフトウェアプラットフォーム全体および基盤となるオペレーティングシステムインフラストラクチャとの緊密な統合が望ましい場合があります。たとえば、ソフトウェア製品の著作権を行使する場合などです
Windowsの多くのインストーラーは、 / e
または / extract
フラグを提供します。例えば setup.exe / e
:インストーラーがインストールスクリプトを実行せずにアーカイブの内容を抽出できるようにします。
最近、それを実行する必要がありました。
マインドセットのシフト
基礎となるソフトウェア資産がどれほど単純であっても、インストーラーはほとんどプロフェッショナルソフトウェアを提供するための標準になりました。コンピュータに精通したユーザーが増え、アプリケーションをあるデスクトップから次のデスクトップに移行したいという要望により、多くの場合、単純なアーカイブで提供されるポータブルソフトウェアの人気が高まっています。
(インストーラーに費やした合計時間はわかりませんが、間違いなく数日です。)
インストーラーが処理できるタスクは次のとおりです。
- 解凍(多くの場合、エキゾチックな高圧縮アーカイバを使用)
- システムのハードウェア要件の確認
- 十分なハードディスク容量の確保
- ソフトウェアプラットフォームのランタイム要件(「再配布可能ファイル」など)の確保
- 新しいソフトウェアアップデートの確認
- リモートリポジトリからソフトウェアをダウンロードする
- プログラムファイルとフォルダの作成および/または更新
- 構成ファイル、レジストリエントリ、または環境変数を作成します
- ソフトウェアドライバーのインストール、デバイスのマウントまたはマウント解除
- インストール手順の説明、リンク、ショートカットの作成により、日常のユーザーのアクセシビリティを高めます
- ブックマークなどを使用して独自のソフトウェアを宣伝する...
- ユーザーがインストール中にソフトウェアのキーポイントをスライドごとに提示して、ソフトウェアを実際に起動するインセンティブを作成する
- ソフトウェアのバンドルにより追加の収益を創出
- カーネルモジュールを構成し、自動的に実行されるコンポーネント(デーモン、Windowsサービスなど)
- ソフトウェアの自動パッチ適用
- フォルダ、ファイル、およびユーザーのアクセス許可の設定
- UUID参照を作成してソフトウェアをインストールインスタンスに結合し、移植性を防止する
PS:他のポイントについて考えられる場合は、お知らせください。それらを組み込みます。