Se vi capita di aprire una chiamata al Supporto Tecnico è possibile che vi venga richiesto di installare un un aggiornamento che non è ancora stato rilasciato al pubblico.

Queste hotfix private vengono anche chiamate LDR che significa “Limited Distribution Release”
Le hotfix pubbliche invece fanno parte della serie GDR che sta per “General Distribution Release”

Trovate maggiori informazioni in questo articolo:

http://blogs.technet.com/b/itasupport/archive/2009/09/14/windows-update-tipologie-di-aggiornamenti-qfe-ldr-e-gdr.aspx

Una hotfix GDR o LDR consiste in un file chiamato “installer”, con estensione .msu, che contiene tutti i files di sistema che vengono aggiornati ed i comandi per installare questi files.

Ci sono diversi tipi di installer, a seconda del contenuto:

1- GDR

2- LDR

3- GDR + LDR

Per quanto riguarda il primo ed il secondo tipo potete eseguire direttamente l’installer e la corrispondente hotfix verrà installata.

Per quanto riguarda il terzo tipo l’azione da eseguire dipende dal risultato che volete ottenere.
La versione GDR di una hotfix può essere installata eseguendo direttamente l’installer.
Se invece volete installare la versione LDR la procedura è un po’ più complicata ed è spiegata nel dettaglio sempre nell’articolo linkato più sopra.

Se dovete installare diverse hotfix LDR su parecchi server l’operazione può richiedere parecchio tempo quindi abbiamo pensato di preparare uno script per semplificare l’operazione.
Questo script è pensato per sistemi operativi Windows 7 e successivi.

Option Explicit

Dim oFso, oShell, oExec, oDir, oFile

Dim cTempDir, cCmd, cSource, nRet, cHFDir, cCab, cFile

if wscript.arguments.count = 0 then

wscript.echo "Please speficy a file name"

wscript.quit

end if

Set oFso = CreateObject("Scripting.FileSystemObject")

Set oShell = CreateObject("WScript.Shell")

cSource = wscript.arguments(0)

if not oFso.FileExists(cSource) then

wscript.echo "The file " + cSource + " does not exists"

wscript.quit

end if

cTempDir = oShell.ExpandEnvironmentStrings("%Temp%") + "\LDRInstaller-" + oFso.GetTempName

oFso.CreateFolder cTempDir

cCmd = "expand -f:* " + cSource + " " + cTempDir

wscript.echo cCmd

Set oExec = oShell.Exec(cCmd)

do while oExec.status = 0

wscript.sleep 100

loop

wscript.echo oExec.stdout.ReadAll()

wscript.echo oExec.stderr.ReadAll()

cCab = ""

Set oDir = oFso.GetFolder(cTempDir)

for each oFile in oDir.Files

cFile = LCase(oFile.name)

if instr(cFile, "kb") > 0 and right(cFile,3) = "cab" then

cCab = oFile.name

end if

next

if cCab = "" then

wscript.echo "No cab file found inside the hotfix installer"

CleanUp

end if

cHFDir = cTempDir + "\hotfix"

oFso.CreateFolder cHFDir

cCmd = "expand -f:* " + cTempDir + "\" + cCab + " " + cHFDir

wscript.echo cCmd

Set oExec = oShell.Exec(cCmd)

do while oExec.status <> 0

wscript.sleep 100

loop

wscript.echo oExec.stdout.ReadAll()

wscript.echo oExec.stderr.ReadAll()

if not oFso.FileExists(cHFDir + "\update-bf.mum") then

wscript.echo "This update does not contain the installer for the LDR branch"

CleanUp

end if

cCmd = "pkgmgr /ip /m:" + cHFDir + "\update-bf.mum"

wscript.echo cCmd

Set oExec = oShell.Exec(cCmd)

do while oExec.status <> 0

wscript.sleep 100

loop

wscript.echo oExec.stdout.ReadAll()

wscript.echo oExec.stderr.ReadAll()

CleanUp

Sub CleanUp

oShell.run "cmd.exe /c rd " + cTempDir + " /S /Q"

wscript.quit

End Sub

Per utilizzare lo script:

- Copiate lo script in una cartella (per esempio C:\LDRInstaller) e chiamatelo LDRInstaller.vbs

- Aprite un prompt dei comandi come amministratore e andate nella cartella C:\LDRInstaller

- Copiate nella stessa cartella l’installer per il quale volete installare la versione LDR

- Eseguite il comando cscript LDRInstaller.vbs <nome dell’installer>
Per esempio cscript LDRInstaller.vbs Windows6.1-KB12345678-x64.msu


Buona giornata e al prossimo articolo  :-)

Gianni Bragante
Senior Support Engineer