Maelstorm Posted May 15, 2006 Share Posted May 15, 2006 After some digging and additional batch scripting, I have developed a working solution for the CD/DVD drive letter changing when the computer reboots from GUI mode setup to first login. The link below has the original thread http://www.msfn.org/board/index.php?showtopic=74179 Two additional script files are included and they are copied over to the HD from the DVD during text mode setup using the $OEM$ directory structure. The sequence of execution is as follows:cmdlines.txtWINSETUP.CMDSYSTEM-ANALYZE.CMDSYSTEM-CONFIGURE.CMDSYSTEM-INSTALL.CMD--OR--If the CD/DVD drive is D:, then the following sequence is executed:cmdlines.txtWINSETUP.CMDSYSTEM-ANALYZE.CMDSYSTEM-INSTALL.CMDWINSETUP.CMDThis is called from cmdlines.txt and runs at T-12 during the GUI mode setup phase. This determines what the current CD/DVD drive letter is, checks for the test environment, and then calls %SYSTEMDRIVE%\tmp\SYSTEM-ANALYZE.CMD@ECHO OFFREM Check the command line argument. If nothing is given, then we are going to do aREM live install from the DVD-ROM. If TST is given, then we are in the testREM environment on the harddisk and the base path is different.IF /I "%1"=="" GOTO :STARTIF /I "%1"=="TST" GOTO :TESTGOTO :ERRORREM This is the DVD-ROM Installation:STARTREM Hide the command windowCMDOW @ /HIDREM Find our CD-ROM Drive and set the evnironment variableSET CHECKFILE=win51ip.SP2IF EXIST C:\%CHECKFILE% SET CDROM=C:IF EXIST D:\%CHECKFILE% SET CDROM=D:IF EXIST E:\%CHECKFILE% SET CDROM=E:IF EXIST F:\%CHECKFILE% SET CDROM=F:IF EXIST G:\%CHECKFILE% SET CDROM=G:IF EXIST H:\%CHECKFILE% SET CDROM=H:IF EXIST I:\%CHECKFILE% SET CDROM=I:IF EXIST J:\%CHECKFILE% SET CDROM=J:IF EXIST K:\%CHECKFILE% SET CDROM=K:IF EXIST L:\%CHECKFILE% SET CDROM=L:IF EXIST M:\%CHECKFILE% SET CDROM=M:IF EXIST N:\%CHECKFILE% SET CDROM=N:IF EXIST O:\%CHECKFILE% SET CDROM=O:IF EXIST P:\%CHECKFILE% SET CDROM=P:IF EXIST Q:\%CHECKFILE% SET CDROM=Q:IF EXIST R:\%CHECKFILE% SET CDROM=R:IF EXIST S:\%CHECKFILE% SET CDROM=S:IF EXIST T:\%CHECKFILE% SET CDROM=T:IF EXIST U:\%CHECKFILE% SET CDROM=U:IF EXIST V:\%CHECKFILE% SET CDROM=V:IF EXIST W:\%CHECKFILE% SET CDROM=W:IF EXIST X:\%CHECKFILE% SET CDROM=X:IF EXIST Y:\%CHECKFILE% SET CDROM=Y:IF EXIST Z:\%CHECKFILE% SET CDROM=Z:REM Set our base DIR and call the main system script.SET BASEDIR=%CDROM%\INSTALLrem START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %BASEDIR%\SCRIPTS\SYSTEM-INSTALL.CMD %CDROM% %BASEDIR%START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %SYSTEMDRIVE%\TMP\SYSTEM-ANALYZE.CMD %CDROM% %BASEDIR%GOTO :EOFREM This is for our test environment:TEST@ECHO ONSET CDROM=E:SET BASEDIR=%CDROM%\Deployment\CDROM\INSTALLSTART /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %BASEDIR%\SCRIPTS\SYSTEM-INSTALL.CMD %CDROM% %BASEDIR%GOTO :EOFREM This is only called if there is a command line argument error:ERRORECHO Command Line ErrorECHO Valid Options are nothing and TST for install and testGOTO :EOFSYSTEM-ANALYZE.CMDThis checks the current CD/DVD drive letter. If the letter is not D:, then it will initiate a two stage reboot to allow windows to reorder the drive, otherwise it will just simply call %CDROM%\INSTALL\SCRIPTS\SYSTEM-INSTALL.CMD which will load the RunOnceEX reg key with the run data to install everything. This is one of two files that are copied to the HD at %SYSTEMDRIVE%\tmp.@ECHO OFFCMDOW @ /HIDREM This is called from WINSETUP.CMDREM Set Evnironment VariablesSET CDROM=%1SET BASEDIR=%2SET SCRIPTSDIR=%BASEDIR%\SCRIPTSSET TOOLSDIR=%BASEDIR%\TOOLSSET TEMPDIR=%SYSTEMDRIVE%\TMPSET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEXREM Install TweaksSTART /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\TWEAK-SYSTEM.CMD %BASEDIR%START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\TWEAK-REGISTRY.CMD %BASEDIR%START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\TWEAK-POWER.CMD %BASEDIR%START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\TWEAK-FILESYSTEM.CMD %BASEDIR%REM Check for where the DVD-ROM drive isIF /I "%CDROM%"=="D:" GOTO :ONESTAGEIF /I NOT "%CDROM%"=="D:" GOTO :TWOSTAGEGOTO :EOF:ONESTAGESTART /WAIT CMD.EXE /C %SCRIPTSDIR%\SYSTEM-INSTALL.CMDGOTO :EOF:TWOSTAGEREM RegOnceEXREG ADD %KEY% /V TITLE /D "Analyze System" /fREG ADD %KEY%\000 /VE /D "Analyzing System..." /fREG ADD %KEY%\000 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %TEMPDIR%\SYSTEM-CONFIGURE.CMD" /fREG ADD %KEY%\001 /VE /D "Rebooting..." /fREG ADD %KEY%\001 /V 1 /D "%SYSTEMROOT%\System32\SHUTDOWN.EXE -r -t 2" /fREG ADD %KEY%\001 /V 2 /D "REG DELETE %KEY%\000 /f" /fREG ADD %KEY%\001 /V 3 /D "REG DELETE %KEY%\001 /f" /fGOTO :EOFSYSTEM-CONFIGURE.CMDAfter the reboot caused by SYSTEM-ANALYZE.CMD, this script runs to analyze what the current CD/DVD drive letter is and then calls SYSTEM-INSTALL.CMD to load RunOnceEX with the data necessary to install everything. This is the second of two files that is installed onto the HD from the $OEM$ file structure during text mode setup.@ECHO OFFCMDOW @ /HIDREM This gets called from RegOnceEx at first login.REM Find our CD-ROM Drive and set the evnironment variableSET CHECKFILE=win51ip.SP2IF EXIST C:\%CHECKFILE% SET CDROM=C:IF EXIST D:\%CHECKFILE% SET CDROM=D:IF EXIST E:\%CHECKFILE% SET CDROM=E:IF EXIST F:\%CHECKFILE% SET CDROM=F:IF EXIST G:\%CHECKFILE% SET CDROM=G:IF EXIST H:\%CHECKFILE% SET CDROM=H:IF EXIST I:\%CHECKFILE% SET CDROM=I:IF EXIST J:\%CHECKFILE% SET CDROM=J:IF EXIST K:\%CHECKFILE% SET CDROM=K:IF EXIST L:\%CHECKFILE% SET CDROM=L:IF EXIST M:\%CHECKFILE% SET CDROM=M:IF EXIST N:\%CHECKFILE% SET CDROM=N:IF EXIST O:\%CHECKFILE% SET CDROM=O:IF EXIST P:\%CHECKFILE% SET CDROM=P:IF EXIST Q:\%CHECKFILE% SET CDROM=Q:IF EXIST R:\%CHECKFILE% SET CDROM=R:IF EXIST S:\%CHECKFILE% SET CDROM=S:IF EXIST T:\%CHECKFILE% SET CDROM=T:IF EXIST U:\%CHECKFILE% SET CDROM=U:IF EXIST V:\%CHECKFILE% SET CDROM=V:IF EXIST W:\%CHECKFILE% SET CDROM=W:IF EXIST X:\%CHECKFILE% SET CDROM=X:IF EXIST Y:\%CHECKFILE% SET CDROM=Y:IF EXIST Z:\%CHECKFILE% SET CDROM=Z:REM Set our environment variablesSET BASEDIR=%CDROM%\INSTALLSET SCRIPTSDIR=%BASEDIR%\SCRIPTSSET TOOLSDIR=%BASEDIR%\TOOLSSET TEMPDIR=%SYSTEMDRIVE%\TMPSET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEXREM RegOnceEXREG ADD %KEY% /V TITLE /D "Configure System" /fREG ADD %KEY%\002 /VE /D "Configuring System..." /fREG ADD %KEY%\002 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-INSTALL.CMD %CDROM% %BASEDIR%" /fREG ADD %KEY%\003 /VE /D "Removing Files..." /fREG ADD %KEY%\003 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C DEL %TEMPDIR%\SYSTEM-CONFIGURE.CMD" /fREG ADD %KEY%\003 /V 2 /D "%SYSTEMROOT%\System32\CMD.EXE /C DEL %TEMPDIR%\SYSTEM-ANALYZE.CMD" /fREG ADD %KEY%\004 /VE /D "Rebooting..." /fREG ADD %KEY%\004 /V 1 /D "%SYSTEMROOT%\System32\SHUTDOWN.EXE -r -t 2" /fREG ADD %KEY%\004 /V 2 /D "REG DELETE %KEY%\002 /f" /fREG ADD %KEY%\004 /V 3 /D "REG DELETE %KEY%\003 /f" /fREG ADD %KEY%\004 /V 4 /D "REG DELETE %KEY%\004 /f" /fGOTO :EOFSYSTEM-INSTALL.CMDThis file resides in %CDROM%\INSTALL\SCRIPTS and remains on the CD/DVD. This file load all the RunOnceEX commands that are required to install everything onto the machine.@ECHO OFFCMDOW @ /HIDREM Get Our Command Line ParametersSET CDROM=%1SET BASEDIR=%2REM Setup Our EnvironmentSET SCRIPTSDIR=%BASEDIR%\SCRIPTSSET TOOLSDIR=%BASEDIR%\TOOLSSET TEMPDIR=%SYSTEMDRIVE%\TMPSET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEXREM Make sure that our temp directory is presentIF /I NOT EXIST %TEMPDIR% MKDIR %TEMPDIR%REM Set The Working DirectoryCHDIR %SCRIPTSDIR%REM Install TweaksREM START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\TWEAK-SYSTEM.CMD %BASEDIR%REM START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\TWEAK-REGISTRY.CMD %BASEDIR%REM START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\TWEAK-POWER.CMD %BASEDIR%REM START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\TWEAK-FILESYSTEM.CMD %BASEDIR%REM RegOnceEXREM Prepare the Install **MUST BE FIRST**REG ADD %KEY% /V TITLE /D "Installing Software" /fREG ADD %KEY%\010 /VE /D "Preparing Installation..." /fREG ADD %KEY%\010 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-PREPARE.CMD %BASEDIR%" /fREG ADD %KEY%\011 /VE /D "Set Video Resolution" /fREG ADD %KEY%\011 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-CHGRES.CMD %BASEDIR%" /fREG ADD %KEY%\012 /VE /D "Fork Image Rotator" /fREG ADD %KEY%\012 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C START CMD.EXE /C %SCRIPTSDIR%\SYSTEM-IMAGEROTATE.CMD %BASEDIR%" /frem REG ADD %KEY%\013 /VE /D "Set Background Image" /frem REG ADD %KEY%\013 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C START CMD.EXE /C %SCRIPTSDIR%\SYSTEM-SETWALLPAPER.CMD %BASEDIR%" /fREM Install CD Files and Recovery ConsoleREG ADD %KEY%\100 /VE /D "Installing Windows CD-ROM" /fREG ADD %KEY%\100 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-CDROM.CMD %CDROM% %BASEDIR%" /fREG ADD %KEY%\101 /VE /D "Installing Recovery Console" /fREG ADD %KEY%\101 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-RC.CMD %CDROM% %BASEDIR%" /fREM Install SoftwareSET SEQUENCE=110IF /I EXIST %SCRIPTSDIR%/MAIN-DRIVER.XML CALL :INSTALLDRIVERSET SEQUENCE=111IF /I EXIST %SCRIPTSDIR%/MAIN-HOTFIX.XML CALL :INSTALLHOTFIXSET SEQUENCE=112IF /I EXIST %SCRIPTSDIR%/MAIN-FONTS.XML CALL :INSTALLFONTSET SEQUENCE=113IF /I EXIST %SCRIPTSDIR%/MAIN-MEDIA.XML CALL :INSTALLMEDIASET SEQUENCE=114IF /I EXIST %SCRIPTSDIR%/MAIN-SOFTWARE.XML CALL :INSTALLSOFTWAREREM Copy over additional filesREG ADD %KEY%\900 /VE /D "Installing Additional Files" /fREG ADD %KEY%\900 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-FILES.CMD %BASEDIR%" /fREM Install ScriptsREG ADD %KEY%\901 /VE /D "Installing Scripts" /fREG ADD %KEY%\901 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-SCRIPTS.CMD %BASEDIR%" /fREM Set File PermissionsREG ADD %KEY%\902 /VE /D "Set File Permissions" /fREG ADD %KEY%\902 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-PERMISSIONS.CMD %BASEDIR%" /fREM Sequence 990-999 **MUST BE LAST**REM Cleanup and RebootREG ADD %KEY%\994 /VE /D "Cleaning Up" /fREG ADD %KEY%\994 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-CLEANUP.CMD %BASEDIR%" /fREG ADD %KEY%\995 /VE /D "Defragmenting System Harddisk" /fREG ADD %KEY%\995 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-DEFRAG.CMD" /fREG ADD %KEY%\996 /VE /D "Change Registration Information" /fREG ADD %KEY%\996 /V 1 /D "%TOOLSDIR%\MISC\CHGREG.EXE" /fREG ADD %KEY%\997 /VE /D "Fork Detached Program" /fREG ADD %KEY%\997 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C START CMD.EXE /C %SCRIPTSDIR%\SYSTEM-DETACHED.CMD %BASEDIR%" /fREG ADD %KEY%\998 /VE /D "Set Desktop Image" /fREG ADD %KEY%\998 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C START CMD.EXE /C %SCRIPTSDIR%\SYSTEM-SETWALLPAPER.CMD %BASEDIR%" /fREG ADD %KEY%\999 /VE /D "Rebooting..." /fREG ADD %KEY%\999 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-REBOOT.CMD" /fGOTO :EOF:INSTALLDRIVERREG ADD %KEY%\%SEQUENCE% /VE /D "Installing Drivers" /fREG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-DRIVER.CMD %BASEDIR%" /fGOTO :EOF:INSTALLHOTFIXREG ADD %KEY%\%SEQUENCE% /VE /D "Installing Hotfixes" /fREG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-HOTFIX.CMD %BASEDIR%" /fGOTO :EOF:INSTALLFONTREG ADD %KEY%\%SEQUENCE% /VE /D "Installing Fonts" /fREG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-FONTS.CMD %BASEDIR%" /fGOTO :EOF:INSTALLMEDIAREG ADD %KEY%\%SEQUENCE% /VE /D "Installing Media" /fREG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-MEDIA.CMD %BASEDIR%" /fGOTO :EOF:INSTALLSOFTWAREREG ADD %KEY%\%SEQUENCE% /VE /D "Installing Software" /fREG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-SOFTWARE.CMD %BASEDIR%" /fGOTO :EOFREM RunOnceEX install template:INSTALLREG ADD %KEY%\%SEQUENCE% /VE /D "Installing " /fREG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-.CMD %BASEDIR%" /fGOTO :EOF Link to comment Share on other sites More sharing options...
ZileXa Posted June 20, 2006 Share Posted June 20, 2006 (edited) Dude, there must be a waaaay simplier methodYou know, when I run Windows Setup on a new harddisk, create 2 partitions, after install/setup etc the partitions will be C: and E: and CD drive is D:Ofcourse I want the partitions to have the first letters so I turn off PC, pull out the CDdrive flat cable, turn on PC, in Windows you will now see the 2nd partition has become D: drive since that letter is free Shutdown pc, flat cable back, turn on pc. Now cddrive is E:.If you don't want to remove the flat cable, System Management (actually I dont know how its called in English, I mean Start>Run.. MMC.exe)you can give the CD Drive a different letter like X:.now the D:\ has become available, so you can give the 2partition this letter.Now the E: letter has become available, so you can give the CDDrive this letter.. and I am sure this method in a script would be easy..But it isnt what I want, I rather mod the windows Setup to prevent it from doing it like this. Don't know how.. Edited June 20, 2006 by ZileXa Link to comment Share on other sites More sharing options...
allen2 Posted June 20, 2006 Share Posted June 20, 2006 Another method would be installing Windows from a bartpe/winpe made from XPSP2 as when you boot the cd drive is always X:. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now