Niektórym z nas przygotowana instalacja nienadzorowana zajmuje więcej miejsca niż posiada jedna płytka CD, a nagrywarka DVD ciągle jednak jest rzadkością. Pokażę tutaj prosty sposób jak podzielić swą instalację na dwie płyty, na jednej możemy umieścić naszego WindowsXP, sterowniki i inne potrzebne nam rzeczy, a na drugiej wszystkie programy np.MsOffice.
Najpierw musimy pamiętać o tym, iż wszystkie nasze programy są instalowane po pierwszym logowaniu do systemu, więc plik.cmd instalujący te programu uruchomiony powinien być z naszego pliku winnt.sif lub też RunOnceEx
W przykładzie uruchomimy go z pliku winnt.sif, więc tworzymy w nim wpis:
Kod:
[GuiRunOnce]
%systemdrive%\install\cd_programy.cmd
Więc jak się domyślmy, tworzymy teraz plik cd_programy.cmd
Kod:
CLS
@ECHO OFF
ECHO.
ECHO Wysuwanie CD-ROM
ECHO Jeśli uzywasz drugiej płyty CD/DVD
ECHO Włóż ją teraz
ECHO Wyjmując pierwszą
ECHO.
ECHO Za chwilę CD-ROM zostanie otworzony
start cscript %systemdrive%\install\cd_eject.vbs >null
PSKill cscript.exe >null
ECHO.
PAUSE
IF EXIST %systemdrive%\install\programy.cmd GOTO PROGRAMY
SET CDROM2=
IF EXIST D:\install\programy.cmd SET CDROM2=D:
IF EXIST E:\install\programy.cmd SET CDROM2=E:
IF EXIST F:\install\programy.cmd SET CDROM2=F:
IF EXIST G:\install\programy.cmd SET CDROM2=G:
IF EXIST H:\install\programy.cmd SET CDROM2=H:
IF EXIST I:\install\programy.cmd SET CDROM2=I:
IF EXIST J:\install\programy.cmd SET CDROM2=J:
IF EXIST K:\install\programy.cmd SET CDROM2=K:
IF NOT EXIST %CDROM2%\install\programy.cmd GOTO PROGRAMY
ECHO Pliki są teraz kopiowane na dysk twardy
ECHO Proszę czekać
xcopy %CDROM2%\install %systemdrive%\install\ /S /C /Q /H /Y
ECHO.
:PROGRAMY
:: cmdow @ /hid
:: ECHO Instalowanie programów
:: ECHO.
:: start /wait %systemdrive%\install\programy.cmd
:INNE
IF NOT EXIST %systemdrive%\install\inne.CMD GOTO ERROR
:: ECHO Tutaj jest miejsce na uruchomienie dodatkowego
:: ECHO pliku .cmd
:: ECHO.
:: start /wait %systemdrive%\install\inne.CMD
GOTO END
:ERROR
IF NOT EXIST %systemdrive%\install\inne.CMD GOTO _ECHO
GOTO END
:_ECHO
ECHO.
ECHO *******************UWAGA*******************
ECHO Plik inne.cmd nie zostal odnaleziony
ECHO Wiec nie zostal wykonany
ECHO.
:: ECHO Sprawdź %systemdrive%\install\install.log
:: ECHO Aby dowiedzieć sie więcej
ECHO *******************UWAGA*******************
ECHO.
PAUSE
:END
ECHO.
ECHO Za 30 sekund komputer uruchomi się ponownie
shutdown -r -f -t 30 -c "Komputer się zrestartuje za 30 sekund, w tym czasie zainstalowane programy mają czas na zarejestrowanie się"
ECHO.
::ECHO Kasowanie tymczasowych plików
::RD /S /Q %systemdrive%\install
::RD /S /Q %systemdrive%\Drivers
::ECHO.
EXIT
Powyższy plik mozemy użyć w naszej instalacji, bez względu na to czy używamy jednej czy też dwu płyt do naszej instalacji, jak widzimy
Kod:
IF EXIST %systemdrive%\install\programy.cmd GOTO PROGRAMY
W tej linii zostaje przeszukany nasz skopiowany folder Install z CD1 w celu odnalezienia pliku programy.cmd. Dopiero gdy takowy odnaleziony nie zostaje, zaczyna się przeszukiwanie innych dysków w celu odnalezienia tego pliku. Czyli jeśli używamy dwóch płyt nasz programy.cmd powinien znajdować się na tej drugiej w katalogu Install, gdzie zostanie odszukany i a następnie cały katalog Install skopiowany na dysk. Po czym programy.cmd zostaje uruchomiony.
Sekcja Inne jest tutaj tylko przykładowa, plik inne.cmd możemy zastąpić dowolnym plikiem .cmd w celu wykonania dodatkowych czynności, jak np. doinstalowanie innych programów, czy też zaaplikowania registry tweaks, czy cokolwiek innego, jak również może być zupełnie usunięta z naszego pliku cd_programy.cmd.
Jak przeanalizujemy powyższy plik, możemy się domyślić, że w podobny sposób możemy do naszej instalacji dodać dowolną ilość płyt CD.
cd_programy.cmd musimy oczywiście umieścić na naszej pierwszej płycie CD w katalogu Install razem z małym plikiem cd_eject.vbs ,który ma za zadanie otworzyć nasz CD-ROM w celu zmiany płyty. Plik ten wygląda następująco:
Kod:
Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection
if colCDROMs.Count >= 1 then
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next ' cdrom
End If