Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Microsoft Windows 7 e Vista (https://www.hwupgrade.it/forum/forumdisplay.php?f=127)
-   -   [GUIDA] Script per integrare gli aggiornamenti nelle ISO di Windows 7 (https://www.hwupgrade.it/forum/showthread.php?t=2571739)


Tom Joad 23-05-2013 19:09

[GUIDA] Script per integrare gli aggiornamenti nelle ISO di Windows 7
 
Ciao a tutti,

ho creato uno script per tenere aggiornate le ISO di Windows 7 e Windows 8 (x64 e x86) integrando tutti gli aggiornamenti rilasciati.

Link: https://onedrive.live.com/redir?resi...nt=file%2c.zip

Per utilizzarlo è necessario scompattare l'archivio in un percorso che non contenga spazi (es: C:\IsoUpdater), copiare uno o più file ISO nella cartella \Iso e lanciare il file IsoUpdater.cmd con privilegi di amministratore.

FUNZIONAMENTO DELLO SCRIPT

Verifica dei privilegi dell'utente
Per eseguire lo Strumento gestione e manutenzione immagini distribuzione (dism.exe) è necessario che l'utente disponga dei privilegi di amministratore.

Se l'utente non dispone dei privilegi sufficienti, lo script termina:



Codice:

:CheckPrivileges
net session >nul 2>&1
if not %ErrorLevel% == 0 (
        echo L'utente non possiede i privilegi di amministratore
        echo.
        echo Il programma verra' terminato
        goto End
)

Questa parte di codice è stata copiata spudoratamente da questo post: http://stackoverflow.com/questions/4...r-admin-rights

Creazione cartella temporanea
Viene creata la cartella \Temp, dove verranno appoggiati tutti i file necessari. Se la cartella esiste già (può succedere quando si interrompe lo scipt prima di arrivare alla fine) viene cancellata e ricreata:

Codice:

:MainLoop
cls
if exist %_tempDir% rd %_tempDir% /s /q
md %_tempDir%

Ricerca immagini iso
Viene effettuata una scansione della cartella \Iso. Se non è presente alcun file lo script termina:



Codice:

echo Ricerca file ISO
echo.
call :Iso.ScanDir
if !_foundIso! equ 0 (
    cls
    echo Nessun file trovato
    echo.
    echo Copiare un'immagine ISO nella seguente cartella e riavviare il programma:
    echo.
    echo %_isoDir%
    echo.
    goto End
)

...

:Iso.ScanDir
dir /b %_isoDir%\*.iso>%_isoDirList%
set /a _foundIso=0
for /f %%G in (%_isoDirList%) do set /a _foundIso+=1
goto :eof

Nel caso in cui vengano trovati uno o più file viene richiesto di selezionare la ISO da aggiornare:



Codice:

echo !_foundIso! file trovati
echo.
echo Selezionare un file:
echo.
call :Iso.Select
cls
echo File: !_isoFile!
echo.

...

:Iso.Select
set _outputFile=%_tempDir%\SelectIso.cmd
echo @echo off>%_outputFile%
echo :_choice>>%_outputFile%
set /a _counter=0
for /f %%G in (%_isoDirList%) do (
        set /a _counter+=1
        echo echo !_counter!. %%G>>%_outputFile%
        echo echo.>>%_outputFile%
)
set /a _counter=0
echo set /p _choice=SELEZIONE: >>%_outputFile%
for /f %%G in (%_isoDirList%) do (
        set /a _counter+=1
        echo if [%%_choice%%]==[!_counter!] set _isoFile=%%G>>%_outputFile%
)
echo if not defined _isoFile echo.^& echo SELEZIONE NON VALIDA^&echo. ^&goto _choice>>%_outputFile%
echo echo.>>%_outputFile%
call %_outputFile%
del %_outputFile% /q
set _outputFile=
goto :eof

Estrazione dei file ei.cfg e idwbinfo.txt
Questi due file servono nel prossimo step per rilevare il sistema operativo e l'edizione:

Codice:

call :ISO.ExtractFiles

...

:ISO.ExtractFiles
start /wait /min %_binDir%\7Z.exe e %_isoDir%\!_isoFile! sources\ei.cfg sources\idwbinfo.txt -o%_tempDir% -y
goto :eof

Rilevamento del sistema operativo e dell'architetture (x86 o x64)
Lo script legge il file idwbinfo.txt per rilevare il sistema operativo. Prima di fare ciò è necessario accertarsi che tal file esista:
Codice:

if not exist %_tempDir%\idwbinfo.txt (
    echo Impossibile rilevare il sistema operativo. Il programma verra' terminato
    echo.
    goto End
)



Se il file è nel posto giusto:



Codice:

call :OS.DetectName
call :OS.DetectArch

...

:OS.DetectName
for /f "tokens=1 delims=," %%G in (%_osIndex%) do (
    find /i "%%G" %_tempDir%\idwbinfo.txt >nul && set _osName=%%G
)
goto :eof

:OS.DetectArch
for /f "tokens=2 delims=," %%G in (%_osIndex%) do (
    find /i "%%G" %_tempDir%\idwbinfo.txt >nul && set _osArch=%%G
)
goto :eof

Lettura file di configurazione
Per ogni sistema operativo c'è un file di configurazione (spiegherò i file di configurazione nel post successivo) nella cartella \Config

Ora che sono stati rilevati sistema operativo ed architettura lo script sa quale file di configurazione andare a leggere (il nome del file è composto da due parti: NomeOS_Architettura.ini, ad esempio Win7sp1amd64.ini). Le variabili necessarie sono state impostate nello step precedente (ad es: _osName=Win7sp1 e _osArch=amd64).

Codice:

call :ConfigFile.Read

...

:ConfigFile.Read
set _configFile=%_configDir%\!_osName!!_osArch!.ini
for /f "delims=" %%G in (%_configFile%) do (
        set _line=%%G
        set _lineFirstChar=!_line:~0,1!
        if "!_lineFirstChar!" == "[" (
                set _currentArea=!_line:~1,-1!
                set _outputFile=%_tempDir%\!_currentArea!.txt
                type nul >!_outputFile!
        ) else (
                echo !_line!>>!_outputFile!
        )
)
goto :eof

Rilevamento (o selezione manuale) dell'edizione
Per rilevare l'edizione lo script legge il file ei.cfg. Tuttavia ho notato che nelle ISO di Windows 8 questo file non è presente. Lo script verifica prima se il file ei.cfg esiste nella cartella temporanea. In caso contrario chiede di selezionare manualmente l'edizione:



Codice:

if exist %_tempDir%\ei.cfg (
    call :OS.DetectEdition
    echo Sistema Operativo: !_osDescription! !_osExtendedEdition!
    echo.
) else (
    echo Sistema Operativo: !_osDescription!
    echo.
    echo E' necessario selezionare manualmente l'edizione:
    echo.
    call :OS.SelectEdition
    cls
        echo File selezionato: !_isoFile!
        echo.
    echo Sistema Operativo: !_osDescription! !_osExtendedEdition!
    echo.
)

...

:OS.DetectEdition
for /f "tokens=1-3 delims=," %%G in (%_editionsIndex%) do (
        find /i "%%H" %_tempDir%\ei.cfg >nul && set _wimIndex=%%G&& set _osEdition=%%H&& set _osExtendedEdition=%%I
)
goto :eof

...

:OS.SelectEdition
set _outputFile=%_tempDir%\SelectOsEdition.cmd
echo @echo off>%_outputFile%
echo :_choice>>%_outputFile%
set /a _counter=0
for /f "tokens=1-3 delims=," %%G in (%_editionsIndex%) do (
    set /a _counter+=1
    echo echo !_counter!. %%I>>%_outputFile%
    echo echo.>>%_outputFile%
)
set /a _counter=0
echo set /p _choice=Selezione: >>%_outputFile%
for /f "tokens=1-3 delims=," %%G in (%_editionsIndex%) do (
    set /a _counter+=1
    echo if [%%_choice%%]==[!_counter!] set _wimIndex=%%G^& set _osEdition=%%H^& set _osExtendedEdition=%%I>>%_outputFile%
)
echo if not defined _wimIndex echo.^& echo Selezione non valida^& echo. ^&goto _choice>>%_outputFile%
call %_outputFile%
del %_outputFile% /q
set _outputFile=
goto :eof

Interner Explorer
In Windows 8 è possibile utilizzare solo Internet Explorer 10. In Windows 7 invece ci sono Internet Explorer 8, 9 e 10.

Come prima cosa lo script rileva la versione di default, leggendo la prima riga di un file (IexploreIndex.txt) creato nella cartella temporanea leggendo il file di configurazione:

Codice:

call :IE.DetectDefault
set _selectedIE=%_defaultIE%

...

:IE.DetectDefault
for /f "tokens=1 delims=," %%G in ('type %_iexploreIndex%') do (
        set _defaultIE=%%G
        exit /b
)
goto :eof

Dopo di che conta le righe del file e determina se ci sono più versioni di Internet Explorer supportate:

Codice:

call :IE.CountVersions

...

:IE.CountVersions
set /a _ieCounter=0
for /f %%G in (%_iexploreIndex%) do set /a _ieCounter+=1
goto :eof

In quest'ultimo caso, chiede di selezionare la versione:



Codice:

if %_ieCounter% gtr 1 (
        echo Selezionare la versione di Internet Explorer:
        echo.
        call :IE.Select
)
echo %_selectedIE%>>%_integrateList%

...

:IE.Select
set _outputFile=%_tempDir%\SelectIE.cmd
echo @echo off>%_outputFile%
echo :_choice>>%_outputFile%
set /a _counter=0
for /f "tokens=1,2 delims=," %%G in (%_iexploreIndex%) do (
        set /a _counter+=1
        echo echo !_counter!. %%H>>%_outputFile%
        echo echo.>>%_outputFile%
)
echo set /p _choice=Selezione: >>%_outputFile%
set /a _counter=0
for /f "tokens=1,2 delims=," %%G in (%_iexploreIndex%) do (
        set /a _counter+=1
        echo if [%%_choice%%]==[!_counter!] set _selectedIE=%%G>>%_outputFile%
)
echo if not defined _selectedIE echo.^& echo Selezione non valida^&echo. ^&goto _choice>>%_outputFile%
echo echo.>>%_outputFile%
call %_outputFile%
del %_outputFile% /q
set _outputFile=
goto :eof

Scansione cartella Updates
In base alle informazioni fornite fino ad ora lo script costruisce un indice da confrontare con i file presenti nella cartella \Updates. Gli aggiornamenti non trovati vengono inclusi in una lista di file da scaricare:

Codice:

echo Ricerca aggiornamenti
echo.
call :Updates.BuildIndex
call :Updates.ScanDir

...

:Updates.BuildIndex
set _tempFile=%_integrateIndex%.tmp
for /f "tokens=1-4 delims=," %%G in (%_integrateIndex%) do find "%%H" %_integrateList% >nul && echo %%G,%%H,%%I,%%J>>%_tempFile%
move %_tempFile% %_integrateIndex% >nul
set _tempFile=
goto :eof

...

:Updates.ScanDir
type nul >%_downloadIndex%
dir /b %_updatesDir%>%_updatesDirList%
set /a _totalUpdates=0
for /f %%G in (%_integrateIndex%) do set /a _totalUpdates+=1
for /f %%G in (%_setupcompleteIndex%) do set /a _totalUpdates+=1
if not [!_defaultIE!]==[!_selectedIE!] set /a _totalUpdates+=1

set /a _foundUpdates=0
set /a _notFoundUpdates=0
for /f "tokens=1-4 delims=," %%G in (%_integrateIndex%) do find /i "%%G" %_updatesDirList% >nul && (set /a _foundUpdates+=1) || (set /a _notFoundUpdates+=1 && echo %%G,%%J>>%_downloadIndex%)
for /f "tokens=1-4 delims=," %%G in (%_setupcompleteIndex%) do find /i "%%G" %_updatesDirList% >nul && (set /a _foundUpdates+=1) || (set /a _notFoundUpdates+=1 && echo %%G,%%J>>%_downloadIndex%)
if not [!_defaultIE!]==[!_selectedIE!] (
        for /f "tokens=1-2 delims==" %%G in (%_tempDir%\%_selectedIE%.txt) do (set %%G=%%H)
        if not exist %_updatesDir%\!_archiveName! (
                set /a _notFoundUpdates+=1 && echo !_archiveName!,!_downloadURL!>>%_downloadIndex%
        ) else (
                set /a _foundUpdates+=1
        )
)
goto :eof

Download aggiornamenti mancanti
Nel caso in cui uno o più aggiornamenti non siano stati trovati nella cartella \Updates viene chiesto di effettuare il download (mediante curl.exe, presente nella cartella \Bin):



Codice:

echo %_totalUpdates% aggiornamenti totali
echo %_foundUpdates% aggiornamenti scaricati
echo %_notFoundUpdates% aggiornamenti da scaricare
echo.

if %_notFoundUpdates% gtr 0 (
        echo E' necessario eseguire il download di %_notFoundUpdates% file prima di proseguire
        echo.
    choice /c SN /m "Eseguire il download ora?"
    if errorlevel 2 goto End
    if errorlevel 1 call :Updates.Download
        echo.
)

...

:Updates.Download
for /f "tokens=1-2 delims=," %%G in (%_downloadIndex%) do (
        echo.
    echo Download di %%G in corso
        echo.
    %_binDir%\curl.exe -L -o %_updatesDir%\%%G "%%H" --progress-bar
)
goto :eof

Copia degli aggiornamenti
I file necessari vengono copiati nella cartella temporanea (gli aggiornamenti non integrabili saranno installati automaticamente al primo accesso):

Codice:

echo Preparo gli aggiornamenti per l'integrazione
echo.
call :Updates.Copy

...

:Updates.Copy
for /f "tokens=1-3 delims=," %%G in (%_integrateIndex%) do xcopy /i %_updatesDir%\%%G %_integrateDir%\%%H\%%I\ >nul
md %_extractDir%\sources\$OEM$\$$\Setup\Scripts
echo @echo off>%_extractDir%\sources\$OEM$\$$\Setup\Scripts\SetupComplete.cmd
for /f "tokens=1-5 delims=," %%G in (%_setupcompleteIndex%) do (
        xcopy /i %_updatesDir%\%%G %_setupcompleteDir%\%%H\ >nul
        echo start /wait %%SYSTEMDRIVE%%\SETUPCOMPLETE\%%H\%%G %%K>>%_extractDir%\sources\$OEM$\$$\Setup\Scripts\SetupComplete.cmd
)
echo rd %%SYSTEMDRIVE%%\SETUPCOMPLETE /s /q>>%_extractDir%\sources\$OEM$\$$\Setup\Scripts\SetupComplete.cmd
goto :eof

Se la versione di Internet Explorer selezionata non è quella di default, è necessario scompattare l'archivio:

Codice:

if not [!_defaultIE!]==[!_selectedIE!] call :IE.Extract

...

:IE.Extract
start /wait /min %_updatesDir%\!_archiveName! !_extractSwitch!%_tempDir%
for %%G in (!_integrateFiles!) do xcopy /i %_tempDir%\%%G %_integrateDir%\%_selectedIE%\SETUP\ >nul
goto :eof

Estrazione immagine ISO
A questo punto il file ISO viene scompattato nella cartella temporanea:

Codice:

echo Estrazione immagine ISO
echo.
call :ISO.Extract

...

:ISO.Extract
start /wait /min %_binDir%\7Z.exe x %_isoDir%\!_isoFile! -o%_extractDir% -y
goto :eof

Montaggio file install.wim



Codice:

echo Montaggio file WIM
echo.
call :Wim.Mount

...

:Wim.Mount
md %_mountDir%
set _logFile=%_tempDir%\MountWim.log
dism /mount-wim /wimfile:%_wimFile% /index:!_wimIndex! /mountdir:%_mountDir% /LogPath:%_logFile% /LogLevel:1
goto :eof

Integrazione aggiornamenti



Codice:

echo Integrazione aggiornamenti
echo.
call :Wim.Integrate

...

:Wim.Integrate
set _logFile=%_tempDir%\IntegrateWim.log
for /f %%G in (%_integrateList%) do (
        if exist %_integrateDir%\%%G\SETUP dism /image:%_mountDir% /add-package /packagepath:%_integrateDir%\%%G\SETUP /LogPath:%_logFile% /LogLevel:1
        if exist %_integrateDir%\%%G\IMPORTANT dism /image:%_mountDir% /add-package /packagepath:%_integrateDir%\%%G\IMPORTANT /LogPath:%_logFile% /LogLevel:1
        if exist %_integrateDir%\%%G\RECOMMENDED dism /image:%_mountDir% /add-package /packagepath:%_integrateDir%\%%G\RECOMMENDED /LogPath:%_logFile% /LogLevel:1
        if exist %_integrateDir%\%%G\OPTIONAL dism /image:%_mountDir% /add-package /packagepath:%_integrateDir%\%%G\OPTIONAL /LogPath:%_logFile% /LogLevel:1
)
goto :eof

Salvataggio del file install.wim



Codice:

echo Salvataggio file WIM
echo.
call :Wim.Unmount

...

:Wim.Unmount
set _logFile=%_tempDir%\UnMountWim.log
dism /unmount-wim /mountdir:%_mountDir% /commit /LogPath:%_logFile% /LogLevel:1
if exist %_mountDir% rd %_mountDir% /s /q
goto :eof

Creazione ISO aggiornata
Alla fine del processo la ISO aggiornata si troverà nella cartella \Output

Codice:

echo Creazione file ISO
echo.
call :Iso.Build

...

:Iso.Build
start /wait /min %_binDir%\oscdimg.exe -h -u2 -m -b%_extractDir%\boot\etfsboot.com -l!_osName!!_osArch! %_extractDir% %_outputDir%\!_osName!_!_osArch!_!_osEdition!_!_selectedIE!.iso
goto :eof

FINE!
Alla fine dello script la cartella temporanea viene cancellate e le variabili sono annullate.

Codice:

echo Operazione completata
echo.
goto End

...

:End
echo.
echo Premere un tasto per uscire
pause >nul
if exist %_tempDir% rd %_tempDir% /s /q
for /f "tokens=1 delims==" %%G in ('set _') do (set %%G=)
exit

CONSIGLI
Il montaggio/smontaggio dei file .wim ruchiede un sacco di tempo, per non parlare dell'integrazione degli aggiornamenti. Ho notato che con l'antivirus abilitato (NOD32 6.0) queste fasi sono estremamente lente. Disabilitate l'antivirus e, se possibile, lanciate lo script da un SSD.

Per determinare quali aggiornamenti andavano integrati ho creato una virtual machine per ogni SO ed ho lanciato Windows Update. Il codice non gestisce aggiornamenti opzionali come DotNet o Silverlight. Se volete integrare altro software basta andare a modificare la sezione [SetupCompleteIndex] aggiungendo, nell'ordine esatto, i file da installare al primo accesso. I delimitatori di campo sono le virgole, ed i campi sono i seguenti:

Nome File
Prodotto
Livello di gravità (Importante, Consigliato, Facoltativo)
URL per il download del file
Switch per l'installazione silenziosa

Quote:

[SetupCompleteIndex]
; Aggiornamento per Windows 7 per sistemi x64 (KB2533552)
Windows6.1-KB2533552-x64.msu,WIN,IMPORTANT,http://download.microsoft.com/downlo...x64.msu,/quiet /notesrtart
; Strumento di rimozione malware di Windows – maggio 2013 (KB890830)
Windows-KB890830-V4.20-x64.exe,MRT,IMPORTANT,http://download.microsoft.com/downlo...4-V4.20.exe,/q
; Definition Update for Windows Defender - KB915597
mpas-fe-x64.exe,MPAS,IMPORTANT,http://go.microsoft.com/fwlink/?Link...7E5EB378092,/q
Nell'ultima riga ci sono le definizioni di Windows Defender. Sono lì solo a scopo accademico: vengono aggiornate di frequente e quindi è impossibile avere l'ultima versione. Se non usate Windows Defender commentate o cancellate la riga

Tom Joad 23-05-2013 19:11

FILE DI CONFIGURAZIONE

Nella cartella \Config sono presenti alcuni file:

OS.txt: è l'indice dei sistemi operativi (_osIndex)

Codice:

WIN7SP1,amd64,Windows 7 Service Pack 1 x64
WIN7SP1,x86,Windows 7 Service Pack 1 x86
WIN8,amd64,Windows 8 x64
WIN8,x86,Windows 8 x86

I campi sono delimitati da virgole, come in tutti gli altri file. Credo che non ci sia nulla da spiegare, comunque (tra parentesi il nome della variabile relativa alla colonna che viene assegnata durante l'esecuzione)...

Colonna 1 (_osName): il nome del sistema operativo
Colonna 2 (_osArch): l'architettura (amd64, x86)
Colonna 3 (_osDescription): descrizione "friendly" che comparirà a video

File di configurazione dei sistemi operativi:
WIN7SP1amd64.ini
WIN7SP1x86.ini
WIN8AMD64.ini
WIN8X86.ini

Sono i file che contengono le informazioni di configurazione per ogni sistema operativo (_configFile), e contengono alcune sezioni (di seguito userò come esempio il file Win7Sp1amd64.ini)

SEZIONE [EditionsIndex]
E' l'indice delle edizioni disponibili (_editionsIndex)

Codice:

[EditionsIndex]
1,HOMEBASIC,Home Basic
2,HOMEPREMIUM,Home Premium
3,PROFESSIONAL,Professional
4,ULTIMATE,Ultimate

Colonna 1 (_wimIndex): è l'indice che viene utilizzato in fase di montaggio dell'immagine install.wim per stabilire quale edizione andare ad aggiornare
Colonna 2 (_osEdition): serve a ben poco, come la successiva: quando verrà creata l'immagine ISO aggiornata questa variabile verrà aggiunta al nome del file (es: Win7Sp1_HOMPREMIUM_IE9.iso)
Colonna 3 (_osExtendedEdition): la descrizione a video

SEZIONE [IntegrateList]
E l'ordine in cui devono essere integrati gli aggiornamenti:

Codice:

[IntegrateList]
WIN
WU
DOTNET351

In questo caso, lo script integra prima gli aggiornamenti di Windows, poi quelli di Windows Update, poi quelli di DotNet 3.5.1 (quello di default in Windows 7).

E Internet Explorer dov'è? Poiché è possibile che venga selezionata una versione differente rispetto a quella di default, la versione selezionata verrà aggiornata per ultima

Codice:

echo %_selectedIE%>>%_integrateList%
SEZIONE [IexploreIndex]
Sono le versioni supportate di Internet Explorer, nulla da spiegare. La prima colonna (_selectedIE) è il nome che lo script utilizza internamente, la seconda è la descrizione che compare a video
Codice:

[IexploreIndex]
IE8,Internet Explorer 8
IE9,Internet Explorer 9
IE10,Internet Explorer 10

IMPORTANTE: Poiché lo script ad un certo punto determina la versione di default di Internet Explorer leggendo la PRIMA RIGA di questa sezione, l'ordine non va mai cambiato.

[IntegrateIndex]
E' l'indice degli aggiornamenti integrabili (_integrateIndex)

Codice:

[IntegrateIndex]
;Aggiornamento di Windows Update
WUClient-SelfUpdate-ActiveX-x64.cab,WU,IMPORTANT,http://download.windowsupdate.com/v9/1/windowsupdate/b/selfupdate/WSUS3/x64/Vista/WUClient-SelfUpdate-ActiveX~31bf3856ad364e35~amd64~~7.6.7600.256.cab
WUClient-SelfUpdate-Aux-TopLevel-x64.cab,WU,IMPORTANT,http://download.windowsupdate.com/v9/1/windowsupdate/b/selfupdate/WSUS3/x64/Vista/WUClient-SelfUpdate-Aux-TopLevel~31bf3856ad364e35~amd64~~7.6.7600.256.cab
WUClient-SelfUpdate-Core-TopLevel-x64.cab,WU,IMPORTANT,http://download.windowsupdate.com/v9/1/windowsupdate/b/selfupdate/WSUS3/x64/Vista/WUClient-SelfUpdate-Core-TopLevel~31bf3856ad364e35~amd64~~7.6.7600.256.cab
; Aggiornamento cumulativo della protezione per ActiveX Killbits per Windows 7 per sistemi x64 (KB2618451)
Windows6.1-KB2618451-x64.msu,WIN,IMPORTANT,http://download.windowsupdate.com/msdownload/update/software/secu/2011/11/windows6.1-kb2618451-x64_578a8773c44d60c06f384af45784ecf57d75376b.msu

...

Non lascia nulla all'immaginazione ma la spiego lo stesso:

Colonna 1 (_fileName): mi rifiuto di spiegarlo :D
Colonna 2: il prodotto interessato (WIN, DOTNET351, IE9 etc...)
Colonna 3: livello di importanza (IMPORTANT, RECOMMENDED, OPTIONAL)
Colonna 4: (_downloadURL): vedi Colonna 1

SEZIONE [SetupCompleteIndex]
Sono quegli aggiornamenti che non possono essere integrati ma che verranno installati automaticamente al primo avvio:

Codice:

[SetupCompleteIndex]
; Aggiornamento per Windows 7 per sistemi x64 (KB2533552)
Windows6.1-KB2533552-x64.msu,WIN,IMPORTANT,http://download.microsoft.com/download/B/6/F/B6F95B10-8B74-42F2-B57A-2C559D43BC28/Windows6.1-KB2533552-x64.msu,/quiet /notesrtart
; Strumento di rimozione malware di Windows – maggio 2013 (KB890830)
Windows-KB890830-V4.20-x64.exe,MRT,IMPORTANT,http://download.microsoft.com/download/2/C/5/2C563B99-54D9-4D85-A82B-45D3CD2F53CE/Windows-KB890830-x64-V4.20.exe,/q
; Definition Update for Windows Defender - KB915597
mpas-fe-x64.exe,MPAS,IMPORTANT,http://go.microsoft.com/fwlink/?LinkID=121721&arch=x64&prod=925A3ACA-C353-458A-AC8D-A7E5EB378092,/q

Identica alla sezione precedente ma con un campo in più, l'ultimo: è lo switch per installare in maniera silenziosa l'aggiornamento.

In questa sezione potete fare ciò che volete: aggiungere altri aggiornamenti (ad es. Silverlight o DotNet 4 e/o 4.5, ma anche altri software). E' sufficiente aggiungere righe nell'ordine esatto in cui vanno installati gli aggiornamenti/software (non sto a dilungarmi sul file SetupComplete.cmd)

Nota: nell'ultima riga ci sono le definizioni di Windows Defender. Servono a poco, poiché è probabile che da quando lanciate lo script a quando avete finito di installare il sistema operativo sarà uscita una nuova versione (e quindi Windows Update ci dirà che è disponibile un aggiornamento importante)

SEZIONI AGGIUNTIVE [IE9] e [IE10]
Sono presenti solo nei file di configurazione di Windows 7 (ovviamente) e sono leggermente differenti dalle altre. Servono a dire allo script:

1. Il nome del file
2. Lo switch per estrarre il pacchetto
3. Dove andarlo a scaricare
4. Quali file integrare

Codice:

[IE9]
_archiveName=IE9-Windows7-x64-ita.exe
_extractSwitch=/X:
_downloadURL=http://download.microsoft.com/download/6/9/8/698AD42B-833A-4516-96F4-1105DFE9DC26/IE9-Windows7-x64-ita.exe
_integrateFiles=IE9-Win7.CAB,ielangpack-ITA.CAB

[IE10]
_archiveName=IE10-Windows6.1-x64-it-it.exe
_extractSwitch=/X:
_downloadURL=http://download.microsoft.com/download/6/2/5/6250E2E1-EDC4-49AF-939F-1F19DA354E29/IE10-Windows6.1-x64-it-it.exe
_integrateFiles=IE-Win7.CAB,IE-Hyphenation-ITA.MSU,IE-Hyphenation-NEU.MSU,ielangpack-ITA.CAB,IE-Spelling-ITA.MSU,IE-Spelling-NEU.MSU

Enjoy :)

ezio 23-05-2013 19:20

Creata copia dal thread in sezione Win8: http://www.hwupgrade.it/forum/showthread.php?t=2571738
;)

kimik 24-05-2013 10:32

Complimenti bel lavoro. Mi tornerà utile.

Tom Joad 24-05-2013 10:35

Quote:

Originariamente inviato da kimik (Messaggio 39504563)
Complimenti bel lavoro. Mi tornerà utile.

Grazie :)

