Deployment Log

During the installation, DeployMaster saves its actions into a log file. This information is needed when the user wants to upgrade or uninstall your software.

However, your application can also use this log to see which components and files have actually been installed, so it can adjust its interface appropriately. It is a plain text file, which makes it easy for both the user and your application to inspect what DeployMaster did to the system.

The log is saved under %APPFOLDER%\Deploy.log by default. If the file already exists, a number is appended and increased until a non-existing filename is found (e.g.:Deploy3.log). This can happen if the user installs several programs into the same folder. In any case, your application can locate the log by opening the HKEY_LOCAL_MACHINE\Software\JGsoft\DeployIT registry key and reading the value that carries the name of your application, as you have specified in the Project section. It is a string value indicating the filename the log was written to.

The log file is organized with a text file, with each piece of information placed on its own line. Lines are separated by CRLF.

The file begins with an arbitrary number of lines starting with a semicolon. These are comments that explain the purpose of the file to a curious user inspecting it with a text editor. These are the only comment lines allowed to appear in the file.

Then follows the log version number. This number should be 1 or 2. Version 1 files are encoded using the computer's default Ansi code page. Version 2 files are encoded using UTF-8, without a Unicode signature (byte order marker). If it is another number, the log was created by a more recent version of DeployMaster than this one. In that case, consult the documentation of the most recent version for any changes in the format. Note that the log version number will only be increased if the format actually changes. It is not related to the version number of DeployMaster itself. We will try to keep the deployment log format forward-compatible, so you can go ahead and try to parse the file no matter what the version number. DeployMaster itself does this too. If future DeployMaster versions need to store more information, this will be appended to the end of the log. This data should be ignored.

The next line is the application's title in the form of "companyname appname versionnumber". Then follow year (4 digits), month and day of release, each on a separate line. This info is used to determine whether a newer, older or the same version is being installed when DeployMaster is run again. Companyname, appname and versionnumber are listed again, but each on a separate line this time. Except for appname, these may be blank (but they will always occupy a line).

The next six lines contain text strings that are used by the uninstallation routine to display messages to the user. These strings can be changed on the Language page in the DeployMaster Builder.

After those six lines, one line indicates the command that the uninstaller will execute before starting the uninstallation. This line may be blank.

Then DeployMaster stores the paths which the user could have changed in the Advanced Options section of the installation program. The first line of this section indicates the number of available paths. For each path, three lines are then used: one line contains the path's identifier (e.g.: %APPFOLDER%), the second line is the description of the path the user sees in Advanced Options, and the last line is the actual path. If the last line is preceded by an asterisk (e.g.: *C:\Windows), the folder is considered a shared one. Files placed in shared folders have their reference counts updated in HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs.

The next line is a number indicating how many components there are in the installed package. Each component takes up two lines following this number. The first line is the component's caption, the second indicates the component's status. If the status contains an S, the component was explicitly selected by the user or by the package's default selection. If the status contains an R, the component was installed because it was required by another component that was installed too. Any other character in the status string should be ignored.

Then follows the list of files that were installed. Each file occupies one line and has its full path information. The list is terminated by three percentage signs (%%%) on a separate line.

Next are the created registry items. Dummy items (ones that were not created by the setup program but should be removed upon uninstallation) are listed too. Each value occupies a single line, starting with the full path of the registry key, then a tab character (0x09) and then the name of the value. The value itself is not saved to the log, even if it was not a dummy one. Again three percentage signs terminate the list.

File associations that were created or modified are also remembered. The first line is the file type extension, including the leading dot. Lines 2 and 3 are the old (the one present on the user's system, if any, before DeployMaster modified it) and new descriptions of that file type. Lines 4 and 5 are the old and new DefaultIcon values for this file type, being an executable and an icon index, separated by a comma. Except for the extension, all these lines may be empty. The next line will either be a single percentage sign (%) or the name of an action registered for this file type. If it is an action name, the second line is the old and the third line the new associated command line that will be executed when the user selects this action. Again, the next line will be a single % or the name of the next action. Repeat until you read a %. After a file type was terminated by a single %, the next line will either be the extension for the next file type (in that case, repeat the above), or three percentage signs (%%%) terminating the file type list.

Any data following the last three percentage signs should be ignored, which DeployMaster does too.