BI Setup Manual

From Bohemia Interactive Community
Jump to navigation Jump to search

BI Setup suite consists of multiple applications that allow creation of various types of setups. It is provided free of charge for any non commercial community projects developed for BI projects.

Setup.dat format

This list is only stub. More info for each option needed.

install entire directory from installation source to target destination
install entire directory from installation source to target destination, without wtitting to uninstall.log
special command
Q:FileType:extension:registry class:exe name:default icon number
Q:firewall:application name:path to exe adds application to Windows Firewall exclude list
Q:GameExplorer:GDF dll name
Q:openAL:[no|silent] controls whether openAL is to be installed. Default value is silent.
  • the openAL installer must be named OpenALwEAX.exe
Q:GEPlayTask:name:app path:arguments
Q:GESupportTask:name:app path:arguments
Q:license:[no|yes] controls whether license screen is to be shown. Default value is no.
Q:info:[no|yes] controls whether info screen is to be shown. Default value is no.
Q:showResultOK:[no|yes] value "no" disable last dialog "application succesfuly installed". Default value is yes.
  • the info text should be saved as data\info
Q:allusers:[no|yes] controls whether show check box(for all users) on 1st screen. Default value is yes.
  • the license text should be saved as data\license
  • any occurence of the string %(INSTALL_PATH) inside value will be converted into install path.
  • only HKLM can be used for the RegistryPathRoot (in the current implementation)
  • only string can be used for the ValueType (in the current implementation)
