Jump to content

Recommended Posts

Posted

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:

  1. cmdlines.txt
  2. WINSETUP.CMD
  3. SYSTEM-ANALYZE.CMD
  4. SYSTEM-CONFIGURE.CMD
  5. SYSTEM-INSTALL.CMD

--OR--

If the CD/DVD drive is D:, then the following sequence is executed:

  1. cmdlines.txt
  2. WINSETUP.CMD
  3. SYSTEM-ANALYZE.CMD
  4. SYSTEM-INSTALL.CMD

WINSETUP.CMD

This 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 OFF

REM Check the command line argument. If nothing is given, then we are going to do a
REM live install from the DVD-ROM. If TST is given, then we are in the test
REM environment on the harddisk and the base path is different.

IF /I "%1"=="" GOTO :START
IF /I "%1"=="TST" GOTO :TEST
GOTO :ERROR

REM This is the DVD-ROM Installation
:START
REM Hide the command window
CMDOW @ /HID

REM Find our CD-ROM Drive and set the evnironment variable
SET CHECKFILE=win51ip.SP2
IF 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%\INSTALL
rem 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 :EOF

REM This is for our test environment
:TEST
@ECHO ON
SET CDROM=E:
SET BASEDIR=%CDROM%\Deployment\CDROM\INSTALL
START /WAIT %SYSTEMROOT%\System32\CMD.EXE /C %BASEDIR%\SCRIPTS\SYSTEM-INSTALL.CMD %CDROM% %BASEDIR%
GOTO :EOF

REM This is only called if there is a command line argument error
:ERROR
ECHO Command Line Error
ECHO Valid Options are nothing and TST for install and test
GOTO :EOF

SYSTEM-ANALYZE.CMD

This 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 OFF
CMDOW @ /HID


REM This is called from WINSETUP.CMD

REM Set Evnironment Variables
SET CDROM=%1
SET BASEDIR=%2
SET SCRIPTSDIR=%BASEDIR%\SCRIPTS
SET TOOLSDIR=%BASEDIR%\TOOLS
SET TEMPDIR=%SYSTEMDRIVE%\TMP
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEX

REM Install Tweaks
START /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 is
IF /I "%CDROM%"=="D:" GOTO :ONESTAGE
IF /I NOT "%CDROM%"=="D:" GOTO :TWOSTAGE
GOTO :EOF

:ONESTAGE
START /WAIT CMD.EXE /C %SCRIPTSDIR%\SYSTEM-INSTALL.CMD
GOTO :EOF

:TWOSTAGE
REM RegOnceEX
REG ADD %KEY% /V TITLE /D "Analyze System" /f
REG ADD %KEY%\000 /VE /D "Analyzing System..." /f
REG ADD %KEY%\000 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %TEMPDIR%\SYSTEM-CONFIGURE.CMD" /f
REG ADD %KEY%\001 /VE /D "Rebooting..." /f
REG ADD %KEY%\001 /V 1 /D "%SYSTEMROOT%\System32\SHUTDOWN.EXE -r -t 2" /f
REG ADD %KEY%\001 /V 2 /D "REG DELETE %KEY%\000 /f" /f
REG ADD %KEY%\001 /V 3 /D "REG DELETE %KEY%\001 /f" /f
GOTO :EOF

SYSTEM-CONFIGURE.CMD

After 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 OFF
CMDOW @ /HID

REM This gets called from RegOnceEx at first login.

REM Find our CD-ROM Drive and set the evnironment variable
SET CHECKFILE=win51ip.SP2
IF 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 variables
SET BASEDIR=%CDROM%\INSTALL
SET SCRIPTSDIR=%BASEDIR%\SCRIPTS
SET TOOLSDIR=%BASEDIR%\TOOLS
SET TEMPDIR=%SYSTEMDRIVE%\TMP
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEX

REM RegOnceEX
REG ADD %KEY% /V TITLE /D "Configure System" /f
REG ADD %KEY%\002 /VE /D "Configuring System..." /f
REG ADD %KEY%\002 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-INSTALL.CMD %CDROM% %BASEDIR%" /f
REG ADD %KEY%\003 /VE /D "Removing Files..." /f
REG ADD %KEY%\003 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C DEL %TEMPDIR%\SYSTEM-CONFIGURE.CMD" /f
REG ADD %KEY%\003 /V 2 /D "%SYSTEMROOT%\System32\CMD.EXE /C DEL %TEMPDIR%\SYSTEM-ANALYZE.CMD" /f
REG ADD %KEY%\004 /VE /D "Rebooting..." /f
REG ADD %KEY%\004 /V 1 /D "%SYSTEMROOT%\System32\SHUTDOWN.EXE -r -t 2" /f
REG ADD %KEY%\004 /V 2 /D "REG DELETE %KEY%\002 /f" /f
REG ADD %KEY%\004 /V 3 /D "REG DELETE %KEY%\003 /f" /f
REG ADD %KEY%\004 /V 4 /D "REG DELETE %KEY%\004 /f" /f

GOTO :EOF

SYSTEM-INSTALL.CMD

This 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 OFF
CMDOW @ /HID



REM Get Our Command Line Parameters
SET CDROM=%1
SET BASEDIR=%2

REM Setup Our Environment
SET SCRIPTSDIR=%BASEDIR%\SCRIPTS
SET TOOLSDIR=%BASEDIR%\TOOLS
SET TEMPDIR=%SYSTEMDRIVE%\TMP
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEX



REM Make sure that our temp directory is present
IF /I NOT EXIST %TEMPDIR% MKDIR %TEMPDIR%

REM Set The Working Directory
CHDIR %SCRIPTSDIR%

REM Install Tweaks
REM 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 RegOnceEX

