Für denjenigen, wo die KMS Geschichte zu teuer und zu aufwändig ist und bereits Rechner von Dell mit "fertiger" Offlineaktivierung angekommen sind funktioniert folgendes sehr gut:
1)
http://directedge.us/content/abr-activa ... nd-restore
Vor Neuinstallation von der gelieferten, preaktivierten Kiste die Aktivierung sichern. (für Windows 7 die Beta) (Lizenz besteht aus Key sowie Certificate-File)
2) Auf dem Client nach Neuinstallation einfach importieren.
Anbei meine Lösung, bei der ich mir via INF-Datei ein Mapping für mehrere Modellreihen gebaut habe. Zudem beziehe ich aus der Control-Datei via Input noch die Charge (da sich die Keys und Certs ja auch ändern können!):
Ordnerstruktur
Code: Alles auswählen
/setup.ins
/resources/license_mapper.ini
/resources/optiplexXXXX.xrm-ms
license_mapper.ini
Code: Alles auswählen
[optiplexXXXX]
licensekey=XXXX-XXX.....
certificatefile=optiplexXXXX.xrm-ms
setup.ins
Code: Alles auswählen
; OEM-Preactivation
; ----------------------------------------------------------------
[Actions]
requiredWinstVersion >= "4.11.2.6"
; Variablendefinition
; ----------------------------------------------------------------
; statisch, nicht verändern
DefVar $errorcode$
DefVar $logdir$
DefVar $productid$
DefVar $minimumspace$
; variabel, frei veränderbar
DefVar $property_charge$
DefVar $licensekey$
DefVar $certificatefile$
; Variablenzuweisung
; ----------------------------------------------------------------
; statisch, nur den Gegebenheiten anpassen
Set $logdir$ = "%SystemDrive%\tmp"
Set $productid$ = "oem-preactivation"
Set $minimumspace$ = "30 MB"
; teilstatisch, nur den Gegebenheiten anpassen
; Abruf aus den Propertys der Controldatei
Set $property_charge$ = GetProductProperty("charge","yes")
; Abruf aus INI-Datei
Set $licensekey$ = GetValueFromInifile ("%ScriptPath%\resources\license_mapper.ini", $property_charge$, "licensekey", "ERROR_ON_CLIENT")
Set $certificatefile$ = GetValueFromInifile ("%ScriptPath%\resources\license_mapper.ini", $property_charge$, "certificatefile", "ERROR_ON_CLIENT")
; Skriptbeginn
; ----------------------------------------------------------------
; Prüfung auf freien Speicher
; ----------------------------------------------------------------
if not(Hasminimumspace ("%SystemDrive%", $minimumspace$))
LogError "Nicht genuegend freier Speicher auf %SystemDrive%, " + $minimumspace$ + " auf dem Speicher %SystemDrive% werden für " + $productid$ + " benoetigt!"
isFatalError "Kein Speicher"
; Ablauf stoppen und Installationsstatus auf fehlerhaft setzen.
endif
; Eigene Prozedurenaufrufe und Ablaufplanung
; ----------------------------------------------------------------
; variabel, frei veränderbar
Sub_preactions
Sub_activation
Sub_postactions
; Skriptende
; Subprozeduren
; ----------------------------------------------------------------
; Installationsopener - statisch, nicht verändern
[Sub_preactions]
ShowBitmap "%ScriptPath%\resources\logo.png" $productid$
Message "Installation von " + $productid$ + " wird ueberprueft..."
if $property_charge$ = "none"
Message "Keine Charge angegeben!"
isFatalError "Keine Charge angegeben!"
endif
; variabel, frei veränderbar
[Sub_activation]
Message "Die Aktivierung fuer Charge " + $property_charge$ + " wird durchgefuehrt..."
DosInAnIcon_activate
Sub_errorhandler
[Sub_postactions]
Message "Das System wird neu gestartet..."
ExitWindows /Reboot
; Fehlerbehandlungsroutine - statisch, nicht verändern
[Sub_errorhandler]
Set $errorcode$ = getLastExitCode
if ($errorcode$ = "0")
Message "Aktion war erfolgreich!"
else
Message "Aktion schlug mit Errorcode " + $errorcode$ + " fehl!"
isFatalError
endif
; Sektionen - variabel, frei veränderbar
; ----------------------------------------------------------------
[DosInAnIcon_activate]
REM Clientkey wird gesetzt...
"cscript.exe" "slmgr.vbs" /ipk $licensekey$
REM Certificate wird importiert...
"cscript.exe" "slmgr.vbs" /ilc "%ScriptPath%\resources\$certificatefile$"