In news:jh2g3o$ani$1@inews.gazeta.pl,
*AA* <i7i@op.pl> typed:
> W w7 w kat. gł. WINDOWS jest taki podkatalog WINSXS 'waży' ponad 7GB
> ....... co to za katalog i czy jest konieczny ?
Cytat z wypowiedzi Roberta Winklera:
Katalog WinSxS jest bardzo ważny dla systemu operacyjnego.
Przez długie lata wszyskie systemy borykały się z poważnym problemem
tak zwanym DLL Hell.
Projektanci systemów przyjeli, iż biblioteki używane przez kilka programów
powiny byż umieszczane w katalogu /Windows/System32 dla systemów Windows
czy też /lib, /usr/lib dla systemów unix i jego pochodnych, np. linux
Miało to w teorii w znacznym stopniu zaoszędzić miejsce na dysku twardym
i pamięć operacyjną (jedna biblioteka uzytkowana przez wiele programów
ładowana była by tylko raz do pamiecu, do obszary systemu operacyjnego,
i uzytkowana przez wszystkie programy).
Teoria świetna, życie pokazało jednak jej ciemne strony.
Bardzo często okazywalo sie iz kilka programów
wymagało do pracy tej samej bibloteki, ale różnej jej wersji
a co gorsza wersje te nie były między sobą zgodne
co w rezultacie powodowało konflikty
i dziwne błędy, np. dostepu do niezainicjowanych obszarów pamiec
operacyjnej.
Przez ostatnie kilkanaście lat programisciu próbowali w różny sposób
rozwiązac ten problem
przykładowo tworząc dedykowane katalogi użytkowane tylko przez programu
jednek firmy
(np: Program Files\Common Files)
albo zminiajac nazwy plików przy dystrybucji kolejnej wersji danej
biblioteki.
Od wersji XP systemu rodziny windows, programiści otrzymali do swojej
dyspozycji
nowy mechanizm w ramach systemu operacyjnego
pozwalajacy na wielokrotną instalacje i rejestracje jednej biblioteki w
różnych wersjach
mowa tu wlaśnie o katalogu WinSxS, sercu mechanizmu Side-by-side
Od tego momenty program mógł zadecydować z kótrej z wersji danej biblioteki
bedzie korzystał
Niestety sam Windows XP, oraz otaczajace go programu
w bardzo niewielkim stopniu korzystają z tego mechanizmu
Dopiero Windows Vista i jego serwerowa odmiana czyli Windows 2008 Server
w pełni korzystają z tego mechanizmu.
Poszły nawet dalej i dla tych systemów katalog WinSxS jes ważniejszy niż
Windows32
Systemy te korzystają ze specjalnej właściwosci systemu plików NTFS nie
dostepnej na partycjach FAT
mianowicie z Hard Lików (nie mylić ze skrótami czy też z Directory
Junctions)
funkcji pozwalajacej jeden obszar na dysku przedstawic jako dwa rózne pliki
System Windows Vista mógłby nie posiadać katalogu Windows32
lecz aby zapewnić zgodność ze starymi programami,
napisanych przez programisót zbyt leniwych aby korzystać z mechanizmów
Side-by-side
abo napisanych w ubiegłum stuleciu, kiedy mechanizm ten nie był jeszcze
dostępny,
pozostawiono ten katalog, aby aby nie zajmować podwójnie miejsca na dysku
zawiera on tak naprawde jedynie linki do najnowszych wersji bibliotek
znajdujacych się w WinSxS
PS.
Identyczną role jak dla systemu operacyjnego i Side-by-side na folder
WinSxS,
dla środowiska Microsoft .NET Framework pełni katalog Windows/assembly.
Folder winsxs można zmniejszyć
ale tylko za pomocą systemowych narzędzi.
Instalując Service Pack 1 do systemu został dodany nowy program
%windir%\system32\vsp1cln.exe
służy on do usunięcia plików systemowych w wersji wcześniejszej
niż te jakie wchodziły w skład SP1
Po instalacji Service Pack 2 pojawił sie jego nowszy odpowiednik
%windir%\system32\compcln.exe
Uruchomienie jednego z tych poleceń ma jednak poważne konsekwencje
z systemu zostaną usunięte pliku wymagane do deinstalacji Service Pack-ów,
oraz może przestać działać cześć programów,
korzystających z mechanizmu Side-by-Side
które nie zostały uaktualnione po aktualizacji
i dalej korzystają ze starych wersji bibliotek.