Tại sao bạn không thể gỡ cài đặt nhiều chương trình cùng một lúc trong Windows?


99

Tại sao Windows không cho phép bạn gỡ cài đặt hoặc xóa nhiều chương trình cùng một lúc? Lý do đằng sau này là gì? Nó sẽ làm rối tung một hệ thống nội bộ?

Tôi không tìm cách gỡ cài đặt nhiều chương trình cùng một lúc, tôi chỉ đơn giản là tìm kiếm một lý do tại sao nó không phải là một lựa chọn.


9
Để ngăn mọi người gỡ cài đặt mọi thứ cùng một lúc ... có thể.
M.Bennett

@ M.Bennett Tôi cũng nghĩ vậy, nhưng không có cách nào để chọn nhiều chương trình để người dùng thực sự không thể gỡ cài đặt mọi thứ một cách tình cờ.
Jeroen Bollen

5
Trên thực tế, bạn có thể xóa nhiều chương trình cùng một lúc, Trình cài đặt Windows duy nhất ngăn bạn gỡ cài đặt nhiều chương trình, đó là vì nó chỉ cho phép một phiên bản duy nhất của chính nó. Đủ dễ dàng để xóa một tệp chương trình, bạn có thể xóa tất cả nội dung của Tệp chương trình nếu bạn muốn, điều đó sẽ gỡ cài đặt các chương trình đó không hiệu quả.
Ramhound

@Ramhound: Bạn dường như là người duy nhất ở đây hiểu chính xác ý định của người hỏi: anh ta muốn hệ thống gỡ cài đặt các chương trình theo trình tự . Những người trả lời ở đây hiểu câu hỏi của anh ta khác nhau: liệu có thể đồng thời gỡ cài đặt một số chương trình hay không. Không cần phải nói, trong Linux, điều đó thật dễ dàng: bạn chỉ cần gõ apt-get -y uninstall prog1 prog2 prog3.
Niccolo M.

4
@NiccoloM Câu hỏi của tôi thực sự là tại sao bạn không thể đồng thời. : P
Jeroen Bollen

Câu trả lời:


101

Nếu bạn đọc bất cứ điều gì về cách hệ thống trình cài đặt Windows hoạt động, rõ ràng họ đã áp dụng một số ý tưởng từ cơ sở dữ liệu giao dịch để cài đặt và bảo trì chương trình, chưa kể các .msitệp là cơ sở dữ liệu.

Luôn có câu hỏi trong việc thiết kế bất kỳ cơ sở dữ liệu nào - bạn có muốn tốc độ hoặc độ chính xác / an toàn không? Cho rằng các trình cài đặt có thể sửa đổi cấu hình hệ thống và một rủi ro có thể khiến hệ thống không thể hoạt động, an toàn đã được ưu tiên hơn tốc độ. Một trong những lý do tại sao trình .msicài đặt quá chậm là vì các tệp rollback được tạo cho mỗi tệp, v.v. sẽ được sửa đổi và sau đó bị xóa - cho phép mọi thay đổi được "khôi phục" nếu có sự cố xảy ra ở giữa mọi thứ ( chẳng hạn như mất điện hoặc sự cố hệ thống).

Bây giờ, tôi tin rằng công cụ MSI tự thực thi cài đặt, sửa đổi hoặc chỉ xóa một chương trình tại một thời điểm - nếu bạn cố chạy .msitrong khi một chương trình khác đang gỡ cài đặt, chẳng hạn, nó sẽ không chạy hoặc sẽ chờ gỡ cài đặt hiện đang chạy kêt thuc. Trình cài đặt không phải MSI có thể không hoạt động theo cách này - vì họ không sử dụng công cụ MSI. Nhưng vì quyết định thiết kế an toàn này, đây có lẽ là lý do tại sao appwiz.cplkhăng khăng chỉ cho phép một người gỡ cài đặt được gọi cùng một lúc.

CCleaner cho phép bạn khởi động các trình gỡ cài đặt mà không cần đợi các trình chạy trước đó kết thúc. Trình cài đặt MSI có thể vẫn không hoạt động song song do các điều trên.


29
Một điều cần lưu ý là các trình quản lý gói trên các hệ thống tương tự Unix cũng sẽ không cố gắng loại bỏ một số gói cùng một lúc vì nhiều lý do tương tự. Nếu bạn loại bỏ nhiều gói, chúng sẽ bị loại bỏ từng gói, có thể là từng gói trong giao dịch của riêng chúng.
Joey

+1 câu trả lời tuyệt vời! Một điều cần lưu ý. Nếu bạn có một loạt các tệp thực thi độc lập, như CPU-Z, trong một thư mục thì hãy thoải mái gỡ cài đặt (xóa) tất cả chúng cùng một lúc.
MonkeyZeus

4
@Joey Điều này là đúng, nhưng ít nhất bạn có thể hướng dẫn các nhà quản lý gói * nix thực hiện điều đó và họ sẽ giải quyết đơn hàng. Tôi nghĩ vấn đề lớn hơn là Windows không hiểu khái niệm phụ thuộc ở cấp quản lý gói.
tudor

