1For more information about RAPPS, take a look at <https://reactos.org/wiki/RAPPS> 2 3ADDING DOWNLOADABLE PROGRAMS TO THE RAPPS DATABASE 4-------------------------------------------------- 5 6Each program entry consists of a text file formatted with an INI-like syntax. 7 8They must be encoded in UTF-16 LE (Little Endian) or characters out of the ANSI range 9will display broken mojibake, some editors like Notepad++ call this format UCS-2 Little Endian. 10 11If you plan on including your program entry in the ReactOS source code versioning keep in mind 12that entries are stored in UTF-8 without BOM (Byte Order Mask) for VCS friendliness. 13 14They get automatically converted to UTF-16 when creating the compressed rappmgr.cab package, 15which is how clients obtain their program lists every time a Database upgrade is triggered. 16 17Also, each [Section] is language-independent and individual, you can override the URL to a source 18program or any other field by adding a language-specific [Section.], followed by the language code. 19 20NOTE: You can find a complete listing of LCIDs and language names here, includes neutral codes: 21 <https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693%28v=vs.85%29.aspx> 22 23Now RAPPS also accepts neutral language codes, meaning that you can do things like this: 24 25 ; Default English fallback, used if everything else fails. 26 [Section] 27 Name = Name in English 28 29 ; Neutral Spanish, used if the specific variant of Spanish does not match. 30 [Section.0a] 31 Name = Name in Generic Spanish 32 33 ; Spanish from Spain, used if the system is configured for it. 34 [Section.0c0a] 35 Name = Name in Castilian Spanish 36 37 38You can also define an entry without English fallback to make it visible to certain users only. 39For instance; software from 1C, which is mostly for Russian speakers and unusable for anyone else. 40 41File format overview: 42 43 ; This is a INI-style comment, useful for adding additional information. 44 ; Lines starting with a ; character are skipped by the parser. 45 46 [Section] 47 Name = My fun stuff-o-matic 48 RegName = Name in Registry 49 Version = 1.1.1 50 License = GPL 51 Description = Shortish description giving some additional background information about what it does. 52 SizeBytes = 1594881 53 Category = 5 54 URLSite = https://example.org/ 55 URLDownload = https://ftp.example.org/pub/installer.exe 56 57 [Section.0419] ; 0419 - for Russian language 58 Description = Description in Russian language 59 ... 60 61 62The mandatory fields are: Name, Category and URLDownload 63All other fields are completely optional and can be skipped. 64 65List of valid categories: 66 1 - Audio 67 2 - Video 68 3 - Graphics 69 4 - Games 70 5 - Internet 71 6 - Office 72 7 - Development 73 8 - Edutainment 74 9 - Engineering 7510 - Finance 7611 - Science 7712 - Tools 7813 - Drivers 7914 - Libraries 8015 - Themes 8116 - Other 82 83The official list of downloadable programs is kept on a public ReactOS server 84and synced every time RAPPS is launched for the first time. 85 86NOTE: You can find the most current URL in rapps.h, defined as APPLICATION_DATABASE_URL. 87 88To generate a RAPPS database (usually a rappmgr.cab/rappmgr2.cab archive), use 89the included scripts: 90 91For Windows & other NT-derived: CreateCabFile.bat 92For Linux & other UNIX flavors: CreateCabFile.sh 93 94 95Once the rappmgr.cab is downloaded to the user's local %AppData%\RApps, RAPPS extracts it 96using cabinet.dll inside %AppData%\RApps\appdb. After that, it will parse all the *.txt 97files contained therein. 98 99Every subsequent time, the program tries to access the local .txt files 100until a database update is manually triggered by the user. 101 102If the rappmgr.cab file is moved or just missing, RAPPS will download it again. 103