すべてのアプリケーションが「ポータブル」ではないのはなぜですか?


45

私は最近、Windowsマシンに「インストール」することをはるかに少なくしようとしています(インストーラーが嫌いです-プログラムがどこに置くかを知る必要があります...)。

それらをすべてWindowsパーティションとは別のドライブの「プログラム」ディレクトリに配置するので、再インストールするたびに最小限の労力ですべてのアプリケーションを使用でき、プラス面ではすっきりとしたきれいなセットアップが得られます。

OfficeやCreative Suiteのようなアプリケーションでは、システム全体にランダムなライブラリとツールが無数に投げ込まれる、恐ろしく長いインストールプロセスを実行する必要があります。

なぜWindowsアプリをインストールする必要があるのですか?PhotoshopをOSXのフォルダーにドラッグして、そのまま動作させることができないのはなぜですか?他の誰かがポータブルアプリに焦点を合わせていますか、それとも私は全体についてOCDになっていますか?


3
質問への回答は、好奇心itive盛な「なぜ」を説明しています。しかし、「しかし、なぜ」という感嘆の声はまだ残っています(「しかし、なぜ私たち全員がうまくやっていけないのか」など)。
dbkk101 09

2
インストーラーも嫌いです。何も悪いことはありません
ニック

2
これは間違った質問のように見えます。ポータブルアプリを使用する場合、正しい質問は「どのプログラムがポータブルですか?」です。たとえば、本当に必要なのが.docデータファイルを読み書きできるプログラムである場合、MS Wordが必要だと考えるかもしれません。Open Officeはそれを行います...そして、MS Wordとは異なり、ポータブル形式で利用可能です...フラッシュドライブにコピー(およびAbiword)があり、すべての時間をラップトップに接続しています。かなりの数のポータブルアプリがあります。portablelinuxapps.orgはLinux 用に 184を提供し、portableapps.com

Billの残りのコメント: ... Windows用のメニューアプリ[おそらく、どちらにも適切なユーティリティが豊富に含まれています])。必要なものを選択し、なしで実行できる移植性のないプログラムを放棄します。ほとんどのアプリはUSBキーで実行されます。これにより、少なくとも、HD上のファイルのスパゲッティスープが簡素化されます。
studiohack

また、最高のツールは移植性があるように思えます。私は偏っているかもしれません。
VlastimilOvčáčík

回答:


35

インストーラーは長年にわたる進化の結果であり、少し(簡略化された)履歴は、インストーラーが何をするのかを理解するのに役立ちます。

Windows 3.1モデルは、アプリケーションごとにconfig.iniスタイルの構成ファイルを推奨し、システムフォルダーに入る共有ライブラリをサポートして、重複や無駄なディスク領域を防ぎました。

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

レジストリは、アプリケーションがクリーンアップしないために肥大化しました。DLL地獄は、同じ共有ライブラリの複数のバージョンが互いに上書きした結果として発生しました。

.NETはapp.configの概念を導入しました(ほとんどiniファイルは2をマークしますが、今回は構造が少し増え、開発者が手動パーサーを書く時間を無駄にします)。GACは、DLLヘルを防ぐためにバージョン共有アセンブリに導入されました。

Windows XPおよびVistaのその他では、Microsoftは、ユーザーデータと構成ファイルを単一の標準の場所に保存する場所としてユーザー空間を定義し、プログラムファイルにインストールされたアプリケーションでのローミングプロファイルと簡単な移行(プロファイルのコピー)を可能にしようとしました。

だから、私は推測します、「ウィンドウ内のアプリケーションは、ある場所に住み、別の場所に共有依存関係があり、別の場所にユーザー固有のデータがある」ように設計されているからだと思います。

..これは、ユーザーアカウントを構成し、セキュリティアクセス許可をセットアップして確認し、更新プログラムをダウンロードし、Windowsサービスをインストールする必要がある前に...

xcopyは「単純なケース」であり、すべてに最適なものではありません。


1
素敵で簡単な説明!
アレックス

7
インストーラー(特にOfficeのような)のもう1つの大きな理由は、ユーザーが管理者でない場合、同じシステム上の別のユーザーに影響を与えてはならないということです。約500MBのOffice 2007では、ユーザーが使用する場合、独自のローカルコピーが必要です。同じシステムで3人のユーザーに1.5GBになります!Google Chromeはローカルユーザーディレクトリにインストールされるため、すべてのユーザーがChromeを使用している10人のユーザーがいる場合は、更新および保守が必要な10の異なるバージョンになります。明らかに、ユーザーごとのインストールと一元的な展開には長所と短所があります。
ジョシュア

