Newsgroup: it.comp.os.win.windows10
Titolo: WinSxS: comprimere la cartella

 
La cartella WinSxS cresce ad ogni aggiornamento e, sebbene sia
possibile effettuare la pulizia della stessa usando (da prompt
amministrativo) il comando
 
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
 
a volte si può voler aspettare prima di rimuovere le vecchie versioni
di librerie e componenti, ma si ha comunque la necessità di recuperare
spazio su disco, in questi casi si può valutare l'opzione di comprimere
la cartella WinSxS, per farlo (sempre da prompt amministrativo) bisogna
usare la sequenza di comandi che segue
 
 
1. Arresto e disattivazione dei servizi installer
 
sc stop msiserver
sc stop TrustedInstaller
sc config msiserver start= disabled
sc config TrustedInstaller start= disabled
 
 
2. Backup delle ACL di WinSxS
 
icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS_NTFS.acl" /t
 
 
3. Cambio proprietario di WinSxS
 
takeown /f "%WINDIR%\WinSxS" /r
 
 
4. Cambio delle ACL di WinSxS
 
icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t
 
 
5. Compressione di WinSxS
 
compact /s:"%WINDIR%\WinSxS" /c /a /i /q *
 
 
6. Ripristino proprietario di WinSxS
 
icacls "%WINDIR%\WinSxS" /setowner "NT SERVICE\TrustedInstaller" /t
 
 
7. Ripristino ACL di WinSxS
 
icacls "%WINDIR%" /restore "%WINDIR%\WinSxS_NTFS.acl"
 
 
8. Ripristino servizi
 
sc config msiserver start= demand
sc config TrustedInstaller start= demand
 
al termine basterà riavviare il sistema; da notare che, a seguito di
ulteriori aggiornamenti, potrebbero apparire nella cartella dei files
NON compressi, in tal caso sarà sufficiente ripetere le operazioni
sopra per comprimere anche tali nuovi files
 
 
 

>>>>  
http://www.bb2002.it
 :)  <<<<<
........... [ al lavoro ] ...........

 La cartella WinSxS cresce ad ogni aggiornamento
 
Salvato, grazie
 
Enrico

Rispondo qui sotto a ObiWan
 
Salvato anche io, la mia cartella è di quasi 9GB

 sc config TrustedInstaller start= disabled
 
parto male, mi viene fuori un accesso negato
 
Microsoft Windows [Versione 10.0.18362.175]
(c) 2019 Microsoft Corporation. Tutti i diritti sono riservati.
 
C:\Windows\system32>sc stop msiserver
[SC] ControlService OPERAZIONI NON RIUSCITE 1062:
 
Servizio non avviato.
 
 
C:\Windows\system32>sc stop TrustedInstaller
[SC] ControlService OPERAZIONI NON RIUSCITE 1062:
 
Servizio non avviato.
 
 
C:\Windows\system32>sc config msiserver start= disabled
[SC] ChangeServiceConfig OPERAZIONI NON RIUSCITE 5:
 
Accesso negato.
 
 
C:\Windows\system32>sc config TrustedInstaller start= disabled
[SC] ChangeServiceConfig OPERAZIONI RIUSCITE
 
C:\Windows\system32>

 parto male, mi viene fuori un accesso negato
 
 
Click destro sul prompt dei comandi -> esgui come amministratore.
 
Oppure click destro sul pulsante start,
 
WindowsesPowerShell (amministratore).
 
-- 
Ciao, Guglielmo.

Grazie per la segnalazione.
L'ho fatto su una macchina virtuale.
L'intera procedura e' DURATA ALMENO UN'ORA :-( su un hardware decente 
ancorche' virtuale.
WinSxS e' passata da 6.44 giga a 4.73 : un guadagno di 1.71 ovvero 26%.
Il rapporto di compressione dichiarato da
 >compact /s:"%WINDIR%\WinSxS" /c /a /i /q *
era di 1.4 a 1.
I files sono passati da 89.835 a 89.828 : cioe' sono "spariti" 7 files.
L'unica segnazione di anomalia e' stata al ripristino delle acl
 >icacls "%WINDIR%" /restore "%WINDIR%\WinSxS_NTFS.acl"
"operazione fallita per un file" (o roba del genere)
Comunque dopo il riavvio sembra tutto ok

 WindowsesPowerShell (amministratore).
 
ad ogni modo anche con accesso negato, anche nella parte della 
riattivazione del servizio, ha compresso lo stesso
https://i.imgur.com/TkOSwmL.png
 
forse la disabilitazione di quel servizio non è fondamentale
 

 compact /s:"%WINDIR%\WinSxS" /c /a /i /q *
 
Mi chiedevo, perché non:
 
compact /s:"%WINDIR%" /c /a /i /q WinSxS
 
?
 
Enrico

 amministrativo) bisogna usare la sequenza di comandi che segue
 
Ho leggermente modificato le istruzioni, cambiando i parametri per il
comando ICACLS in modo da evitare di visualizzare i nomi dei files,
accelerando così un pochino l'operazione e da continuare l'operazione
anche in caso di errori; la sequenza di operazione è la seguente
 
 
1. Arresto e disattivazione dei servizi installer
 
