Microsoft KB Archive/177462

= INFO: Troubleshooting Cmdlines.txt During an Unattended Setup =

Article ID: 177462

Article Last Modified on 10/31/2006

-

APPLIES TO


 * Microsoft Windows NT Workstation 4.0 Developer Edition
 * Microsoft Windows NT Server 4.0 Standard Edition

-



This article was previously published under Q177462



SUMMARY
This article covers issues dealing with Cmdlines.txt and running programs within it. In general, any program that can be run at an MS-DOS command prompt while running Windows NT 4.0 can be run in the Cmdlines.txt. The Cmdlines.txt is run at the end of the graphical portion of setup, after the display settings have been set. Windows NT is running in kernel mode and networking has been started.



MORE INFORMATION
The first thing that needs to be verified if a program does not run in the Cmdlines.txt file is to make sure that the file is being read at all. The entry OEMPREINSTALL = Yes needs to be entered into the Unattended.txt file in the [UNATTEND] section. The file Cmdlines.txt must be located directly under the $OEM$ directory on the distribution server. If either of these is not true or misspelled, then the Cmdlines.txt will not be read at all. The format of Cmdlines.txt is as follows:

[COMMANDS] "./setup.exe /Q"

Standard MS-DOS command conventions do apply, "./" means run the file from the current directory. All files, including Cmdlines.txt, in the $OEM$ directory are copied to the temporary directory location of C:\$WIN_NT$.~LS\$OEM$. When Cmdlines.txt is carried out, this temporary directory is the current directory. In the example above, Setup.exe needs to copied to the $OEM$ on the distribution server. For organizational purposes, it may be a good idea to place files in sub-directories under the $OEM$. An example would be as follows:


 * I386\$OEM$\Cmdlines.txt
 * I386\$OEM$\SP3\Update.exe and the rest of the Service Pack 3 files

The entry in Cmdlines.txt would be "./sp3/update.exe -u -n -q". Using the $OEM$ directory in this manner will keep the base $OEM$ directory from becoming cluttered.

If the application being installed needs quotation marks, such as referencing long file names, the use of batch files is necessary. Windows NT command prompt conventions state that files or folder with long file names must be surrounded by quotation marks. The entry "./setup.exe "information file with a long file name.inf"" will not work in the Cmdlines.txt file because of the double quotation marks being used. To get around this, create a file named Batch.bat, place this file in the $OEM$ directory. The batch.bat file would contain the following line:

setup.exe "information file with a long file name.inf"

A normal batch file does not need quotation marks around the entire command as it does in the Cmdlines.txt file. In the Cmdlines.txt file, put the entry "./batch.bat"

If there are several entries in the Cmdlines.txt file and most of them work but one or two appear not to run, there are several different methods of determining where the problem lies. There is no built in method of stopping the Cmdlines.txt process, you can however, place the pause command within the Cmdlines.txt file. For example:

[COMMANDS] "./setup.exe /Q" "pause"

After Setup.exe starts, a CMD prompt will be left open with a message that states "Press any key to continue". At this point, you may see an error message that Setup.exe is giving that may help the vendor of the application determine what the problem is. Pressing the Space Bar will continue to run the Cmdlines.txt file. You can place the pause command several times throughout the Cmdlines.txt file.

Another way of halting the Cmdlines.txt process is by using the Windows Diagnostic Utility (winmsd). To do this, copy Winmsd.exe to the $OEM$ directory and then place the following line "./winmsd" as the only entry in the Cmdlines.txt file. When this entry is processed, the winmsd will start and the Cmdlines.txt file will stop and wait until winmsd is closed. After the winmsd program has started, from the File Menu, choose "Run a Program". From the Run line, type "cmd" which will open an ineligible command prompt in a window. Press ALT + Enter simultaneously; that will maximize the MS- DOS command prompt window. Type each of the lines that are in the Cmdlines.txt file to find out which entry is failing. Make modifications to each of the lines until the program you were trying to run starts.

Many problems that deal with Cmdlines.txt are because of pathing problems where the executable file cannot be found. Using winmsd will allow modifications to be made without having to restart the entire setup process. When you go to an MS-DOS command prompt, the current path is C:\$WIN_NT$.~LS\$OEM$. Any files that you need access to need to be copied into the distribution server's $OEM$ directory. After testing has been completed, type "exit" at the MS_DOS command prompt, and then close winmsd. The unattended setup will now continue.

Some applications will not run properly from the Cmdlines.txt file, this is sometimes because of the shell, Windows NT Explorer, not being loaded. Windows NT Explorer is not running during the graphical portion of setup, some setup routines check for Windows NT Explorer and fail with error messages such as "Initialization Failed" or "Explorer did not start". These setup routines need to be run after Windows NT has been started and can be done by using the runonce registry key.

Other problems that can occur are because of security issues, Windows NT setup is run as the local system account, not Administrator. Some applications that are security sensitive may have problems running in the Cmdlines.txt file. Error messages that may be displayed are "Access Denied" or "You do not have privileges to run this program". These setup routines need to be run with the Administrator account and after Windows NT has been fully loaded.

