Якщо ви читаєте що-небудь про те, як працює система інсталятора Windows, очевидно, що вони застосували деякі ідеї від транзакційних баз даних до встановлення та обслуговування програм, не кажучи вже про .msi
файли, які є базою даних.
Завжди виникає питання при розробці будь-якої бази даних - чи хочете ви швидкості чи точності / безпеки? Зважаючи на те, що інсталятори можуть змінювати конфігурацію системи і що неправильна робота може призвести до непрацездатності системи, безпеці було надано пріоритет над швидкістю. Однією з причин, чому .msi
інсталятори настільки повільні, є те, що для кожного файлу створюються файли відкату тощо, які будуть модифіковані, а потім видалені - дозволяючи будь-які зміни "повернути назад", якщо щось піде не так в середині речей ( наприклад, відключення електроенергії або збої в роботі системи).
Тепер я вважаю, що двигун MSI сам примушує встановлювати, змінювати чи видаляти лише одну програму за один раз - якщо ви спробуєте запустити інший .msi
час, наприклад, він або не запуститься, або буде чекати видалення, що працює на даний момент закінчувати. Інсталятори, що не мають MSI, можуть вести себе не так - оскільки вони не використовують двигун MSI. Але через таке рішення щодо безпеки проекту, ймовірно, саме тому appwiz.cpl
наполягає на тому, щоб дозволити одразу викликати лише одного видалення.
CCleaner дозволяє зняти деінсталятори, не чекаючи закінчення раніше запущених. Зважаючи на сказане, інсталятори MSI, ймовірно, все ще не працюватимуть паралельно.