sc stop msiserver
sc stop TrustedInstaller
sc config msiserver start= disabled
sc config TrustedInstaller start= disabled
 
 
2. Backup delle ACL di WinSxS
 
icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS_NTFS.acl" /t /c /q
 
 
3. Cambio proprietario di WinSxS
 
takeown /f "%WINDIR%\WinSxS" /r
 
 
4. Cambio delle ACL di WinSxS
 
icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t /c /q
 
 
5. Compressione di WinSxS
 
compact /s:"%WINDIR%\WinSxS" /c /a /i /q *
 
 
6. Ripristino proprietario di WinSxS
 
icacls "%WINDIR%\WinSxS" /setowner "NT
SERVICE\TrustedInstaller" /t /c /q
 
 
7. Ripristino ACL di WinSxS
 
icacls "%WINDIR%" /restore "%WINDIR%\WinSxS_NTFS.acl"
 
volendo è possibile riunire tutti i comandi di cui sopra in un batch,
come ad esempio
 
@echo off
rem
rem --- CompWinSxs.cmd
rem 
:
cls
:
echo Arresto e disattivazione servizi installer
sc stop msiserver
sc stop TrustedInstaller
timeout /t 5 /nobreak >NUL 2>&1
sc config msiserver start= disabled
sc config TrustedInstaller start= disabled
:
echo Backup delle ACL di WinSxS
icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS_NTFS.acl" /t /c /q
:
echo Cambio proprietario di WinSxS
takeown /f "%WINDIR%\WinSxS" /r
:
echo Cambio delle ACL di WinSxS
icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t /c /q
timeout /t 5 /nobreak >NUL 2>&1
:
echo Compressione di WinSxS
compact /s:"%WINDIR%\WinSxS" /c /a /i /q *
:
echo Ripristino proprietario di WinSxS
icacls "%WINDIR%\WinSxS" /setowner "NT SERVICE\TrustedInstaller" /t /c /q
:
echo Ripristino ACL di WinSxS
icacls "%WINDIR%" /restore "%WINDIR%\WinSxS_NTFS.acl"
:
echo Operazioni completate, verificare eventuali messaggi di errore
pause
 
 
 
 
 
 
 

 come ad esempio
 
Ooops, il batch era errato, la versione corretta (e migliorata) è
questa; basta salvare il batch come (es.) "compwinsxs.cmd" e poi
lanciarlo da prompt elevato, al termine si dovrà riavviare il sistema
 
 
@echo off
cls
:
whoami /groups|find "S-1-16-12288" >NUL 2>&1
if errorlevel 1 goto NOADMIN
goto BEGIN
:
:NOADMIN
echo questo script va eseguito con privilegi amministrativi
goto QUIT
rem
rem --- CompWinSxs.cmd
rem 
:
:BEGIN
setlocal
set XS_PATH=%WINDIR%\WinSxS
set XS_BACK=%WINDIR%\WinSxS_NTFS.acl
:
echo Arresto e disattivazione servizi installer
sc stop msiserver
sc stop TrustedInstaller
sc config msiserver start= disabled
sc config TrustedInstaller start= disabled
timeout /t 5 /nobreak >NUL 2>&1
:
echo Backup delle ACL di WinSxS
icacls "%XS_PATH%" /save "%XS_BACK%" /t /c /q
:
echo Cambio proprietario di WinSxS
takeown /f "%XS_PATH%" /r
:
echo Cambio delle ACL di WinSxS
icacls "%XS_PATH%" /grant "%USERDOMAIN%\%USERNAME%":(F) /t /c /q
:
echo Compressione di WinSxS
compact /s:"%XS_PATH%" /c /a /i /q *
:
echo Ripristino proprietario di WinSxS
icacls "%XS_PATH%" /setowner "NT SERVICE\TrustedInstaller" /t /c /q
:
echo Ripristino ACL di WinSxS
icacls "%WINDIR%" /restore "%XS_BACK%"
:
echo Riattivazione servizi installer
sc config msiserver start= demand
sc config TrustedInstaller start= demand
:
endlocal
echo Operazioni completate, verificare eventuali messaggi di errore
echo quindi riavviare il sistema per completare le operazioni.
:
:QUIT
pause
 
 



Scusa il ritardo, ho dimenticato di risponderti
 
il comando
 
compact /s:"%WINDIR%\WinSxS" /c /a /i /q *
 
comprime (ed imposta l'attributo compresso) il contenuto della cartella
WinSxS (sottocartelle e files) ma NON la cartella WinSxS stessa, mentre
 
compact /s:"%WINDIR%" /c /a /i /q WinSxS
 
imposta l'attributo "compresso" anche per la cartella WinSxS, ora, uno
potrebbe pensare che sia un'idea migliore, dato che in tal caso, nuovi
files/cartelle create all'interno di WinSxS erediterebbero l'attributo
e sarebbero compressi... il problema è che in alcuni casi (non mi
chiedere come e perchè, non ho approfondito), impostando WinSxS come
compressa, l'OS inizia a dare i numeri, per cui ho preferito rimanere
sul sicuro; certo, in questo modo nuovi files/cartelle NON verranno
compressi automaticamente, però per lo meno si eviteranno problemi e
sarà sufficiente ri-eseguire lo script di tanto in tanto