View Single Post
Old 17-05-2004   #5
toreach
Registered User
Grünschnabel
 

Join Date: May 2004
Location: Deutschland
Posts: 10
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge






Der Vorteil dieser Methode ist die geringere Zeit die das Setup benötigt. Der Vorgang des kopierens der Dateien auf die
Festplatte sowie der darauffolgende Neustart wird eingespart! Die Updatefunktion verliert man dadurch zwar vorerst, aber
ich persönlich hab die nie Benutzt. Ich schätze einigen wird es ähnlich gehen.

Ausserdem wird eine solche CD in den meisten Fällen auf eine Variante fixiert. Und das ist eher selten die Updatemethode...


01. Auf der WindowsXP CD in das Verzeichnis \i386 wechseln


02. Winnt32.exe mit dem Parameter /NoReboot ausführen "%CDROM%\i386\winnt32.exe /noreboot"


03. Das XP Setup erscheint.


04. "Neue Installation" auswählen




05. Die Optionen auswählen wie sonst auch






06. Bei den Setup Optionen auf "Erweitert" klicken und "Kopiere alle installationsdateien von der CD" markieren. Wenn das
Kästchen nicht markiert werden kann ("vergraut" ist) werden alle Dateien kopiert






07. Keine aktuellen Setup Dateien aus dem Internet laden lassen




08. Das Setup kopiert nun die Dateien nach C:\XP-INST in Zwei Verzeichnisse



09. Bennene diese beiden Verzeichnisse um!

• $WIN_NT$.~BT > BOOT
• $WIN_NT$.~LS > Install

• Im Verzeichnis Install die Datei Size.sif löschen

• Im Verzeichnis BOOT folgende Dateien löschen
  • bootsect.dat
  • migrate.inf
  • winnt.sif


10. Verschiebe das Verzeichnis BOOT in das Install Verzeichniss




11. Wechsel in das Verzeichnis BOOT und öffne die Datei Setupldr.bin mit einem HexEditor (z. B. Cygnus).




12. Im Hexeditor die Zeichenkette (Ascii String/Text) "i386" durch "BOOT" ersetzen lassen. Groß-/Kleinschreibung beachten.

Es sollte 4 übereinstimmungen geben.




13. Danach die Datei speichern. Kein Backup erstellen lassen!

14. Nun müssen noch die CDIdents und ein Bootmenü erstellt werden.

• Entpacke die Datei VOL1.DAT nach \XPU\XPCD
• VOL1.DAT in einem Hexeditor öffnen




• und die Zeichenkette "VOL1" durch BOOT" ersetzen.




• Datei speichern und kein Backup erstellen lassen!

• Die Datei CDMenu.zip heunterladen und in das XPU\XPCD Verzeichnis entpacken

• Im XPU\XPCD verzeichniss kann nun die Datei Diskemu.cmd editiert und angepasst werden


• So ungefähr sieht dann das Bootmenü aus. (Die Datei DiskEmu.CMD für Änderungen editieren)




15. Zum Schluss eine Imagedatei mit CDImage erstellen

Code:
cdimage.exe -lXPCD -t08/23/2001,13:00:00 -h -n -m -o -bc:\XPU\XPCD\VOL1.DAT c:\XPU\XPCD c:\XP.ISO
Das Label ist XPCD und kann angepasst werden.

Code:
cdimage.exe -lXPCD




Um Treiber auf die CD zu integrieren muss man die TXTSETUP.SIF und DOSNET.INF bearbeiten.

Dazu müssen die *.sys und *.inf Dateien des SATA/RAID/SCSI-Treibers direkt in das "i386"-Verzeichnis (bei Asus z.B.
Si3112r.inf, Si3112r.sys) kopiert werden.

Die Dateien sind nur ein Beispiel und müssen entsprechen eurer .sys und .inf Dateien geändert werden.

Jetzt öffnet man die "txtsetup.sif" und fügt folgendes hinzu:

Code:
    [SourceDisksFiles] 
    Si3112r.sys = 1,,,,,,3_,4,1 
    Si3112r.inf = 1,,,,,,,20,0,0 
    ... 
    [HardwareIdsDatabase] 
    PCI\VEN_1095&DEV_3112.DeviceDesc="Silicon Image SiI 3112 SATARaid Controller" 

