ホームページ » の仕方 » すべてのアプリケーションが移植可能ではないのはなぜですか?

    すべてのアプリケーションが移植可能ではないのはなぜですか?

    携帯アプリに恋をしたことがある人には、何も言わないでください。 すべて アプリケーションポータブル?

    本日の質疑応答セッションでは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの1部門であるSuperUserのご好意により、当社にお越しいただきます。.

    質問

    SuperUserの読者Tomは、ポータブルアプリケーションが提供するクリーンな組織を気に入っていて、すべてがポータブルではない理由を知りたいと思っています。

    私は最近私のWindowsマシンにインストールするものをずっと少なくしようとしています(私はインストーラを嫌いです - プログラムが何を置くかを知る必要があります…)、代わりにポータブルまたはスタンドアロンバージョンのアプリケーションを使うことを選びます.

    私はWindowsパーティションとは別のドライブの「プログラム」ディレクトリにそれらすべてを入れているので、再インストールするときはいつでも、私は最小限の労力ですべての私のアプリケーションを利用でき、プラス面では、きれいなセットアップが得られる.

    OfficeやCreative Suiteのようなアプリケーションでは、私のシステム全体に何千ものランダムなライブラリやツールが投入されるという、非常に長いインストールプロセスを経る必要があります。.

    Windowsアプリをインストールする必要があるのはなぜですか。どうして私たちはPhotoshopをOSXのあるフォルダにドラッグして動かすことができないのですか?他の誰かがポータブルアプリに集中していますか、それとも私はすべてについてOCDになっていますか?

    私たちは確かに携帯アプリのファンであり、物事の根底に着きたいと思います.

    答え

    SuperUserの寄稿者であるDavid Whitneyが、なぜ多くのアプリが移植性がないのか、そしてWindowsがある種の移植性のない取り決めをどのように実施しているのかについて、いくつかの洞察を提供します。

    インストーラーは長年の進化の結果であり、(単純化された)少しの歴史はなぜ彼らが彼らがしたことをするのか理解するのを助けます…

    Windows 3.1モデルでは、アプリケーションごとにconfig.ini形式の設定ファイルが推奨され、重複を防ぎディスクスペースを浪費することを防ぐために、共有ライブラリがシステムフォルダに保存されていました。.

    Windows 95は多くの設定ファイルを置き換えるアプリケーション設定のための中央ストアを許可するレジストリを導入しました。さらに重要なことに、Windowsの設定は同じ場所に保存されていました.

    アプリケーションが自分自身の後でクリーンアップしていないためにレジストリが肥大化しました。同じ共有ライブラリの複数のバージョンが互いを上書きした結果としてDLLの地獄が起こった.

    .NETはapp.configの概念を導入しました(ほとんどのiniファイルは2をマークしました。今回は、もう少し構造を節約した開発者が手動パーサーを書くのに時間を浪費する)。 DLLの地獄を防ぐための試みとしてGACが共有アセンブリをバージョン化するために導入されました。.

    Windows XPおよびその他Vistaでは、MicrosoftはProgram Filesにインストールされているアプリケーションを使用してローミングプロファイルと簡単な移行(プロファイルのコピーのみ)を可能にするために、ユーザーデータと構成ファイルを単一の標準ロケーションに格納する場所としてユーザースペースを定義しようとしました。.

    それは、「Windowsのアプリケーションはある場所に存在し、それらの共有依存関係は別の場所に存在し、ユーザー固有のデータは別の場所に存在するように設計されている」からです。.

    …そして、ユーザーアカウントを設定し、セキュリティ権限を設定および確認し、アップデートをダウンロードし、そしてWindowsサービスをインストールする必要がある前に…

    xcopyは「単純なケース」であり、確かにすべてに最適というわけではありません。.

    ポータブルなすべてのもののファンにとっては残念なことに、多くのアプリ、特にOfficeのような大規模なアプリは、オペレーティングシステムにしっかりと固定され、分散されたままです。.


    説明に追加するものがありますか?コメントの中で消してください。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.