97

Почему Windows не позволяет вам удалять или удалять сразу несколько программ? В чем причина этого? Это испортит внутреннюю систему?

Я не ищу, как удалить несколько программ одновременно, я просто ищу причину, почему это не будет вариант.

4 ответа4

101

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

При проектировании любой базы данных всегда возникает вопрос: хотите ли вы скорость или точность / безопасность? Учитывая, что установщики могут изменять конфигурацию системы, а сбой может привести к неработоспособности системы, безопасность имеет приоритет над скоростью. Одна из причин, по которой установщики .msi работают так медленно, заключается в том, что файлы отката создаются для каждого файла и т.д., Которые будут изменены, а затем удалены, что позволяет "откатывать" любые изменения, если что-то пойдет не так в середине вещи (такие как отключение питания или сбой системы).

Теперь я считаю, что сам движок MSI обеспечивает установку, изменение или удаление только одной программы за раз - если вы пытаетесь запустить .msi когда другая удаляется, например, он либо не запустится, либо будет ожидать текущую запуск удаления до конца. Установщики, не являющиеся MSI, могут вести себя не так, поскольку они не используют движок MSI. Но из-за этого решения по проектированию безопасности, вероятно, поэтому appwiz.cpl настаивает на том, чтобы позволить вызывать только один деинсталлятор за один раз.

CCleaner позволяет запускать деинсталляторы, не дожидаясь завершения ранее запущенных. Установщики MSI, вероятно, все еще не будут работать параллельно из-за вышеизложенного.

19

Это действительно относится только к программам, использующим систему установщика Windows .

Если программа использует свои собственные (не) системы инсталлятора, то ничто не мешает вам запустить другой деинсталлятор одновременно.

Установщик Windows ограничивает количество экземпляров, чтобы избежать конфликтов, возникающих между несколькими программами, когда они изменяют общесистемные (часто общие) настройки и файлы.

Большинство деинсталляторов отслеживают то, что они изменяют, поэтому они могут успешно откатиться в случае сбоя. Если кто-то не знает обо всех изменениях, которые были сделаны (другими деинсталляторами), он может на самом деле сделать вещи ХОРОШИМИ, если попытается откатить неудачную установку.

Система установщика Windows была создана с целью стать единой системой, которую могут использовать все разработчики приложений (в Windows), чтобы избежать подобных проблем.

9

Задачи удаления часто изменяют файлы, которые совместно используются несколькими программами, или системные файлы \ Реестр (частичная причина, по которой для этого требуется административная власть). Если одновременно выполнялось несколько задач удаления, они могут конфликтовать. Если вы когда-нибудь пробовали использовать "DLL Hell", это было бы то же самое. Другие программы или сама Windows могут остаться в несогласованном состоянии.

-1

Одновременная деинсталляция программ, помимо других упомянутых потенциальных проблем, дает очень мало преимуществ: это не будет намного быстрее, чем последовательная деинсталляция программ. Удаление программы - это задача, связанная с дисковым вводом-выводом. Запуск нескольких программ, которые выполняют ввод-вывод, не быстрее, чем их последовательный запуск (если программы не установлены на двух отдельных физических дисках). Фактически, это, вероятно, будет медленнее, потому что две конкурирующие задачи ввода-вывода сделают дисковый кэш менее эффективным, и физические головки диска должны будут перепрыгивать с места на место.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .