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