Да предположим, че имате малка орда от програми, които искате да деинсталирате на вашата Windows система, но Windows ще ви позволи да ги деинсталирате един по един. Защо така? Какво ви пречи да деинсталирате няколко програми едновременно?
Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.
Дисплеят на SuperUser Jeroen Bollen иска да разбере защо едно лице не може да деинсталира няколко програми едновременно в Windows:
Защо Windows ви предпазва от деинсталиране или премахване на няколко програми едновременно? Каква е причината зад това? Ще го забърка ли вътрешната система?
Не искам да деинсталирам няколко програми едновременно, аз просто търся причината (ите), защо не би била опция.
Какво е това, което спира хората да деинсталират няколко програми едновременно в Windows?
Участниците в SuperUser ultrasawblade и techie007 имат отговор за нас. Първо, ultrasawblade:
Ако прочетете как функционира инсталационната система на Windows, е очевидно, че те са приложили някои идеи от бази данни за транзакции, за да инсталират и поддържат програми, да не говорим, че .msi самите файлове са база данни.
Винаги има въпрос при проектирането на всяка база данни - искате ли скорост или точност / безопасност? Като се има предвид, че монтажниците могат да променят конфигурацията на системата и че злоупотреба може да направи системата неизползваема, безопасността е дадена като приоритет над скоростта.
Една от причините .msi инсталаторите са толкова бавни, защото файловете за обратна връзка се правят за всеки файл и т.н., които ще бъдат променени, след това изтрити след това, позволявайки всички промени да бъдат "върнати", ако нещо се обърка в средата на неща (като например прекъсване на захранването или система катастрофа).
Сега смятам, че самият MSI двигател налага да инсталирате, модифицирате или премахвате само една програма в даден момент. Ако се опитате да изпълните едно .msi файл, докато друг деинсталира, например, той или няма да се стартира, или ще изчака текущия процес на деинсталиране да завърши. Инсталаторите, които не са MSI, може да не се държат по този начин, тъй като не използват двигателя MSI. Но поради това решение за дизайна на безопасността, това вероятно е причината appwiz.cpl настоява да бъде назначен само един деинсталатор да бъде извикан наведнъж.
CCleaner ви позволява да стартирате деинсталатори, без да чакате досегашните да завършат, но инсталаторите на MSI все още няма да работят паралелно, поради гореизложеното.
Последвано от отговора на techie007:
Това наистина важи само за програми, които използват системата Windows Installer.
Ако една програма използва свои собствени (не) инсталационни системи, няма нищо, което да ви попречи да изпълнявате друг деинсталатор едновременно.
Windows Installer ограничава броя на копията, за да избегне конфликти, направени от няколко програми, докато променят системните (често споделени) настройки и файлове.
Повечето деинсталиращи проследяват това, което променят, за да могат да се върнат успешно, ако има неуспех. Ако някой не е наясно с всички направени промени (от други деинсталиращи), то всъщност може да направи нещата, ако се опита да върне неуспешна инсталация.
Системата на Windows Installer е създадена с намерението да бъде единна система за всички разработчици на приложения, които да използват (на Windows), за да се избегнат подобни проблеми.
Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.