Если вы прочитали что-нибудь о том, как работает система установщика Windows, очевидно, что они применили некоторые идеи из транзакционных баз данных для установки и обслуживания программ, не говоря уже о том, что .msi
сами файлы являются базой данных.
При проектировании любой базы данных всегда возникает вопрос: хотите ли вы скорость или точность / безопасность? Принимая во внимание, что установщики могут изменять конфигурацию системы и что случайный сбой может сделать систему неработоспособной, безопасность имеет приоритет над скоростью. Одна из причин, почему .msi
установщики так медленны, заключается в том, что файлы отката создаются для каждого файла и т. Д., Которые будут изменены, а затем удалены, что позволяет «откатывать» любые изменения, если что-то пойдет не так в середине ( например, сбой питания или сбой системы).
Теперь я считаю, что сам движок MSI обеспечивает установку, изменение или удаление только одной программы за раз - если вы пытаетесь запустить, в .msi
то время как другая деинсталлируется, например, она либо не запустится, либо будет ждать текущей деинсталляции заканчивать. Установщики, не являющиеся MSI, могут вести себя не так, поскольку они не используют движок MSI. Но из-за этого решения по проектированию безопасности, вероятно, именно поэтому appwiz.cpl
настаивает на том, чтобы позволить вызывать только один деинсталлятор за один раз.
CCleaner позволяет запускать деинсталляторы, не дожидаясь завершения ранее запущенных. Установщики MSI, вероятно, все еще не будут работать параллельно из-за вышеизложенного.