1
Photoshop(少なくともCS4以前)などの一部のアプリケーションは、単純にコピーして起動すると、必要なユーザー構成ストアとファイルを作成します。また、ほとんどの.NETアプリケーションは設計上移植性がありますが、エンドユーザーは次の次の仕上げインストーラーを期待しています-多くはファイルシステムが何であるかさえ知らない。
オスカーデューブボーン

また、アプリケーションは設定/ライブラリ/仕様を異なる場所に分割すること意図しているにもかかわらず、広く普及している習慣ではないことにも注意してください。プログラムディレクトリ内のファイルに保存されているさまざまなアプリケーションの設定を見つけることが非常に多く、共有できるライブラリはプログラムディレクトリ内で静的にリンクされることが非常に多くあります。プログラマーにとって何らかの方法で物事を行うことの本当の利点はないため、ルールを順守するインセンティブは弱く、ワイルドウェストアプリケーション開発が発生します:-)。また、私は伝統が強いと思います。
ダニエルアンダーソン

GACは、DLL地獄の再来です。良いコンセプトですが、実際には、異なる実行可能ファイルが同じファイルの異なるバージョンとバインドし、それらのファイルの一部のバージョンにセキュリティ上の欠陥があるため、混乱が生じます。安全な環境が必要な場合は、万能の混乱に対処します。ここで、同じファイルの異なるバージョンにパッチを適用して、同じセキュリティホールにパッチを適用する必要があります。ほら!ポリシーと強制的なリダイレクトが役立つことに注意する必要がありますが、それはバンドエイドが開いた傷に対して役立つと言っているようなものです。
スタインÅsmul11年

12

XCOPYの展開は、数年前にMicrosoftによって未来道として発表されまし。まだ何も:)

それまでの間、PortableApps.comプラットフォームに興味があるかもしれません。


7

素晴らしい質問です。少し前にStack Overflowで関連する質問をしました。

多くの場合、答えは「過去にそれを行ったからです」と思われます。申し訳ありませんが、それは私と一緒に洗いません。

他の数人は、主な理由はレジストリにあると言っています。デバイスドライバーや他のCOMコンポーネントなどについて話している場合、これは必要かもしれませんが、ワードプロセッサやスプレッドシートなどのGUIアプリケーションには必要ありません。

起動時に必要なレジストリ設定を確認し、ユーザーにそれらの設定を求める/デフォルトを使用するアプリケーションを作成することは非常に可能です。または、多くのprotableアプリが現在行っているように、jstは、ポータブルモードで実行しているため、OS統合が現在制限されていることをユーザーに知らせます。

インストーラーは、多くの場合、アプリケーションの動作に関する多くの「知識」も持っています。その後、アプリケーションが変更されると、多くの場合、インストーラーも更新する必要があります。これは、プログラミングで見たバグ/問題の典型的な原因です。

ワンサイズフィットのオールアプローチです。


6

シンプルで率直な答え:それは単に誰がコントロールできるのかという質問です。最近のソフトウェアのほとんどは、企業や企業の環境向けに企業の巨人によって設計されており、ユーザーにコンピュータに何をすべきかを伝えるのではなく、何をすべきかを伝えます。

あなたの質問は非常に重要です。なぜなら、古い社会のような暴君ではなく、企業の貪欲と多くの人をコントロールする少数の人々の必要性によって、ますます侵食されている個人の権利と自由についての根本的な質問を引き起こすからです。

実際、IBMなどの巨人の専制政治を非難した人々とまったく同じ人々がこの時代のIBMになったことを忘れてしまったようです。Microsoft、Appleのビジネス慣行をよく見てください。アドビは、いくつかの例を挙げて、IBMのビジネス慣行よりも制限付きのライセンスの方が良性であると率直に言ってくれます。

私は長年にわたって多くの自己完結型のポータブルアプリを使用してきましたが、例外なく、フットプリントとリソースの点で最も効果的、最速、最小であることが証明されています。対応するものですが、ほとんどの場合、同様に無料です。

第二のパソコン革命の時が来ました。肥大化を抑え、具体的な物理的媒体上の個別の物理的な場所にある1つの個別のフォルダーに設定が保存される場所を明確にすることにより、移植性を向上させることは正しい方向への一歩です。


5

レジストリとユーザーごとのストレージの組み合わせ。レジストリは、アプリケーションがある場合は特に、重要な部分であるCOM(レジストリで起こる登録する必要があり、)に基づきます。(構成などの)ユーザーごとのストレージも重要なコンポーネントです。これを行う唯一の良い方法は、特別に設計されたディレクトリに保存することです(分離ストレージを参照)。


