Difference between revisions of "RAPPS"

From ReactOS Wiki
Jump to: navigation, search
m (Command Line Support: fixed typo)
m (See Also)
 
(25 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''RAPPS''', previously known as '''Download!''', is a small program located in "C:\Reactos\System32" that allows users to download multiple programs without hassle.
+
'''RAPPS''', previously known as '''Download!''', is a small program located in <code>C:\ReactOS\System32</code> that allows users to download, install and update multiple programs without hassle.
  
 
It has its own application list that can be expanded by the user and the community. Applications that are included in the list by default are tested and most likely work on ReactOS.
 
It has its own application list that can be expanded by the user and the community. Applications that are included in the list by default are tested and most likely work on ReactOS.
  
 
= How It Works =
 
= How It Works =
When you first start RAPPS, it will automatically connect to the internet, and it will seek for the file "rappmgr.cab". Then, it will extract the contents of this archive file to "C:\Documents and Settings\<user>\Local Settings", creating a folder called "rapps".
+
The official list of downloadable programs (an archive "rappmgr.cab" or "rappmgr2.cab"), is kept on a [https://rapps.reactos.org/rappmgr2.cab public ReactOS server] and synced every time RAPPS is launched for the first time.
The contents of the archive are just '''UTF-8''' .txt files.
+
Once the rappmgr.cab is downloaded to <code>%appdata%\RApps</code>, RAPPS extracts it using cabinet.dll inside <code>%appdata%\RApps\appdb</code>. After that, it will parse all the *.txt files contained therein.
  
Every single file that is on download list in RAPPS, has it's own "description" file.
+
Every subsequent time the program tries to access the local .txt files until a database update is manually triggered by the user.
  
Custom files must be placed in <code>/rapps</code> folder created after .CAB file download.
+
If the rappmgr.cab file is moved or just missing, RAPPS will download it again.
TXT file names should correspond to the software they are relative to.  
 
  
It is suggested to test the text file before a PR, by pasting the document in <code>/rapps</code> folder and clicking "Refresh" in the GUI.
+
Each program entry consists of a text file formatted with an INI-like syntax. Every .txt file describes a program, the filename is used as a unique identifier and should correspond to the software it "contains".
  
RAPPS also has experimental support for icons for application list. See [[#Experimental Features|Experimental Features]] for details.
+
= Submitting New Applications =
 +
It is possible to submit new application creating a txt file according to the file schema, forking the [https://github.com/reactos/rapps-db rapps-db repository on GitHub] and sending your submission as a [[Commiting Changes|Pull-Request]].
  
= Submitting New Applications =
+
Before submitting the Pull Request, test the files by pasting the document in the <code>\RApps\appdb</code> folder and clicking "Refresh" in the GUI.
Some people may complain that his/her favourite application is not in the RAPPS list.
 
The description files can be created by anyone. (See [[#File Schema|File Schema]] for a detailed breakdown).
 
  
Description files need to be saved in UTF-8 format (without BOM), or some specific languages will be displayed strangely. Also, line endings must be set as Windows format (<code>\r\n</code>). At the end of the file, there must be one empty line.
+
Description files need to be saved in UTF-16 LE (Little Endian) in the rapps folder on disk. Without this, characters out of the ANSI range will display broken mojibake, some editors like Notepad++ call this format UCS-2 Little Endian.
 +
Line endings must be set as Windows format (<code>\r\n</code>). At the end of the file, there must be one empty line.
  
You can fork the https://github.com/reactos/rapps-db repository and send your submission as a [[Commiting Changes|Pull-Request]].
+
If included in the ReactOS source code versioning entries are stored in UTF-8 without BOM (Byte Order Mask) for VCS friendliness.
 +
They get automatically converted to UTF-16 when creating the compressed rappmgr.cab package.
  
 
It is suggested that the commits to be squashed into one commit before a PR. If the reviewers asked for changes, ensure that the commits are squashed afterwards.
 
It is suggested that the commits to be squashed into one commit before a PR. If the reviewers asked for changes, ensure that the commits are squashed afterwards.
  
 
= File Schema =
 
= File Schema =
 +
 +
== Sections ==
 +
RAPPS can show different programs' information accordingly to the host system language: to achieve this, the INI files used by RAPPS are divided in section.
 +
 +
Each section begins with ''[Section.XXXX]'', where ''XXXX'' is a four-digit ''Locale ID'', that uniquely identifies a language.
 +
A list of Locale IDs can be found [https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c on Microsoft Docs] (last four digits of the ''Language ID'' column).
 +
To avoid "colliding" codes (same ID used for multiple languages), also check [https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f MS-LCID Reference], for example in the [https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-LCID/%5bMS-LCID%5d-210407.pdf 14.1 protocol revision (obsolete)] see Language ID at page 9.
 +
 +
An exception is made for the default entry, that is only defined as ''[Section]'': this should contain information in English.
 +
 +
If there is no entry for the host system language, the default entry is chosen.
 +
For example if the system is set to Spanish and there is no Spanish entry of a program, then software description etc. will be displayed in English.
 +
 +
Note that every field in a section can be customized for a language, not only the description (for example if a program offers different download links for different localizations).
 +
Fields that are not customized for a language will use the default entry in ''[Section]''.
 +
 +
Here is a minimal example of a multilanguage file:
 +
 +
<syntaxhighlight lang="ini">
 +
[Section]
 +
Name = My Program Name
 +
Category = 16
 +
URLDownload = https://example.com/MyProgram.exe
 +
 +
; Russian language
 +
[Section.0419]
 +
Name = Имя моей программы
 +
URLDownload = https://example.com/MyProgram_LocalizedRussian.exe
 +
</syntaxhighlight>
 +
 +
RAPPS also accepts neutral language codes, meaning that you can do things like this<ref>https://github.com/reactos/rapps-db</ref>:
 +
<syntaxhighlight lang="ini">
 +
; Default English fallback, used if everything else fails.
 +
[Section]
 +
Name = Name in English
 +
 +
; Neutral Spanish, used if the specific variant of Spanish does not match.
 +
[Section.0a]
 +
Name = Name in Generic Spanish
 +
 +
; Spanish from Spain, used if the system is configured for it.
 +
[Section.0c0a]
 +
Name = Name in Castilian Spanish
 +
</syntaxhighlight>
 +
 +
Note that is possible to create a file without an English entry, so that the program would be only shown to systems set to determinate languages, but it is discouraged, as users aren't able yet to choose the languages they want to visualize (so for example if a French-speaking user would set the system to English, RAPPS would not show eventual French-only entries, even if the user is potentially able to use them).
 +
 +
RAPPS behaviour on systems with multiple languages has not been documented yet.
 +
 +
== Sections Fields ==
 +
 
Here is an example description file.
 
Here is an example description file.
 
<syntaxhighlight lang="ini">
 
<syntaxhighlight lang="ini">
[Section]
+
[Section]
Name = My fun stuff-o-matic
+
; Mandatory fields
RegName = Name in Registry
+
Name = My fun stuff-o-matic
Version = 1.1.1
+
Category = 5
License = GPL
+
URLDownload = https://ftp.example.org/pub/installer.exe
Description = Shortish description giving some additional background information about what it does.
+
SizeBytes = 10485760
SizeBytes = 10485760
+
 
Category = 5
+
; Optional fields in alphabetical order (no experimental features)
URLSite = https://example.org/
+
Description = Shortish description giving some additional background information about what it does.
URLDownload = https://ftp.example.org/pub/installer.exe
+
Icon = SomeIcon.ico
Screenshot1 = Screenshot URL
+
License = GPL
Icon = Icon filename in icons folder (with .ico extension)
+
RegName = Name in Registry
     
+
SHA1 = 47480394167aca4869b7bf330af6c6fc5ca4ac25
[Section.0419] ; 0419 - for Russian language
+
URLSite = https://example.org/
Description = Description in Russian language
+
Version = 1.1.1
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Let's analyze it from top to the bottom.
 
Let's analyze it from top to the bottom.
 +
''The following fields are mandatory.''
 +
=== Name ===
 +
This is the program name that is displayed.
  
== [Section] ==
+
=== Category ===
This is the beginning of the area that is read when the user clicks on the name of the program that he chooses to download. It consists of several things:
+
The category of the program. Category name corresponds to the number.
 +
Currently on ReactOS 0.4.13 there are 15 + 1 categories:
 +
* 1 – '''Audio''': Software for recording, playing, modifying, converting sounds
 +
* 2 – '''Video''': as above but applied to videos and movies
 +
* 3 – '''Graphics''': a above, but applied to graphics and images
 +
* 4 – '''Games & Fun''': games, console emulators etc.
 +
* 5 – '''Internet & Network''': browsers, IM clients, FTP software, Remote desktop etc.
 +
* 6 – '''Office''': office suites and similar
 +
* 7 – '''Development''': IDEs, debuggers, compilers and anything related to software development
 +
* 8 – '''Edutainment''': software related to education & teaching, like dictionaries and translators
 +
* 9 – '''Engineering''': CAD, FEM, numerical computation etc.
 +
* 10 – '''Finance''': balances management, warehouse software, trade monitors etc.
 +
* 11 – '''Science''': programs for simulation, advanced calculus, chemistry, physics and similar
 +
* 12 – '''Tools''': utilities like archiving software, disc burning utilities etc.
 +
* 13 – '''Drivers''': device drivers
 +
* 14 – '''Libraries''': libraries and runtimes, usually needed to run/develope other programs
 +
* 15 – '''Themes''': themes for ReactOS or Windows
 +
* 16 – '''Other''': programs that do not fit in above categories
  
=== Name ===
+
=== URLDownload ===
This is the program name that is displayed.
+
Direct link to the installer/program.
 +
Scripted download are not supported yet, so ensure it is a direct link to a file.
 +
HTTPS is not mandatory but recommended.
 +
 
 +
''The following fields are optional (but recommended).''
  
=== Version ===
+
=== Description ===
This is the version of the program.
+
The description of the program giving some additional background information about what it does.
  
 
=== License ===
 
=== License ===
The license that the program is based on. Typical options are : Trial, Demo, Freeware, Open-Source. Or more specifically, GPL, MIT and so on.
+
The license under which the software is released, for example Apache, GPL, MIT...
 +
Non-libre software is usually released under a End-User License Agreement (EULA) shipped with the software.
  
=== Description ===
+
=== Icon ===
The description of the program giving some additional background information about what it does..
+
RAPPS supports 'per app' icons, that will be shown instead of the generic 'application' icon.
 +
The icon can be specified with the field name 'Icon', and include the .ico extension.
 +
The icon itself should be placed in the `icons` folder in the rapps-db repository.
 +
Alternatively, if the filename of the .txt file matches the filename of an .ico file, that icon will also be displayed.
 +
 
 +
=== RegName ===
 +
Name in Registry
 +
 
 +
=== SHA1 ===
 +
SHA1 checksum, to verify the download.
 +
By standard SHA1 is case-insensitive.
  
 
=== SizeBytes ===
 
=== SizeBytes ===
 
The actual size of the download in bytes. Used to display size value in the application info as well as while downloading.
 
The actual size of the download in bytes. Used to display size value in the application info as well as while downloading.
 
+
On Windows systems usually both nominal size and size on disk are reported, in this case use the former.
=== Category ===
 
The category of the program. Category name corresponds to the number. There are 15 categories for now:
 
*1 – Sound – Software for recording, playing, modify, convert sound
 
*2 – Video – As above but applies to video and movies
 
*3 – Graphics – As above, but graphics and images
 
*4 – Games and Entertainment – There are games, emulators for games
 
*5 – Internet and Networks – Browsers, IM clients, FTP software, Remote desktop...
 
*6 – Office stuff – Software that is used in the Office, for example, Open Office
 
*7 – Development/programming – programs used for compiling, and source writing, for example, Dev C++
 
*8 – Education – Programs that help in teaching, learning. For example dictionaries, translators
 
*9 – Engineering – Programs similar to CAD, SolidWorks (TM)
 
*10 – Financial – Programs for financial stuff, TRade monitors, database systems for warehouses e.t.c
 
*11 – Science – For programs that make simulations, helps in the Chemistry, Physics...
 
*12 – Tools – Utilities for users, for example, archiving software
 
*13 – Drivers – Files for the devices that are installed in the system
 
*14 – Libraries – Files that are needed to run some programs like Visual Basic and .NET
 
*15 – Themes - Themes for ReactOS or Windows (for example: watercolor, classic, luna, etc)
 
*16 – Other – programs that did not fit in above categories
 
  
 
=== URLSite ===
 
=== URLSite ===
 
Main web site where the program can be found.
 
Main web site where the program can be found.
 +
HTTPS is not mandatory but recommended.
  
=== URLDownload ===
+
=== Version ===
Direct link to the installer/program.
+
This is the version of the program.
 +
In the code it is treated as a zero terminated string, so the decimal separator shouldn't matter, RAPPS should only check if the string of the latest available version is different from the installed one.
  
=== ScreenshotN ===
+
== Deprecated fields ==
Screenshot URL link. (N = 1, 2, 3 ...)
 
  
Currently, only first Screenshot is used. Ensure the URL is a direct link to the image, not a page containing the image (e.g. Imgur links).
+
=== LicenseInfo ===
It is also preferred to include the screenshot taken on ReactOS, not on Windows.
+
For a while the wiki erroneously reported LicenseInfo instead of LicenseType. If it is found in a file, please simply replace it with LicenseType.<ref>https://jira.reactos.org/browse/CORE-17771</ref>
  
=== Icon ===
+
=== Size ===
Icon filename in icons folder (with .ico extension)
+
The Size parameter was used before the introduction of SizeBytes. It has now been removed<ref>https://github.com/reactos/rapps-db/pull/153</ref>.
  
== [Section.0419] ==
+
= Experimental Features =
The specific language of the description, based on the host system language settings.
+
RAPPS has some experimental features that are not included yet in the current stable (0.4.13), and are only available in development (0.4.15-dev).
 
 
When host language is different than languages in the file, English is chosen by default (If you talk Spanish, and there is no such entry available in the file, software description will be displayed in English).
 
  
Locale IDs (that number in Section.xxxx) can be found [http://msdn.microsoft.com/en-us/goglobal/bb964664 here] (numbers from the left column).
+
These work well enough to be tested and used but might still be subject to changes before being merged in stable.
  
[http://www.reactos.org/forum/viewtopic.php?f=22&t=11015 Thanks to the author, wojo664]
+
== Architecture-based Sections ==
 +
[[ReactOS ports|As ReactOS has several ports]] (at different stages of completions), it is already possible to define different sections for different architectures.
 +
Some files in rapps-db already include different entries, but at the moment (0.4.13 release) the x86 port is the only one working.
  
= Experimental Features =
+
If not differently specified, all entries are assumed to be x86.
RAPPS has some experimental features that are not refined enough and/or not used yet. They are still subject to change, therefore are not yet adopted in the main database.
 
  
However, these features are present in the codebase and work well enough to be tested and used.
+
These are the possible values for the architecture<ref>https://github.com/reactos/reactos/blob/master/base/applications/rapps/include/misc.h</ref>:
 +
* <code>[Section.x86]</code> - i586. Can be omitted, by default all entries are supposed to be for x86.
 +
* <code>[Section.amd64]</code> - x86_64/x64
 +
* <code>[Section.arm]</code> - ARM
 +
* <code>[Section.arm64]</code> - ARM64
 +
* <code>[Section.ia64]</code> - Itanium
 +
* <code>[Section.ppc]</code> - PowerPC
  
 
== Command Line Support ==
 
== Command Line Support ==
Line 131: Line 206:
 
Install=7zip
 
Install=7zip
 
Install=akelpad
 
Install=akelpad
</syntaxhighlight >
+
</syntaxhighlight>
 
<code>[Version]</code> section is a necessary header for .INF files. <code>[RAPPS]</code> is a section where you specify the needed apps.
 
<code>[Version]</code> section is a necessary header for .INF files. <code>[RAPPS]</code> is a section where you specify the needed apps.
 
Apps should be added in .INF one-by-one, as can be seen in the example.  
 
Apps should be added in .INF one-by-one, as can be seen in the example.  
Line 142: Line 217:
 
Example: <code>rapps /INFO rosbe codeblocks</code>
 
Example: <code>rapps /INFO rosbe codeblocks</code>
  
== Icon and Screenshot Support ==
+
== New Sections Fields ==
RAPPS supports 'per app' icons, that will be shown instead of the generic 'application' icon.
 
The icon can be specified with the field name 'Icon', which should be placed in the main 'Section'.
 
The icon itself should be placed in the `icons` folder.
 
  
There is also support for a screenshot, which should be uploaded to an image host.
 
This screenshot can be specified with the field 'Screenshot1'.
 
 
<syntaxhighlight lang="ini">
 
[Section]
 
Name = Code::Blocks (without compiler)
 
URLDownload = https://download.sourceforge.net/project/codeblocks/Binaries/17.12/Windows/codeblocks-17.12-setup.exe
 
SHA1 = 05ad095b5e04de243df736c060aea25a554dad94
 
SizeBytes = 37372176
 
Icon=codeblocks.ico
 
Screenshot1=https://i.imgur.com/FykFrzz.png
 
</syntaxhighlight>
 
 
== New [Section] Fields ==
 
There are two experimental fields in the database files - '''Languages''' and '''LicenseInfo'''.
 
  
 
=== Languages ===
 
=== Languages ===
Line 173: Line 230:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== LicenseInfo ===  
+
=== LicenseType ===  
 
This is a field in the DB which, when present, changes the way License field in the info is shown.
 
This is a field in the DB which, when present, changes the way License field in the info is shown.
  
 
Application license types correspond to a number:
 
Application license types correspond to a number:
*1 - "Open Source"
+
* 1 "Open Source"
*2 - "Freeware"  
+
* 2 "Freeware"  
*3 - "Demo/Trial".
+
* 3 "Demo/Trial"
 +
 
 +
=== ScreenshotN ===
 +
Screenshot URL link. (N = 1, 2, 3 ...)
 +
 
 +
Currently, only first Screenshot is used. Ensure the URL is a direct link to the image, not a page containing the image (e.g. Imgur links).
 +
It is also preferred to include the screenshot taken on ReactOS, not on Windows.
 +
 
 +
This screenshot can be specified with the field 'Screenshot1'.
 +
 
 +
<syntaxhighlight lang="ini">
 +
; Example of a current application in RAPPS with a screenshot
 +
[Section]
 +
Name = Code::Blocks (without compiler)
 +
Version = 17.12
 +
License = GPLv3
 +
Description = An open source, cross-platform, powerful IDE. It does not contain a compiler.
 +
Category = 7
 +
URLSite = http://www.codeblocks.org/
 +
URLDownload = https://download.sourceforge.net/project/codeblocks/Binaries/17.12/Windows/codeblocks-17.12-setup.exe
 +
SHA1 = 05ad095b5e04de243df736c060aea25a554dad94
 +
SizeBytes = 37372176
 +
Screenshot1=https://i.imgur.com/FykFrzz.png
 +
</syntaxhighlight>
  
 
= See Also =
 
= See Also =
 
<!-- *[http://www.fileden.com/files/2012/3/22/3281665/rapps.7z Brent's RAPPS entries (228 programs)]  link is down -->
 
<!-- *[http://www.fileden.com/files/2012/3/22/3281665/rapps.7z Brent's RAPPS entries (228 programs)]  link is down -->
*[https://reactos.org/blogs/rapps-enchancements-gsoc-2017-edition-final-report RAPPS GSoC 2017 Final Report]
+
* Documentation
 +
** [https://doxygen.reactos.org/dir_f72badb8674797321b701dde383e2467.html RAPPS generated documentation (Doxygen)]
 +
** [https://github.com/reactos/reactos/blob/master/base/applications/rapps/README.ENG RAPPS Readme on GitHub]
 +
** [[Developing_ReactOS_with_Visual_Studio|Developing ReactOS with Visual Studio on windows]]
 +
* Forum topics
 +
** Tutorials
 +
*** [https://reactos.org/forum/viewtopic.php?f=22&t=11015 RAPPS - For those that want more from it.]
 +
* GSoCs that involved RAPPS
 +
** [https://reactos.org/tags/rapps/ rapps | ReactOS Project]
  
 
= References =
 
= References =

Latest revision as of 11:28, 25 January 2024

RAPPS, previously known as Download!, is a small program located in C:\ReactOS\System32 that allows users to download, install and update multiple programs without hassle.

It has its own application list that can be expanded by the user and the community. Applications that are included in the list by default are tested and most likely work on ReactOS.

How It Works

The official list of downloadable programs (an archive "rappmgr.cab" or "rappmgr2.cab"), is kept on a public ReactOS server and synced every time RAPPS is launched for the first time. Once the rappmgr.cab is downloaded to %appdata%\RApps, RAPPS extracts it using cabinet.dll inside %appdata%\RApps\appdb. After that, it will parse all the *.txt files contained therein.

Every subsequent time the program tries to access the local .txt files until a database update is manually triggered by the user.

If the rappmgr.cab file is moved or just missing, RAPPS will download it again.

Each program entry consists of a text file formatted with an INI-like syntax. Every .txt file describes a program, the filename is used as a unique identifier and should correspond to the software it "contains".

Submitting New Applications

It is possible to submit new application creating a txt file according to the file schema, forking the rapps-db repository on GitHub and sending your submission as a Pull-Request.

Before submitting the Pull Request, test the files by pasting the document in the \RApps\appdb folder and clicking "Refresh" in the GUI.

Description files need to be saved in UTF-16 LE (Little Endian) in the rapps folder on disk. Without this, characters out of the ANSI range will display broken mojibake, some editors like Notepad++ call this format UCS-2 Little Endian. Line endings must be set as Windows format (\r\n). At the end of the file, there must be one empty line.

If included in the ReactOS source code versioning entries are stored in UTF-8 without BOM (Byte Order Mask) for VCS friendliness. They get automatically converted to UTF-16 when creating the compressed rappmgr.cab package.

It is suggested that the commits to be squashed into one commit before a PR. If the reviewers asked for changes, ensure that the commits are squashed afterwards.

File Schema

Sections

RAPPS can show different programs' information accordingly to the host system language: to achieve this, the INI files used by RAPPS are divided in section.

Each section begins with [Section.XXXX], where XXXX is a four-digit Locale ID, that uniquely identifies a language. A list of Locale IDs can be found on Microsoft Docs (last four digits of the Language ID column). To avoid "colliding" codes (same ID used for multiple languages), also check MS-LCID Reference, for example in the 14.1 protocol revision (obsolete) see Language ID at page 9.

An exception is made for the default entry, that is only defined as [Section]: this should contain information in English.

If there is no entry for the host system language, the default entry is chosen. For example if the system is set to Spanish and there is no Spanish entry of a program, then software description etc. will be displayed in English.

Note that every field in a section can be customized for a language, not only the description (for example if a program offers different download links for different localizations). Fields that are not customized for a language will use the default entry in [Section].

Here is a minimal example of a multilanguage file:

[Section]
Name = My Program Name
Category = 16
URLDownload = https://example.com/MyProgram.exe

; Russian language
[Section.0419]
Name = Имя моей программы 
URLDownload = https://example.com/MyProgram_LocalizedRussian.exe

RAPPS also accepts neutral language codes, meaning that you can do things like this[1]:

; Default English fallback, used if everything else fails.
[Section]
Name = Name in English

; Neutral Spanish, used if the specific variant of Spanish does not match.
[Section.0a]
Name = Name in Generic Spanish

; Spanish from Spain, used if the system is configured for it.
[Section.0c0a]
Name = Name in Castilian Spanish

Note that is possible to create a file without an English entry, so that the program would be only shown to systems set to determinate languages, but it is discouraged, as users aren't able yet to choose the languages they want to visualize (so for example if a French-speaking user would set the system to English, RAPPS would not show eventual French-only entries, even if the user is potentially able to use them).

RAPPS behaviour on systems with multiple languages has not been documented yet.

Sections Fields

Here is an example description file.

[Section]
; Mandatory fields
Name = My fun stuff-o-matic
Category = 5
URLDownload = https://ftp.example.org/pub/installer.exe
SizeBytes = 10485760

; Optional fields in alphabetical order (no experimental features)
Description = Shortish description giving some additional background information about what it does.
Icon = SomeIcon.ico
License = GPL
RegName = Name in Registry
SHA1 = 47480394167aca4869b7bf330af6c6fc5ca4ac25
URLSite = https://example.org/
Version = 1.1.1

Let's analyze it from top to the bottom. The following fields are mandatory.

Name

This is the program name that is displayed.

Category

The category of the program. Category name corresponds to the number. Currently on ReactOS 0.4.13 there are 15 + 1 categories:

  • 1 – Audio: Software for recording, playing, modifying, converting sounds
  • 2 – Video: as above but applied to videos and movies
  • 3 – Graphics: a above, but applied to graphics and images
  • 4 – Games & Fun: games, console emulators etc.
  • 5 – Internet & Network: browsers, IM clients, FTP software, Remote desktop etc.
  • 6 – Office: office suites and similar
  • 7 – Development: IDEs, debuggers, compilers and anything related to software development
  • 8 – Edutainment: software related to education & teaching, like dictionaries and translators
  • 9 – Engineering: CAD, FEM, numerical computation etc.
  • 10 – Finance: balances management, warehouse software, trade monitors etc.
  • 11 – Science: programs for simulation, advanced calculus, chemistry, physics and similar
  • 12 – Tools: utilities like archiving software, disc burning utilities etc.
  • 13 – Drivers: device drivers
  • 14 – Libraries: libraries and runtimes, usually needed to run/develope other programs
  • 15 – Themes: themes for ReactOS or Windows
  • 16 – Other: programs that do not fit in above categories

URLDownload

Direct link to the installer/program. Scripted download are not supported yet, so ensure it is a direct link to a file. HTTPS is not mandatory but recommended.

The following fields are optional (but recommended).

Description

The description of the program giving some additional background information about what it does.

License

The license under which the software is released, for example Apache, GPL, MIT... Non-libre software is usually released under a End-User License Agreement (EULA) shipped with the software.

Icon

RAPPS supports 'per app' icons, that will be shown instead of the generic 'application' icon. The icon can be specified with the field name 'Icon', and include the .ico extension. The icon itself should be placed in the `icons` folder in the rapps-db repository. Alternatively, if the filename of the .txt file matches the filename of an .ico file, that icon will also be displayed.

RegName

Name in Registry

SHA1

SHA1 checksum, to verify the download. By standard SHA1 is case-insensitive.

SizeBytes

The actual size of the download in bytes. Used to display size value in the application info as well as while downloading. On Windows systems usually both nominal size and size on disk are reported, in this case use the former.

URLSite

Main web site where the program can be found. HTTPS is not mandatory but recommended.

Version

This is the version of the program. In the code it is treated as a zero terminated string, so the decimal separator shouldn't matter, RAPPS should only check if the string of the latest available version is different from the installed one.

Deprecated fields

LicenseInfo

For a while the wiki erroneously reported LicenseInfo instead of LicenseType. If it is found in a file, please simply replace it with LicenseType.[2]

Size

The Size parameter was used before the introduction of SizeBytes. It has now been removed[3].

Experimental Features

RAPPS has some experimental features that are not included yet in the current stable (0.4.13), and are only available in development (0.4.15-dev).

These work well enough to be tested and used but might still be subject to changes before being merged in stable.

Architecture-based Sections

As ReactOS has several ports (at different stages of completions), it is already possible to define different sections for different architectures. Some files in rapps-db already include different entries, but at the moment (0.4.13 release) the x86 port is the only one working.

If not differently specified, all entries are assumed to be x86.

These are the possible values for the architecture[4]:

  • [Section.x86] - i586. Can be omitted, by default all entries are supposed to be for x86.
  • [Section.amd64] - x86_64/x64
  • [Section.arm] - ARM
  • [Section.arm64] - ARM64
  • [Section.ia64] - Itanium
  • [Section.ppc] - PowerPC

Command Line Support

Apart from the graphical interface, RAPPS features command-line options that can be used to install apps. They will install exactly as if selected in the app itself.

Current available options are listed below:

  • /? - display the usage of RAPPS commandline
  • /INSTALL - accepts multiple apps as values and installs them if they are available.

Example: rapps /INSTALL 7zip akelpad

  • /SETUP - accepts a full path to the .inf file, where in [RAPPS] block you can specify which apps to install using one Install= key per single app.

Example:

[Version]
Signature = $Windows NT$
ClassGUID = {00000000-0000-0000-0000-000000000000}

[RAPPS]
Install=7zip
Install=akelpad

[Version] section is a necessary header for .INF files. [RAPPS] is a section where you specify the needed apps. Apps should be added in .INF one-by-one, as can be seen in the example.

Names used are same as the filename in database textfiles.

  • /FIND - accepts multiple strings and find all corresponding apps contains the strings in the name or description.

Example: rapps /FIND Firefox "Python 3"

  • /INFO - accepts multiple package-name and display apps information correspond with the package-name.

Example: rapps /INFO rosbe codeblocks

New Sections Fields

Languages

This field is used to inform the user whether the app is available in their language.

You should place all the language codes app supports separated by | there.

Example:

Languages=0C09|0813|0422

LicenseType

This is a field in the DB which, when present, changes the way License field in the info is shown.

Application license types correspond to a number:

  • 1 – "Open Source"
  • 2 – "Freeware"
  • 3 – "Demo/Trial"

ScreenshotN

Screenshot URL link. (N = 1, 2, 3 ...)

Currently, only first Screenshot is used. Ensure the URL is a direct link to the image, not a page containing the image (e.g. Imgur links). It is also preferred to include the screenshot taken on ReactOS, not on Windows.

This screenshot can be specified with the field 'Screenshot1'.

; Example of a current application in RAPPS with a screenshot
[Section]
Name = Code::Blocks (without compiler)
Version = 17.12
License = GPLv3
Description = An open source, cross-platform, powerful IDE. It does not contain a compiler.
Category = 7
URLSite = http://www.codeblocks.org/
URLDownload = https://download.sourceforge.net/project/codeblocks/Binaries/17.12/Windows/codeblocks-17.12-setup.exe
SHA1 = 05ad095b5e04de243df736c060aea25a554dad94
SizeBytes = 37372176
Screenshot1=https://i.imgur.com/FykFrzz.png

See Also

References