Ho aggiornato il post, riscaricarlo perché c'era un errore in un file di configurazione di Windows 7 x64.

Se trovi qualche bug o ho dimenticato qualche aggiornamento fammi sapere

kimik 24-05-2013 10:49

Quote:

Originariamente inviato da Tom Joad (Messaggio 39504582)
Grazie :)

Ho aggiornato il post, riscaricarlo perché c'era un errore in un file di configurazione di Windows 7 x64.

Se trovi qualche bug o ho dimenticato qualche aggiornamento fammi sapere

Fatto. ;)

aled1974 24-05-2013 14:14

gran bel lavoro :ave: :mano:

appena ho l'occasione provo a ripetere le operazioni indicate

ciao ciao

Tom Joad 24-05-2013 14:28

Quote:

Originariamente inviato da aled1974 (Messaggio 39505927)
gran bel lavoro :ave: :mano:

appena ho l'occasione provo a ripetere le operazioni indicate

ciao ciao

Grazie :) Andate a dirlo anche a mia moglie così si convince che non stavo in chat con l'amante :D

Non devi ripetere nessuna operazione, basta che lanci lo script come amministratore e rispondi alle poche domande.

Provate e segnalatemi le eventuali anomalie.

Se qualcuno usa ancora Vista e ha voglia di postare i link agli aggiornamenti credo che potrebbe funzionare senza mettere mano al codice. Per Windows Server 2008/2012... work in progress

