SETUP.EXE Command Line Switches, and a Special Trick
Novell Cool Solutions: Trench
By Bryan Keadle
Digg This -
Posted: 6 Jan 2005
Installing applications via an .MSI is handy when you can make a transform file (.MST) to modify the way the install behaves. However, some programs use SETUP.EXE to install, which might point to an .MSI, but you can't create a transform file for them (older MSI technology?).
I found, though, that you can create an answer file for these kind of setups, and use the answer file to silently distribute the application. Here's what you do:
"MyApp" application Object:
- Copy the install directory structure to your NAL distribution directory:
xcopy R:\*.* \\server\vol1\nals\thisapp /s/i
- From this directory run the install with a /r switch:
- When done, copy the (windir)\setup.iss file to your NAL distribution directory:
copy c:\winnt\setup.iss \\server\vol1\nals\thisapp\mysetup.iss
- Now create an application distribution object:
Run Options tab:, Application:
Path to file: %SOURCE_PATH%\setup.exe
Parameters: /s /f1"%SOURCE_PATH%\mysetup.iss"
Though this will "silently" install the application, you'll need to modify the changes it makes either through the "Launch Scripts: Run after Termination" item under the Run Options, or create another object ("MyApp_Mods") that makes the necessary modifications to the install, and have an application dependency to the first distribution object, "MyApp".
For example, we have a program that we distribute like this, but we don't want any of the shortcuts to remain on the Start Menu after the install (we'll provide the shortcuts via NAL (red-arrow shortcuts), though we do want to "bury" the shortcuts from the install under the Target folder so that we *could* manually launch the program in the event the red-arrow shortcuts aren't available for some reason.
So in the "Launch Scripts: Run after Termination" item under the Run Options, we add:
@echo off md "%TARGET_PATH%\Shortcuts" xcopy "%*CommonPrograms%\MyApp" "%TARGET_PATH%\Shortcuts" /s /y /i>nul rd "%*CommonPrograms%\MyApp" /s/q
This will effectively *move" the MyApp folder containing the install's shortcuts to a subdirectory under the %TARGET_PATH% of the install.
However, on one particular setup, we found that the SETUP.EXE appears to terminate before the install is complete - in fact, before it even gets started! So the SETUP.EXE is calling some other process to complete the installation. We needed a way to wait for the installation to complete, before we run our termination script to move the shortcut folder. So, we just added to our termination script to wait for one of the last files in the setup process to appear before we move the folder:
@echo off :LOOP cls echo. echo Waiting for MyApp install to complete... echo (this can take a while...please be patient!) choice /c:cq /n /t:c,05 if errorlevel 2 goto :END if NOT exist "%TARGET_PATH%\install.log" goto :LOOP md "%TARGET_PATH%\Shortcuts" xcopy "%*CommonPrograms%\MyApp" "%TARGET_PATH%\Shortcuts" /s /y /i>nul rd "%*CommonPrograms%\MyApp" /s/q :END
(Note: for these scripts, the script engine entry is "cmd /c" and the extension for the script file is ".bat")
Now are chained installs are "paced" correctly.
Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions. www.webwiseone.com