Windowsで複数のプログラムを一度にアンインストールまたは削除できないのはなぜですか?この背後にある理由は何ですか?内部システムを台無しにしますか?
一度に複数のプログラムをアンインストールする方法を探しているのではなく、単にそれが選択肢にならない理由を探しているだけです。
apt-get -y uninstall prog1 prog2 prog3
。
Windowsで複数のプログラムを一度にアンインストールまたは削除できないのはなぜですか?この背後にある理由は何ですか?内部システムを台無しにしますか?
一度に複数のプログラムをアンインストールする方法を探しているのではなく、単にそれが選択肢にならない理由を探しているだけです。
apt-get -y uninstall prog1 prog2 prog3
。
回答:
Windowsインストーラーシステムのしくみについて読んでいる場合、.msi
ファイル自体がデータベースであることは言うまでもなく、トランザクションデータベースからのアイデアをプログラムのインストールとメンテナンスに適用したことは明らかです。
データベースの設計には常に疑問があります。速度または精度/安全性が必要ですか?インストーラーがシステム構成を変更でき、事故によりシステムが動作不能になる可能性があるため、速度よりも安全性が優先されます。.msi
インストーラーが非常に遅い理由の1つは、変更される各ファイルなどに対してロールバックファイルが作成され、その後削除されるためです。停電やシステムクラッシュなど)。
現在、MSIエンジン自体は一度に1つのプログラムのみをインストール、変更、または削除することを強制します- .msi
たとえば、別のプログラムがアンインストール中に実行しようとすると、実行されないか、現在実行中のアンインストールを待機します終わる。MSI以外のインストーラーは、MSIエンジンを使用しないため、このように動作しない場合があります。しかし、この安全設計の決定により、これがおそらくappwiz.cpl
、一度に1つのアンインストーラーのみを呼び出すことを要求する理由です。
CCleanerを使用すると、以前に実行されたものが終了するのを待たずにアンインストーラーを開始できます。上記の理由により、MSIインストーラーはおそらく並行して動作しません。
これは、Windowsインストーラーシステムを使用するプログラムにのみ実際に適用されます。
プログラムが独自の(アン)インストーラーシステムを使用している場合、別のアンインストーラーを同時に実行することを妨げるものは何もありません。
Windowsインストーラーは、システム全体の(多くの場合、共有されている)設定とファイルを変更している間、複数のプログラムによる競合を避けるために、インスタンスの数を制限します。
ほとんどのアンインストーラーは、障害が発生した場合に正常にロールバックできるように、変更内容を追跡します。他のアンインストーラーによって行われたすべての変更に気付いていない場合、失敗したインストールをロールバックしようとすると、実際に事態が悪化する可能性があります。
Windowsインストーラーシステムは、すべてのアプリケーション開発者が(Windowsで)使用する統合システムとして、これらのような問題を回避するために作成されました。
アンインストールタスクは、複数のプログラムで共有されているファイル、またはシステムファイル\レジストリを頻繁に変更します(これを行うには管理者権限が必要な部分的な理由)。複数のアンインストールタスクが同時に実行されると、競合する可能性があります。「DLL Hell」で実行したことがある場合、それは同じです。他のプログラムまたはWindows自体が一貫性のない状態のままになる可能性があります。
プログラムを同時にアンインストールしても、他の問題が発生する可能性がありますが、利点はほとんどありません。プログラムを順番にアンインストールするよりも高速ではありません。プログラムを解放することは、ディスクIOを伴うタスクです。IOを実行する複数のプログラムの実行は、プログラムを連続して実行するよりも高速ではありません(プログラムが2つの個別の物理ディスクにインストールされている場合を除く)。実際、 2つの競合するIOタスクによりディスクキャッシュの効率が低下し、ディスクの物理ヘッドが場所から場所へジャンプする必要があるため、遅くなる可能性があります。