aled1974 25-05-2013 10:39

Quote:

Originariamente inviato da Tom Joad (Messaggio 39506013)
Non devi ripetere nessuna operazione, basta che lanci lo script come amministratore e rispondi alle poche domande.

prima la iso la devo creare /scaricare e dedicarci il tempo ;)

ad ogni modo grazie ancora

ciao ciao

sticky74 25-05-2013 17:15

Prima di cominciare desideravo sapere se lo script è valido anche se la versione windows 7 è quella inglese.

Tom Joad 25-05-2013 17:22

Quote:

Originariamente inviato da sticky74 (Messaggio 39510976)
Prima di cominciare desideravo sapere se lo script è valido anche se la versione windows 7 è quella inglese.

Ciao,

se si tratta di Windows 8 o Windows 7 con Internet Explorer 8 va bene. Se vuoi installare Windows 7 con IE 9 o 10 devi modificare il file ini col pacchetto adatto.

Non ho un pc a disposizione al momento, se non ci riesci ti posto le modifiche lunedì.

sticky74 25-05-2013 17:48

Ciao,

ti ringrazio in anticipo e aspetto le tue modifiche al file ini (ho la versione win7 pro x64 SP1 U en-us X17-59186).

Tom Joad 26-05-2013 19:52

1 Allegato(i)
Ho modificato il file con ini con le versioni in inglese di Internet Explorer, te lo allego