Q:runApp:appName appName will be first installed similarly as with X:appName:appName command and run at the end of the installation. The setup waits until appName finishes its work. Then, the file is removed from the destination.
Q:testVolumeLabel:[no|yes] when we want use virtual drives instead of CDROM (subst m: dir). Default value is yes
Q:harddest:[no|yes] default no, if yes then setup will leave a wizard directory page and will install directly to destination set by I command;
Q:welcome:[no|yes] controls first(welcome) screen is to be shown. Default value is yes.
Q:forceinstall:[no|yes] if yes then information that this application is already installed is skiped. Default value is no.
install individual file from installation source to target destination
install individual file without uninstall feature (not written to the uninstall log)
individual file - shortcut in Start menu
SA:source:source arguments:destination
individual file - shortcut on Desktop
SAD:source:source arguments:destination
individual file - shortcut on Send To
SAT:source:source arguments:destination
show picture in the setup screen (multiple pictures can be used with relative time stamp)
implicit target path for instalation
I:[S|PROGRAMS|PROGRAMFILES]:ARMA - will install to C:\Program files\ARMA\
I:N:C:\ARMA - will install to C:\ARMA\
I:[TMP|TEMP]:- will install to windows temporary folder
I:DESKTOP: - will install to user's "Decktop"
I:DOCUMENTS: - will install to user's "My Documents"
in install path can be used enviromental variables (%username%,%cd%,etc.)
optional, "_" can by each of possible commands, I:_:path:regpath:regvalue:pathExpansion - will check register in HKLM and if register value exist then this value+pathExpansion is used as installation destination
subdirectory for instalation
directory for start menu group
U:N ... replace the last item from uninstall log
U:D:uninstall.exe:application name:display info
U:-:uninstall.exe:application name:display info
if specified with D, the install directory will be used (default or changed by user in change directory dialog)
U:P:A:appName ... application name (this will be used in uninstall to remove user directory under Local Settings\Application Data\
U:F:filename:remove file from destination folder when install over
U:S:dirname:remove directories from destination folder when install over
U:P:P:productBinFile ... (dta\product.bin) used to specify the param file containg info about directory name under My documents which should be removed in uninstall process.
U:P:E:profilePathDefault ... the entry name inside productBinFile used to specify directory to remove
notice: all U:P:?: commands can be used only after the A: and I: commands!!!
U:protect write to uninstall.log information that uninstall Star Force
application name
registry root
CD key check
source CD ROM definition
total length of all installed files (unpacked - i.e. size of the product after installation)
Final dialog actions - documented on the following section

Final dialog actions

All Final dialog actions have the same basic format: X:Y|Z|TEXT|stringToShow

  • First char (here X) is the action specification:
execute the application and wait until finished
open the document
execute the application and continue or trigger the special action (based on fifth char Z)
  • Third char (here Y) is check box default value:
check box checked as default
check box UNchecked as default
  • Fifth char (here Z) is one of:
consider the TEXT to be the filename in Destination directory
consider the TEXT to be the filename in Source directory
can be used only in E action. Then the TEXT is the special command
  • Special commands for E:+|A|cmd|txt are:
it create shortcut icon on desktop
it create shortcut icon on Send To


uninstall.dat format

remove file
remove directory
remove registry key (HKEY_LOCAL_MACHINE)
remove registry key (HKEY_CLASSES_ROOT)
U:regpath:regvalue - remove registry regvalue from HKCU/regpath
uninstall from Game Explorer
remove application from the Windows Firewall exclude list
backup of U:P commands from setup.dat
P:A:appName ... application name (this will be used in uninstall to remove user directory under Local Settings\Application Data\
P:P:productBinFile ... (dta\product.bin) used to specify the param file containg info about directory name under My documents which should be removed in uninstall process.
P:E:profilePathDefault ... the entry name inside productBinFile used to specify directory to remove
P:M:applicationPath ... the path to the root of application (in order to locate the productBinFile.
the final uninstall MessageBox with question to remove user saves directories is displayed only when the U:P commands are present in setup.dat
Q:protect uninstall StarForce

Setup patching other setup

Setup.exe can be run with parameter saying which other setup.exe should be used to find resources and setupNN.bin files. This can be used in the following cases:

  1. customers downloaded broken online version of setup.exe (very large file)
    • send them new setup.exe without any data (Better to rename it, such as setupPatch.exe)
    • customer can run new setup.exe with old one as parameter
    • This also works for setup.exe + setup01.bin files, but in this case the new patching setup.exe must be located at the very same directory as the setup.exe and setup01.bin files.
  2. programmer needs to debug large setup.exe file (he run only new debug version and loads data from other exe)

Notice: The best way to run setup.exe with such parameter is to drag and drop the large setup.exe into new setup.exe.


Files being installed in setup can be gzip compressed. Setup will recognize it and decompress. File can have the *.gz extension but this must be specified in setup.dat if necessary (only if there is source file specified, for instance F:source:destination command). Inside directories, the files can be compressed with *.gz extension and no change in setup.dat is necessary.

UNICODE and languages

In order to allow multiple languages usage in *.csv files, including russian, it was necessary to convert setup project into UNICODE. These versions are located on subdirectories Unicode.


The usage is as follows:

  1. if unicode setup.exe is used, unicode uninstall.exe must be used too and vice versa.
  2. when some unicode executable is used, the proper *.csv file must be saved in UTF8
    • the best is when conversion saves also leading UTF8 format bytes EF BB BF, as this is far simple way to recognize it as UTF8.
      • this can be done by using save as in notepad.exe
  3. the *.dat files are considered as UTF8 too, but it can work in ANSI too (as there are typicaly no language specific characters).
  4. As the executables have changed, their CRC checksum in setup.crc (if provided) must be updated.

Language Testing

There are two methods to test a different languages:

  1. changle it in windows: Control Panel/Regional and Language Options/Regional Options/Standards and formats
  2. change column name in the stringtable (*.csv)


  • Steps:
    1. copy the NEW setup.exe into your setup directory
    2. run setupConvert from some local directory, where you want the output
      • cd SetupTemp
      • setupConvert.exe [-one] pathToSetupDirectoryWithNewSetupExe
    3. It should create setupConvert directory and new instalation inside, containing large setup.exe.
    4. if run without -one parameter, there will be also setupNN.bin files, all files less than 2GB in size.

The important think is, that setup.exe in your setup directory should be the new one (step 1).

SetupConvert uses its own logging capability, so it writes more information, including error messages.

  • recommendation: call setupConvert from cmd line, or use redirection
    • setupConvert path 2> report.log
  • estimated time of creation process can be 2 minnutes for each GB


CRC check creates setup.crc file that serves as additional verification that file was properly installed. It's optional but recommended especially for any larger files.


Usage: CRCCheck {pattern}
  or: CRCCheck -check
       CRCCheck -check:    Check CRC, use stdin as CRC and filename input.
       CRCCheck {pattern}: Pattern may be folder name or filename of dat file suitable for SQSetup
      Output is sent to stdout.

Notice: For *.gz files CRC should be computed from unpacked data, as setup.exe controls unpacked data only. New CRCCheck.exe do that now, so CRC of *.gz is always computed from unpacked data (using this tool).