For more information about RAPPS, take a look at ADDING DOWNLOADABLE PROGRAMS TO THE RAPPS DATABASE -------------------------------------------------- Each program entry consists of a text file formatted with an INI-like syntax. They must be encoded in UTF-16 LE (Little Endian) or characters out of the ANSI range will display broken mojibake, some editors like Notepad++ call this format UCS-2 Little Endian. If you plan on including your program entry in the ReactOS source code versioning keep in mind that 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, which is how clients obtain their program lists every time a Database upgrade is triggered. Also, each [Section] is language-independent and individual, you can override the URL to a source program or any other field by adding a language-specific [Section.], followed by the language code. NOTE: You can find a complete listing of LCIDs and language names here, includes neutral codes: Now RAPPS also accepts neutral language codes, meaning that you can do things like this: ; 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 You can also define an entry without English fallback to make it visible to certain users only. For instance; software from 1C, which is mostly for Russian speakers and unusable for anyone else. File format overview: ; This is a INI-style comment, useful for adding additional information. ; Lines starting with a ; character are skipped by the parser. [Section] Name = My fun stuff-o-matic RegName = Name in Registry Version = 1.1.1 License = GPL Description = Shortish description giving some additional background information about what it does. Size = 10 MB Category = 5 URLSite = https://example.org/ URLDownload = https://ftp.example.org/pub/installer.exe CDPath = ; Path in the local filesystem [Section.0419] ; 0419 - for Russian language Description = Description in Russian language ... The mandatory fields are: Name, Category and URLDownload All other fields are completely optional and can be skipped. List of valid categories: 1 - Audio 2 - Video 3 - Graphics 4 - Games 5 - Internet 6 - Office 7 - Development 8 - Edutainment 9 - Engineering 10 - Finance 11 - Science 12 - Tools 13 - Drivers 14 - Libraries 15 - Other The official list of downloadable programs is kept on a public ReactOS server and synced every time RAPPS is launched for the first time. NOTE: You can find the most current URL in rapps.h, defined as APPLICATION_DATABASE_URL. To generate a RAPPS database (usually a rappmgr.cab archive), use the included scripts: For Windows & other NT-derived: CreateCabFile.bat For Linux & other UNIX flavors: CreateCabFile.sh Once the rappmgr.cab is downloaded to %appdata%\rapps, RAPPS extracts it using cabinet.dll inside %appdata%\rapps\rapps, 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.