Cavallomatto 03-06-2013 11:55

Per inziare,voglio farti i miei complimenti per l'enorme lavora che hai fatto.Durante le fasi per integrare i vari aggiornamenti in W8PRO,mi compare un singolo errore come da immagine


Il log non riporta informazioni ne utili ne leggibili.Esiste modo,per modificare lo script,in modo che proceda cmq all'integrazione dei vari aggiornamenti senza doverli neccesariamente scaricarli e,decedire io quali integrare?Ti ringrazio in via anticipata;)

Tom Joad 03-06-2013 13:48

1 Allegato(i)
Quote:

Originariamente inviato da Cavallomatto (Messaggio 39547279)
Per inziare,voglio farti i miei complimenti per l'enorme lavora che hai fatto.Durante le fasi per integrare i vari aggiornamenti in W8PRO,mi compare un singolo errore come da immagine


Il log non riporta informazioni ne utili ne leggibili.Esiste modo,per modificare lo script,in modo che proceda cmq all'integrazione dei vari aggiornamenti senza doverli neccesariamente scaricarli e,decedire io quali integrare?Ti ringrazio in via anticipata;)

Ciao,

mi sembra un aggiornamento scaricato parzialmente. Ho notato che qualche volta i file sono offline sui server Microsoft, in genere è questione di un paio di minuti e ternano online. Prova a cancellare quel file e a riscaricarlo.