(Dieser Wert steht in der Treiber-Inf-Datei!)

    ... 
    [SCSI.Load] 
    Si3112r = Si3112r.sys,4 
    ... 
    [SCSI] 
    Si3112r = "Silicon Image SiI 3112 SATARaid Controller"
Datei schließen und natürlich speichern

Nun die Datei "dosnet.inf" öffnen und wie folgt modifizieren:

Code:
    [FloppyFiles.2] 
    d1,Si3112r.sys 
    [Files] 
    d1,Si3112r.sys 
    d1,Si3112r.inf
Die beiden Dateien im i386 Verzeichnis speichern

Der Treiber wird jetzt mitgeladen, sobald von der CD gebootet wird!


Als Ergänzung eine Kurzbeschreibung der Bedeutung von den Werten:








Quote:
This is taken from the MS Help file for the deployment tools pack (ref)

[OEMBootFiles]
Answer File = Unattend.txt

The [OEMBootFiles] section contains entries for specifying OEM-supplied boot files. This entry is valid only if you set
OemPreinstall to Yes and you place the files listed here in the \$OEM$\Textmode folder of the OEM’s distribution share point.

This section is required if you use the ComputerType entry in either the [Unattended] or [MassStorageDrivers] sections of
Unattend.txt.

Important

Add driver entries only to the [MassStorageDrivers] and [OEMBootFiles] sections for bootable mass-storage devices. Do not
include secondary mass-storage devices. Instead, add the drivers for secondary mass-storage devices to the folder specified
by the OemPnPDriversPath entry in your unattended Setup answer file. Including drivers for non-bootable mass-storage
devices in the [MassStorageDrivers] or [OEMBootFiles] sections causes an error during Setup.

HAL_file_name
Maps to a hardware abstraction layer (HAL) description in the ComputerType entry of the [Unattended] section of the
Unattend.txt file.

SCSI_driver_file_name
Maps to a mass-storage device driver description defined in the [MassStorageDrivers] section of the Unattend.txt file. You can
list multiple instances of SCSI_driver_file_name in the [OEMBootFiles] section.

TxtSetup.oem
This file contains descriptions of all the OEM-supplied drivers listed in this section and includes instructions on how to install
them. This file must exist if the Unattend.txt file contains an [OEMBootFiles] section.

If your mass-storage device is a Plug and Play device, verify that a Hardware Identification section and a reference to the
catalog file for the driver (<Driver>.cat) exist in the Txtsetup.oem file.

If the Hardware Identification section does not exist, you must add [HardwareIds.scsi.yyyyy] to the Txtsetup.oem file and
verify that the following information is included:

id = xxxxx, yyyyy

where xxxxx represents the device ID, and yyyyy represents the service associated with the device.




Es gibt mehrere Stellen an denen Pfade geändert werden können.

Am einfachsten ist natürlich Pfade über die Winnt.sif anzugeben. Dort lassen sich folgende Verzeichnisse bestimmen:

Code:
[Unattended]
    TargetPath=\Windows
    ProgramFilesDir="C:\Programme"
    CommonProgramFilesDir="C:\Gemeinsame Dateien"
Code:
[GuiUnattended]
    ProfilesDir="C:\Dokumente und Einstellungen"
  • Wem das nicht reicht kann Verzeichnisse auch über die Registry bestimmen. Da dort sämtliche Pfade (abgesehen von
    manchen Systemvariablen) angegeben werden lässt sich einiges mehr ändern.
  • Bei dem ändern von Pfaden über die Registry muss beachtet werden was wann erstellt wird und wann die Pfadänderungen
    vorgenommen werden.
  • Empfehlenswert ist es die Änderungen in der cmdlines.txt vorzunehmen. HKCU Einträge betreffen somit das Default User
    Profil. HKLM Einträge sollten so früh wie möglich importiert werden. Die cmdlines.txt ist auch hierfür gut geeignet.

Fonts
Favorites
Verlauf
Cookies
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

Installation Sources
ServicePackFiles
Driver Cache
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup

Downloaded Program Files
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Downloaded Program Files

ActiveX Cache
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ActiveX Cache

Inf
Media
Program Files
Web\Wallpaper
Common Files
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

System32\WBEM
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM

(Anm.: Einige Einträge sind nicht von Beginn an vorhanden und werden erst bei Bedarf erstellt)






Die Datei cmdlines.txt wird sofern vorhanden während der T-12 Stage des Setups abgearbeitet. Zeile für Zeile. Sie muss nur
im entsprechenden Verzeichnis erstellt werden und braucht nirgends angegeben werden. Man kann so Software installieren
und Einstellungen vornehmen bevor ein Benutzer erstellt wurde!

Das bedeutet dass zum Beispiel alle HKCU Registry Einstellungen die über die cmdlines.txt installiert werden automatisch dem
Default User Profil zugefügt werden. Jeder Benutzer der danach erstellt wird beinhaltet automatisch alle zu diesem Zeitpunkt
vorgenommenen Änderungen an der Registry.

Das kann einem Probleme bereiten wenn ein Benutzer zum Beispiel die Standardeinstellungen verwenden soll. Die gibt es
nämlich nicht mehr. Deshalb sollte man nur allgemeine oder wichtige Änderungen an dieser Stelle vornehmen. (Zum Beispiel
die Reaktionszeit des Startmenüs erhöhen. Oder die Einstellungen für eine DSL Verbindung optimieren.)

Um die Übersicht zu wahren sollte man anstatt die Programme direkt zu starten Batchdateien erstellen die über die
cmdlines.txt aufgerufen werden.

Das kann jedoch in einem riesigen Chaos enden, und zwar weil das Setup nicht von selbst wartet bis ein Prozess beendet ist.

Sind nun 10 Einträge vorhanden werden alle Einträge aufgerufen und die Software wird gleichzeitig installiert. Das führt
meistens zu Konflikten.

Um das zu vermeiden sollte man die Installationsdateien mit einem vorangestellten “start /wait“ ausführen. Dadurch wird die
Verarbeitung der cmdlines.txt gestoppt bis das aufgerufene Setup beendet wurde.

Eine Zeile in der cmdlines.txt sieht dadurch ungefähr so aus.

Code:
Start /wait “C:\Install\Apps\Internet\Browser\IE 60.EXE /VERYSILENT“
Sollten Leerzeichen im Pfad vorhanden sein muss die gesamte Zeile in Anführungsstrichen stehen!





Die GuiRunOnce Sektion innerhalb der Winnt.sif kann ebenfalls dazu genutzt werden um Software zu installieren. Sie wird
parallel zu RunOnceEx ausgeführt. Also passt auf das keine Einträge doppelt vorkommen.

Das Setup erstellt mit den hier angegebenen Zeilen Einträge in der Registry unter
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runonce.

Ein Beispiel und eine kleine Erklärung dazu sollten euch reichen um den Aufbau zu verstehen.

Code:
[GuiRunOnce]
%systemdrive%\install\start.cmd
oder auch ...

Code:
[GuiRunOnce]
command0=C:\install\start.cmd
command1=D:\install\start.cmd
command2=%systemdrive%\install\start.cmd
  • Diese Zeilen werden in dem entsprechenden Registrypfad erstellt und einmalig beim allerersten Logon ausgeführt.
  • Ihr könnt Variablen wie %Systemdrive% verwenden um die Installation flexibler zu machen.
  • Man kann die einzelne Software auch direkt installieren ohne den Umweg einer Batchdatei zu gehen. Dadurch
    leidet aber die Übersicht.

  • Der Inhalt der Start.cmd könnte folgendermassen aussehen.
Code:
CLS
@echo off
TITLE Windows XP SP1 - Unattended Installation

ECHO.
ECHO In den nächsten Minuten wird verschiedenste Software, 
ECHO Windows Updates, und RegistryTweaks implementiert.
ECHO Der Computer wird im Anschluss an die Installation automatisch
ECHO einen Neustart durchführen.

ECHO.
ECHO Removing Wallpapers and Screensavers...
DEL "%systemroot%\*.bmp"
DEL "%systemroot%\Web\Wallpaper\*.jpg"
DEL "%systemroot%\system32\dllcache\*.scr"
DEL "%systemroot%\system32\*.scr"

ECHO.
ECHO Removing useless shortcuts...
DEL "%systemdrive%\Documents and Settings\All Users\Start Menu\Windows Update.lnk"
DEL "%systemdrive%\Documents and Settings\All Users\Start Menu\Set Program Access and Defaults.lnk"
DEL "%systemdrive%\Documents and Settings\All Users\Start Menu\Windows Catalog.lnk"

ECHO.
ECHO Installing MSN Messenger 6.0.0602 Final
ECHO Please wait...
start /wait %systemdrive%\install\MSN\MsnMsgs.msi /qn

ECHO.
ECHO Deleting ASP.NET User Account created by .NET Framework 1.1...
net user aspnet /delete

ECHO.
ECHO Starting installation of Applications

ECHO.
ECHO Installing Diskeeper 7.0.428
ECHO Please wait...
start /wait %systemdrive%\install\Applications\diskeeper\Setup.exe /s /v/qn

ECHO.
ECHO Installing Kerio Personal Firewall 2.1.5
ECHO Please wait...
start /wait %systemdrive%\install\Applications\kpf\Setup.exe -s

ECHO.
ECHO Registering Nero Burning ROM...
REGEDIT /S %systemdrive%\install\Applications\Nero\register.reg

ECHO.
ECHO Installing Nero Burning ROM v5.5.10.42
ECHO Please wait...
start /wait %systemdrive%\install\Applications\Nero\Nero551042.exe /silent /noreboot

ECHO.
ECHO Updating Symantec Antivirus Virus Definitions (May 14th 2003)...
COPY "%systemdrive%\install\Applications\sav\vd155c08.xdb.xdb" "%systemdrive%\Documents and Settings\All Users\Application Data\Symantec\Norton AntiVirus Corporate Edition\7.5\"

ECHO.
ECHO Restarting the PC in 1 minute...
shutdown.exe -r -f -t 60 -c "Windows XP will now restart in 1 minute, this will give enough time for the shortcuts to update and for the shell to fully load before its ready to restart!"

ECHO.
ECHO Deleting Temp Installation Files...
RD /S /Q %systemdrive%\Drivers
RD /S /Q %systemdrive%\install

EXIT




01. Zuerst einmal alle Einträge in der [GuiRunOnce] Sektion in der Datei Winnt.sif/unattend.txt entfernen

02. Um nun Software über den RunOnceEx Eintrag der Registry installieren zu können müssen die Einträge während des
Setups importiert werden.
  • Dazu erstellt man im Root der XP Installation das Verzeichnis $OEM$
  • Nun öffnet man Notepad und fügt folgenden Text ein.
Code:
[COMMANDS] 
"RunOnceEx.cmd"
  • Diese Datei als cmdlines.txt im Verzeichnis $OEM$ speichern
03. Jetzt muss nur noch die RunOnceEx.cmd erstellt werden
  • Hier als Beispiel der Inhalt von einer RunOnceEx.cmd.
Code:
@echo off 

SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx 

REG ADD %KEY% /V TITLE /D "Installing Applications" /f 

REG ADD %KEY%\001 /VE /D "Preparing Installation..." /f 

REG ADD %KEY%\002 /VE /D "Ahead Nero Burning ROM 6.3.0.3 Ultra Edition" /f 
REG ADD %KEY%\002 /V 1 /D "%systemdrive%\install\CDBrennerSoftware\nero6303.exe /SILENT /NO_UI /NOREBOOT" /f 

REG ADD %KEY%\005 /VE /D "GetRight 5.0.2" /f 
REG ADD %KEY%\005 /V 1 /D "%systemdrive%\install\DownloadManager\getrt502.exe /s /noreboot" /f 
REG ADD %KEY%\005 /V 2 /D "REGEDIT /S %systemdrive%\install\getright\register.reg" /f 

REG ADD %KEY%\006 /VE /D "WinISO 5.3" /f 
REG ADD %KEY%\006 /V 1 /D "%systemdrive%\install\WinISO\WinISO53.exe /VERYSILENT /SP-" /f 

REG ADD %KEY%\007 /VE /D "Daemon Tools 3.3.3" /f 
REG ADD %KEY%\007 /V 1 /D "%systemdrive%\install\CDEmulator\daemon.msi /qn" /f 

REG ADD %KEY%\008 /VE /D "Flash FXP 2.1" /f 
REG ADD %KEY%\008 /V 1 /D "%systemdrive%\install\FTPManager\FlashFXP_21_Setup.exe /SILENT" /f 

REG ADD %KEY%\009 /VE /D "Adobe Acrobat Reader 6.0 German" /f 
REG ADD %KEY%\009 /V 1 /D "%systemdrive%\install\PDFReader\AdbeRdr60_deu_full.exe -p"-s /v\"/qn\""" /f 