4
@tudor: Tôi nghĩ đó chỉ là một sự khác biệt trong cách các ứng dụng được quản lý trên các HĐH khác nhau. Windows quản lý các ứng dụng , trong khi trên các trình quản lý gói giống như Unix quản lý, các gói , có thể là thư viện, ứng dụng và những thứ tương tự. Windows có thể quản lý những thứ như vậy (chắc chắn là bên trong chắc chắn, ví dụ như khi bạn bật hoặc tắt các thành phần Windows), nhưng việc có các thư viện bên thứ ba trên toàn hệ thống đã không phát triển quá tốt vào cuối những năm 90, vì vậy các ứng dụng được khuyến khích bó tất cả các phụ thuộc của họ.
Joey

@ Tôi biết quan điểm của bạn, nhưng đổ lỗi cho người dùng (hoặc nhà phát triển) sẽ không đi xa trong một không gian chia sẻ mở như vậy. Người dùng chỉ nhìn thấy các ứng dụng, nhưng các ứng dụng chỉ là một tập hợp con của các gói. Nhiều thư viện, ngay cả với các phiên bản và nhà cung cấp khác nhau, chỉ cần được quản lý . Yêu cầu nhà phát triển quản lý nó là lạc quan nhất, IMHO và dẫn đến sự phình to. Windows Store thực hiện một số bước vào vấn đề này, nhưng vẫn còn một chặng đường dài từ độ phân giải phụ thuộc tự động, điều này làm cho * nixes trở nên đơn giản hơn rất nhiều trong vấn đề này.
tudor

19

Điều này chỉ thực sự áp dụng cho các chương trình sử dụng hệ thống Windows Installer .

Nếu một chương trình sử dụng các hệ thống cài đặt (riêng) của riêng họ, thì không có gì ngăn bạn chạy trình gỡ cài đặt khác cùng một lúc.

Windows Installer giới hạn số lượng phiên bản để tránh xung đột được tạo bởi nhiều chương trình trong khi chúng đang thay đổi cài đặt và tệp trên toàn hệ thống (thường được chia sẻ).

Hầu hết các trình gỡ cài đặt theo dõi những gì họ đang thay đổi để họ có thể quay lại thành công nếu có lỗi. Nếu một người không nhận thức được tất cả các thay đổi được thực hiện (bởi các trình gỡ cài đặt khác) thì nó thực sự có thể khiến mọi thứ trở nên tồi tệ hơn nếu nó cố gắng khôi phục cài đặt không thành công.

Hệ thống Windows Installer được tạo ra với mục đích trở thành một hệ thống hợp nhất cho tất cả các nhà phát triển ứng dụng sử dụng (trên Windows), để giúp tránh các sự cố như thế này.


9

Nhiệm vụ gỡ cài đặt thường xuyên sửa đổi các tệp được chia sẻ bởi nhiều chương trình hoặc tệp hệ thống \ Registry (một lý do một phần để cần quyền quản trị để thực hiện). Nếu nhiều tác vụ gỡ cài đặt chạy cùng một lúc, chúng có thể xung đột. Nếu bạn đã từng chạy vào "DLL Hell", nó sẽ giống như vậy. Các chương trình khác hoặc chính Windows có thể bị bỏ lại ở trạng thái không nhất quán.


Đây là hầu hết những gì câu trả lời đúng là về. Nếu chương trình "A" cài đặt Windows DLL không lõi "X" thì chương trình "B" yêu cầu nó trong trình cài đặt của nó, thì nó cũng có thể là một phần của trình gỡ cài đặt. Nhưng gỡ cài đặt DLL "X" sẽ phá vỡ chương trình "A". Vì vậy, trình gỡ cài đặt thường sẽ hỏi về các DLL được chia sẻ và các tệp khác NẾU chúng nên bị xóa. Nếu chạy đồng thời, loại nhắc nhở này không thể hoạt động đúng. Cuối cùng, và có lẽ quan trọng hơn, mọi người đã quên Windows Registry - một thành phần cốt lõi của cơ sở dữ liệu thường được cập nhật trong trình cài đặt / trình gỡ cài đặt.
Darrell Teague

-1

Gỡ cài đặt chương trình đồng thời, bên cạnh các vấn đề tiềm ẩn khác được đề cập, có rất ít lợi ích: sẽ không nhanh hơn nhiều so với việc gỡ cài đặt chương trình một cách tuần tự. Unintalling một chương trình là một nhiệm vụ liên quan đến đĩa IO. Chạy một số chương trình làm IO không nhanh hơn chạy chúng tuần tự (trừ khi các chương trình được cài đặt trên hai đĩa vật lý riêng biệt). Trên thực tế, nó có khả năng chậm hơn vì hai tác vụ IO cạnh tranh sẽ làm cho bộ đệm đĩa kém hiệu quả hơn và các đầu vật lý của đĩa sẽ phải nhảy từ nơi này sang nơi khác.


Điều này là không liên quan như là một câu trả lời. Mọi thứ liên quan đến I / O của đĩa đều có khả năng làm chậm nếu bạn làm quá nhiều việc cùng một lúc, nhưng điều duy nhất Windows thực sự ngăn bạn thực hiện là cài đặt đồng thời (un). Và có một lý do chính đáng để muốn có thể thực hiện cài đặt đồng thời (un) - người dùng sẽ dễ dàng hơn trong việc xếp hàng một loạt các hoạt động và để tất cả chúng chạy cùng nhau, so với việc phải ngồi và chờ đợi cho mỗi người hoàn thành lần lượt. Ngoài ra, vấn đề tranh chấp đã lỗi thời với SSD.
Andrew Medico
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.