Per quanto riguarda la possibilità di decidere quali aggiornamenti integrare...

1. NON INTEGRARE UN SINGOLO AGGIORNAMENTO

Devi aprire il file .ini che ti interessa e commentare la riga (con un ; )


2. NON INTEGRARE UNA CATEGORIA DI AGGIORNAMENTI

Prendo ad esempio il file di Windows 8 x64:


Lo script integra, nell'ordine, gli aggiornamenti di Windows, DotNet 4.5 e Flash Internet Explorer non è presente in questa lista perché viene aggiunto in base alla selezione fatta, quindi viene integrato alla fine. Nell'esempio ho commentato la riga DOTNET45 per dire allo script di non integrare (e non verranno neanche scaricati) gli aggiornamenti di DotNet 4.5.

Gli aggiornamenti puoi anche scaricarli manualmente nella cartella Updates: se vengono trovati non c'è bisogno di riscaricarli

IMPORTANTE
Ho creato sia lo script che i file ini con Notepad++. Ho notato che facendo qualche modifica al volo con notepad andava tutto a puttane (basta commentare una riga e salvare il file). Non so perché, ma comunque per mettere mano ai file ini stai alla larga dal Blocco Note di Windows.

Per concludere, proprio ieri mi sono deciso a passare a Windows 8 sul portatile e ho notato che qualcosa mi era sfuggito. Ti posto il file di configurazione corretto (rinominalo da .txt a .ini e copialo nella cartella Config)