REM Prepare the Install **MUST BE FIRST**
REG ADD %KEY% /V TITLE /D "Installing Software" /f
REG ADD %KEY%\010 /VE /D "Preparing Installation..." /f
REG ADD %KEY%\010 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-PREPARE.CMD %BASEDIR%" /f
REG ADD %KEY%\011 /VE /D "Set Video Resolution" /f
REG ADD %KEY%\011 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-CHGRES.CMD %BASEDIR%" /f
REG ADD %KEY%\012 /VE /D "Fork Image Rotator" /f
REG ADD %KEY%\012 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C START CMD.EXE /C %SCRIPTSDIR%\SYSTEM-IMAGEROTATE.CMD %BASEDIR%" /f
rem REG ADD %KEY%\013 /VE /D "Set Background Image" /f
rem REG ADD %KEY%\013 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C START CMD.EXE /C %SCRIPTSDIR%\SYSTEM-SETWALLPAPER.CMD %BASEDIR%" /f

REM Install CD Files and Recovery Console
REG ADD %KEY%\100 /VE /D "Installing Windows CD-ROM" /f
REG ADD %KEY%\100 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-CDROM.CMD %CDROM% %BASEDIR%" /f
REG ADD %KEY%\101 /VE /D "Installing Recovery Console" /f
REG ADD %KEY%\101 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-RC.CMD %CDROM% %BASEDIR%" /f

REM Install Software
SET SEQUENCE=110
IF /I EXIST %SCRIPTSDIR%/MAIN-DRIVER.XML CALL :INSTALLDRIVER
SET SEQUENCE=111
IF /I EXIST %SCRIPTSDIR%/MAIN-HOTFIX.XML CALL :INSTALLHOTFIX
SET SEQUENCE=112
IF /I EXIST %SCRIPTSDIR%/MAIN-FONTS.XML CALL :INSTALLFONT
SET SEQUENCE=113
IF /I EXIST %SCRIPTSDIR%/MAIN-MEDIA.XML CALL :INSTALLMEDIA
SET SEQUENCE=114
IF /I EXIST %SCRIPTSDIR%/MAIN-SOFTWARE.XML CALL :INSTALLSOFTWARE

REM Copy over additional files
REG ADD %KEY%\900 /VE /D "Installing Additional Files" /f
REG ADD %KEY%\900 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-FILES.CMD %BASEDIR%" /f

REM Install Scripts
REG ADD %KEY%\901 /VE /D "Installing Scripts" /f
REG ADD %KEY%\901 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-SCRIPTS.CMD %BASEDIR%" /f

REM Set File Permissions
REG ADD %KEY%\902 /VE /D "Set File Permissions" /f
REG ADD %KEY%\902 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-PERMISSIONS.CMD %BASEDIR%" /f

REM Sequence 990-999 **MUST BE LAST**
REM Cleanup and Reboot
REG ADD %KEY%\994 /VE /D "Cleaning Up" /f
REG ADD %KEY%\994 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-CLEANUP.CMD %BASEDIR%" /f
REG ADD %KEY%\995 /VE /D "Defragmenting System Harddisk" /f
REG ADD %KEY%\995 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-DEFRAG.CMD" /f
REG ADD %KEY%\996 /VE /D "Change Registration Information" /f
REG ADD %KEY%\996 /V 1 /D "%TOOLSDIR%\MISC\CHGREG.EXE" /f
REG ADD %KEY%\997 /VE /D "Fork Detached Program" /f
REG ADD %KEY%\997 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C START CMD.EXE /C %SCRIPTSDIR%\SYSTEM-DETACHED.CMD %BASEDIR%" /f
REG ADD %KEY%\998 /VE /D "Set Desktop Image" /f
REG ADD %KEY%\998 /V /1 /D "%SYSTEMROOT%\System32\CMD.EXE /C START CMD.EXE /C %SCRIPTSDIR%\SYSTEM-SETWALLPAPER.CMD %BASEDIR%" /f
REG ADD %KEY%\999 /VE /D "Rebooting..." /f
REG ADD %KEY%\999 /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\SYSTEM-REBOOT.CMD" /f
GOTO :EOF



:INSTALLDRIVER
REG ADD %KEY%\%SEQUENCE% /VE /D "Installing Drivers" /f
REG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-DRIVER.CMD %BASEDIR%" /f
GOTO :EOF

:INSTALLHOTFIX
REG ADD %KEY%\%SEQUENCE% /VE /D "Installing Hotfixes" /f
REG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-HOTFIX.CMD %BASEDIR%" /f
GOTO :EOF

:INSTALLFONT
REG ADD %KEY%\%SEQUENCE% /VE /D "Installing Fonts" /f
REG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-FONTS.CMD %BASEDIR%" /f
GOTO :EOF

:INSTALLMEDIA
REG ADD %KEY%\%SEQUENCE% /VE /D "Installing Media" /f
REG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-MEDIA.CMD %BASEDIR%" /f
GOTO :EOF

:INSTALLSOFTWARE
REG ADD %KEY%\%SEQUENCE% /VE /D "Installing Software" /f
REG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-SOFTWARE.CMD %BASEDIR%" /f
GOTO :EOF


REM RunOnceEX install template
:INSTALL
REG ADD %KEY%\%SEQUENCE% /VE /D "Installing " /f
REG ADD %KEY%\%SEQUENCE% /V 1 /D "%SYSTEMROOT%\System32\CMD.EXE /C %SCRIPTSDIR%\INSTALL-.CMD %BASEDIR%" /f
GOTO :EOF

  • 1 month later...

Posted (edited)

Dude, there must be a waaaay simplier method

You 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 by ZileXa
Posted

Another method would be installing Windows from a bartpe/winpe made from XPSP2 as when you boot the cd drive is always X:.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...