Домашня » як » Чому ви не можете одночасно видалити кілька програм в Windows?

    Чому ви не можете одночасно видалити кілька програм в Windows?

    Припустимо, у вас є невелика орда програм, які ви хочете видалити на вашій системі Windows, але Windows дозволить лише видалити їх по одному. Чому так? Що заважає вам одночасно видалити кілька програм?

    Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..

    Питання

    Читач SuperUser Jeroen Bollen хоче знати, чому людина не може одночасно видалити кілька програм у Windows:

    Чому Windows не дозволяє вам одночасно видаляти чи видаляти кілька програм? Яка причина цього? Чи буде це зіпсувати внутрішню систему?

    Я не хочу видаляти декілька програм одночасно, я просто шукаю причину, чому це не було б можливим.

    Що це таке, що перешкоджає одночасному видаленню декількох програм у Windows?

    Відповідь

    Учасники SuperUser ultrasawblade і techie007 мають відповідь для нас. Перший, ультразвук:

    Якщо ви читаєте що-небудь про те, як працює система інсталятора Windows, очевидно, що вони застосували деякі ідеї з транзакційних баз даних для встановлення та обслуговування програми, не кажучи вже про те, що .msi самі файли є базою даних.

    Завжди виникає питання в розробці будь-якої бази даних - ви хочете швидкості або точності / безпеки? Беручи до уваги, що інсталятори можуть змінювати конфігурацію системи і що невдача може зробити систему непрацездатною, безпеці надається пріоритет над швидкістю.

    Одна з причин .msi інсталятори настільки повільні, тому що файли відкату робляться для кожного файлу тощо, які будуть змінені, а потім видалені, дозволяючи будь-яким змінам "відкотитися", якщо щось піде не так у середині речей (наприклад, відключення живлення або збій системи).

    Тепер, я вважаю, що сам движок MSI встановлює, змінює або видаляє тільки одну програму за один раз. Якщо ви спробуєте запустити .msi файл, а інший видаляє, наприклад, він або не запускатиметься, або чекатиме завершення поточного процесу видалення. Інсталятори, які не належать до MSI, можуть не діяти так, оскільки вони не використовують двигун MSI. Але з огляду на це рішення безпеки конструкції, це, ймовірно, чому appwiz.cpl наполягає на тому, щоб одночасно викликати лише одну деінсталятор.

    CCleaner дозволяє вам знімати деінсталятори, не чекаючи завершення попередніх запущених, але інсталятори MSI, ймовірно, ще не працюватимуть паралельно через вищезгадане.

    Далі йде відповідь від techie007:

    Це дійсно стосується лише програм, які використовують систему Windows Installer.

    Якщо програма використовує свої власні (не) системи інсталяції, то ніщо не заважає вам одночасно запустити іншу деінсталятор.

    Інсталятор Windows обмежує кількість екземплярів, щоб уникнути конфліктів, які здійснюються кількома програмами, коли вони змінюють загальносистемні (часто спільні) налаштування та файли.

    Більшість деінсталяторів відстежують те, що вони змінюють, щоб вони могли успішно відкотитися, якщо виникла помилка. Якщо невідомо про всі внесені зміни (іншими видаляючими програмами), це може призвести до того, що речі буде ЗАСНОВНИМ, якщо він спробує повернути невдалу інсталяцію.

    Система інсталятора Windows була створена з метою створення уніфікованої системи для всіх розробників додатків (у Windows), щоб уникнути таких проблем, як ці.


    Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.