REG ADD %KEY%\010 /VE /D "CenaTek RamDisk XP 1.8.200" /f 
REG ADD %KEY%\010 /V 1 /D "%systemdrive%\install\RAMDisk\RamDiskXP-18200.msi /qn" /f 

REG ADD %KEY%\011 /VE /D "WinHTTrack 3.3.1 Beta" /f 
REG ADD %KEY%\011 /V 1 /D "%systemdrive%\install\WebSiteSpoofer\httrack-331-BETA-3.exe /VERYSILENT" /f 

EXIT
  • Durch SET wird die Variable KEY definiert und mit HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx gefüllt.

    Dadurch bleibt alles übersichtlicher. REG.EXE wird genutzt da es erlaubt Variablen zu verwenden.

04. Die cmdlines.txt wird während der T-12 Stage des XP Setups abgearbeitet.
  • Beim ersten Login wird das so erstellte Setup gestartet und gibt dem ganzen ein nettes Outfit.

Man muss die entsprechenden Silent Switches für die jeweilligen Setuproutinen kennen, sonst muss der Benutzer jedes Setup
selbst durchführen.

Inno Setup

• setup.exe /VERYSILENT /SP-

NSIS

• setup.exe /S /D=E:\Software\CDex

Windows Installer

• setup.msi "/qn REBOOT=Suppress"
• Einige Setupdateien brauchen den /s/v/qn Switch um einen Neustart zu verhindern
• setup.exe /s /v"/qn REBOOT=Suppress"

WISE Installer

• setup.exe /s


Falls kein Silentswitch gefunden werden kann (sucht erst gar nicht nach den WinAmp Switches. Es gibt keine!) ist es möglich
mit z.B. Symantecs AI Snapshot eine eigene Setupdatei zu erstellen die dann keine Eingaben erfordert. AutoIt, InstallRite und
WinInstall LE können das auch und sind im Gegensatz zu AI Snapshot Freeware.

Oftmals bietet so eine Software auch an (zumindest bei Symantec ist es möglich) ein komplett eigenes Setup zu erstellen.
Kann ganz nützlich sein.


RunOnceEx von der CD

Man kann sich das kopieren auch sparen. Nur müssen die Einträge in RunOnceEx auf die CD verweisen. Das geht am
einfachsten mit dem IF Befehl.

So ungefähr sieht eine RunOnceEx.cmd Datei aus um von der CD zu installieren.

Einzig die CD.txt muss im Root der CD erstellt werden. Wird diese Datei dann gefunden wird die CDRom Variable
entsprechend gefüllt. Die Software soll natürlich auch nicht kopiert werden. Deshalb erstellt man das entsprechende
Verzeichnis nicht im OEM Verzeichnis der CD sondern zB. direkt im Root der CD.

Code:
cmdow @ /HID
@echo off

IF EXIST D:\CD.txt set CDROM=D:
IF EXIST E:\CD.txt set CDROM=E:
IF EXIST F:\CD.txt set CDROM=F:
IF EXIST G:\CD.txt set CDROM=G:
IF EXIST H:\CD.txt set CDROM=H:
IF EXIST I:\CD.txt set CDROM=I:
IF EXIST J:\CD.txt set CDROM=J:

SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

REG ADD %KEY% /V TITLE /D "Installing Applications" /f

REG ADD %KEY%\001 /VE /D "Preparing Installation..." /f
REG ADD %KEY%\001 /V 1 /D "%CDROM%\Software\prepare.cmd" /f

REG ADD %KEY%\015 /VE /D "******* 120 Percent" /f
REG ADD %KEY%\015 /V 1 /D "%CDROM%\Software\*******\setup.exe /qn Reboot=Suppress" /f
REG ADD %KEY%\015 /V 2 /D "REGEDIT /S %CDROM%\Software\*******\register.reg" /f

REG ADD %KEY%\025 /VE /D "Diskeeper 8.0.478" /f
REG ADD %KEY%\025 /V 1 /D "%CDROM%\Software\Diskeeper\DiskeeperPro_8.0.478.exe /s /v/qn" /f

EXIT

Last edited by toreach on 17-05-2004 at 00:58
toreach is offline   Reply With Quote