P.S.: martedì prossimo è il patch day, nessuno è disponibile a prendersi in carico un sistema operativo e a gestire le liste degli aggiornamenti? Da solo non ce la faccio :(

Khronos 03-06-2013 13:52

non può darti una mano questo sito?
http://kbupdate.info/

Tom Joad 03-06-2013 14:03

Quote:

Originariamente inviato da Khronos (Messaggio 39547976)
non può darti una mano questo sito?
http://kbupdate.info/

Grazie, non conoscevo. C'è un sacco di roba lì, anche gli aggiornamenti rilasciati per gli OEM, penso che sarebbe un massacro.

Ho sempre fatto così: installo il SO in una virtual machine e creo uno snapshot, dopo di che eseguo Windows Update. Per ogni update clicco col tasto destro e seleziono "Copia dettagli", dopo di che seguo il link a mano le url per i download (alcuni non sono disponibili sul sito, e lì bisogna spulciare il log di Windows Update).

Integro quelli e soltanto quelli, mentre su altri lidi (ad esempio il forum di MyDigitalLife) hanno liste sterminate ed è un macello poi gestire gli aggiornamenti sostituiti ogni mese.

fabriziob 03-06-2013 16:57

ciao Tom Joad ottimo lavoro e un po' che cercavo una cosa del genere....

ho provato ad usarlo su dei pc ,sia con win xp che con win7, ma appena lo lancio mi da un errore sul 7z "non e' un'applicazione di Win32 valida"
ho sostituito l'eseguibile 7z con un'altra versione ed ora non mi da piu' questo
errore, pero' non mi rileva nessuna versione di windows nella iso.
Questa l'ho ricavata da un dvd di windows7 32 bit service pack 1
dove sbaglio???
grazie anticipatamente

Tom Joad 03-06-2013 17:05

Quote:

Originariamente inviato da fabriziob (Messaggio 39548960)
ciao Tom Joad ottimo lavoro e un po' che cercavo una cosa del genere....

ho provato ad usarlo su dei pc ,sia con win xp che con win7, ma appena lo lancio mi da un errore sul 7z "non e' un'applicazione di Win32 valida"
ho sostituito l'eseguibile 7z con un'altra versione ed ora non mi da piu' questo
errore, pero' non mi rileva nessuna versione di windows nella iso.
Questa l'ho ricavata da un dvd di windows7 32 bit service pack 1
dove sbaglio???
grazie anticipatamente

Ciao Fabrizio,

su Windows XP non l'ho mai testato (e non ho intenzione di farlo). Credo che l'errore di 7-zip sia dovuto al fatto che lo stai utilizzando su un sistema a 32 bit. In effetti finora non mi sono mai posto il problema, l'ho utilizzato su Windows 7 e 8 entrambi a 64 bit. Prima o poi dovrò aggiungere un controllo... :stordita:

Meglio così, ho postato questo script proprio per avere riscontro e risolvere problemi che magari non mi ero posto.

Per quanto riguarda la ISO, sei sicuro che sia originale? Puoi scaricarne una legalmente, i link li trovi in questa discussione: http://www.hwupgrade.it/forum/showpo...45&postcount=4

fabriziob 03-06-2013 17:21

grazie per la risposta cosi' celere
in effetti erano tutti sistemi a 32 bit appena ho il tempo provero' con un win7 64bit
per quanto riguarda invece la iso l'ho ricavata da un dvd originale con due
software diversi (imgburn e folder2iso) e con entrambi ho avuto lo stesso errore
ciao e grazie di nuovo


Tutti gli orari sono GMT +1. Ora sono le: 07:06.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.