= Releasing application versions =
The `update_versions` script releases new application versions. It creates database entries and copies files to the download directory.
To use:
* In your project's apps/ directory, create a subdirectory for each application, with the short name of the application. Put new application files here (see below). `update_versions` scans these directories for new application versions.
* From the project's root directory, run `./bin/update_versions`.
== Single-file application versions == #singlefile
File names must be of the form `NAME_VERSION_PLATFORM[.ext]`, e.g.:
{{{
boinc_3.17_i686-pc-linux-gnu
astropulse_7.17_windows_intelx86.exe
}}}
* VERSION is a string of the form N.M, where N and M are integers with M<100. This is converted to the single integer N*100 + M, which is used to specify application versions elsewhere in BOINC. M may have a leading zero, which is ignored.
* PLATFORM is the name of a platform in the database (if needed, [XaddTool add the platform to the DB]).
The files on the example above would be on these paths:
{{{
apps/boinc/boinc_3.17_i686-pc-linux-gnu
apps/astropulse/astropulse_7.17_windows_intelx86.exe
}}}
== Multiple-file application versions == #multifile
Application versions can consist of multiple files, one of which is the main program. To create a multiple-file application version, create a directory '''with the same name as the main program''' (of the form `NAME_VERSION_PLATFORM[.ext]`) and put the files in that directory.
If your application includes executable files other than the main file, make sure that their protection flags include the user execute (u+x) bit (`update_versions` will then set the `` flag on its [XmlFormat#file_info ]).
Example:
{{{
apps/astropulse/astropulse_7.17_windows_intelx86.exe/
apps/astropulse/astropulse_7.17_windows_intelx86.exe/astropulse_7.17_windows_intelx86.exe
apps/astropulse/astropulse_7.17_windows_intelx86.exe/some_required_file.dat
apps/astropulse/astropulse_7.17_windows_intelx86.exe/graphics_application.exe
}}}
== Passing extra information about files == #extrainfo
If a file of the form
{{{
FILENAME.sig
}}}
is found, its contents will be used as a digital signature for the corresponding file.
See the [CodeSigning recommended code-signing practices].
If a file of the form
{{{
FILENAME.file_ref_info
}}}
is found, its contents will be added to the [BoincFiles#file_ref ]
element describing the file (you can use this for attributes like [BoincFiles#file_ref ]).
If a file of the form
{{{
LOGICAL_NAME=PHYSICAL_NAME
}}}
is found, the file will have the given logical and physical names
(i.e., the application will be able to access the file
by passing the logical name to [BasicApi#Resolvingfilenames boinc_resolve_filename()]).
== Passing extra information about the app version ==
If a file named '''plan_class''' is found, its contents will be used
as the application's [AppPlan planning class].