まさに。OSは、固定位置なしでロードするEXEまたはDLLをどのように見つけることができますか?「Set oExcelApp = CreateObject( "EXCEL.APPLICATION")」は何らかの形で機能する必要があります。
ザンリンクス

4

主にWindowsレジストリが原因です。プログラムが特定のディレクトリにある場合でも、多くの場合、設定はレジストリに保存されます。

また、プログラムがインストールディレクトリ以外のコンピューター上の他のディレクトリ(たとえばsystem32)にファイルを配置することが原因の場合もあります。


3

Xcopy / portableインストールタイプに対するインストーラの大きな利点の1つは、自己修復です。

Windowsインストーラーシステムを適切に使用するアプリは、コンピューターのWindowsインストーラーデータベースに保存され、セットアップファイルの重要な部分のキャッシュが頻繁に保存されます。

アプリが何らかの理由で破損した場合(ファイルの削除/置換、レジストリの破損、ディスクの問題、ユーザーによるショートカットの削除など)、インストーラーが「アドバタイズされたショートカット」である場合、インストーラーは起動するたびにキーファイルとキーを実際にチェックし、存在しない場合は置き換えます。または、[プログラムの追加と削除]に移動して、アプリの[修復]をクリックします。


このAdobe Readerデスクトップアイコンを読んでいるときに考えられるのはなぜですか?あの人はとてもめちゃくちゃ自己修復をしているので心が揺れます^^
オスカーデューブボーン

2

アプリが必要とする大量のウィンドウを処理することと関係があると思います。たとえば、レジ​​ストリキー、ユーザーデータ(/ Users // AppData)。おそらく、OSXはこれをより良く/異なる方法で処理するだけでしょう。

繰り返しになりますが、アーカイブから抽出するだけのアプリを作成することは不可能ではありません。このような場合はいつでも喜んでいます。


2

.Net Frameworkは、このタイプの機能を有効にするプラットフォームであり、通常のユーザーが慣れているため、ほとんどの場合インストーラーが使用されます。Macユーザーがファイルをアプリケーションフォルダーにコピーするのと同じ方法。

ほとんどのインストーラーは、単にファイルをProgram Filesフォルダーに展開し、ショートカットを作成します。ユーザーが知っていることの多くのケースであり、多くの場合、アプリケーションが移植可能であってもプロセスを同じに保つ方が簡単です。


2

一部のプログラムではインストール場所がレジストリ内にある必要がありますが、他のプログラムでは場所がプログラムにハードコーディングされている場合があります(perl.exeの場合)。

基本的に、主な理由は、簡単な方法を採用し、レジストリキーまたは実際のハードコーディングされたパスのいずれかをプログラムにハードコーディングしたプログラマーです。


2

多くのWindowsアプリケーションは、SQL Server、IIS、WMI、セキュリティドメイン、Active Directoryなどのシステム環境またはサービスを利用する必要があります。一般的なユーザーは、これらの設定方法がわからない場合や、アクセスできない場合があります。

Microsoft Officeなどのアプリケーションは単一のファイルではありません。多数のファイル、実行可能ファイル、ユーティリティ、サービス、テンプレート、プラグイン、ドライバーなどが含まれています。アプリケーションをインストールするとき、新しいアプリケーションが使用するすべてを上書きすることはできません。既存のものに適合する必要があります。Windowsインストーラーは、ファイルをコピーするだけではなく、システム環境にクエリを実行し、スクリプトを実行してサービスをインストールし、管理者であるかのようにマシンをセットアップできます。

dbkk101は、Windowsアプリが「うまくいかない」理由を尋ねます。インストーラーの目的はそれです。


2

一部のプログラムでは許可されていますが、インストールはばかげていますが、「ファイルをプログラムディレクトリにドラッグする」だけではありません。

少なくとも、インストールファイルを解凍して適切なショートカットを設定し、不要になったプログラムを簡単に削除できる適切なインストーラー。私は解凍を考えており、コピーがおそらく最も時間がかかるものです。

次に、共有ファイルがあります。これは特にWindows IMOではそうではありませんが、Linuxの世界では特に当てはまります。

最も重要なのは、一部のプログラムをマシン用に構成する必要があり、一部のプログラムは(少なくとも少なくとも)マシンに基づいて最適化しようとすることです。

また、私は別のパーティションにインストールする理由を見たことがない。すべてのレジストリ値と構成設定が失われる傾向があります。さらに、私は実際にその損失がWindowsの肥大化を減らすことを好む。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.