📜 ⬆️ ⬇️

GSoC 2017 Project Report: ReactOS Apps Manager

Reactos x GSoC
Hi Habr! My name is Alexander Shaposhnikov, I am a student of Google Summer of Code. This summer, I worked on the ReactOS App Manager project.


ReactOS for the second year in a row received slots for GSoC students. I followed the project for a long time and submitted my application as soon as I saw it in the list of organizations. By the way, this project was almost the only one that the pull request did not require, so I was able to focus on the application itself. I was lucky - I became one of four GSoC students at ReactOS! This was my first experience in the program, and it was very interesting.


ReactOS Application Manager (ReactOS App Manager, RAPPS) is a ReactOS application for downloading programs that have been tested by the ReactOS team and the community. It can also be used to change or uninstall any programs installed in the system. The goal of this project is to improve RAPPS and add new useful features. This is the final project report.



Assembly


Assembling RAPPS is no different from assembling other components of ReactOS. For assembly, it is recommended to use the RosBE assembly environment :


  1. Clone the SVN repository of reactos/branches/GSoC_2017/rapps/reactos any available client. You can also use the ssvn utility from RosBE. To do this, first set the branch of the environment variable ROS_BRANCH=GSOC_2017/rapps and run ssvn create in the selected directory.
  2. Create a folder for the compiler output and go into it.
  3. Run the script <source path>/configure
  4. Run ninja rapps
  5. Go to the <output folder>/base/applications/rapps for the exe.

The ReactOS build process is described in more detail in the official Wiki manual .


Using


RAPPS is quite an intuitive application. Just download and install the application by double-clicking on it, or select several applications by checkboxes. You can also call the context menu for additional options.


RAPPS also runs on Windows without any problems.


Work done


RAPPS Overview: ReactOS


Improved application list


I did not change the general appearance of RAPPS, however I added a few details to the interface. One of the tasks of the project was to change the information bar of downloadable applications. I added some new fields to this panel.


New Application Info: ReactOS Look


One of the added fields is application installation status. The status indicates whether the application is installed and there are updates. This is done by checking the registry keys in the key ...\Uninstall . Prior to this, there was a special search field in the application database, but it was not specified in the files themselves, so I expanded the check for the name and the name with the version (which turned out to be a pretty common thing). Here the version is taken from the base file.


If the application is installed, RAPPS tries to take the version from the above key. If this version is smaller than the version from the database, RAPPS will show the status "There is an update". If the version is not available, the field will not be displayed, and the status will be "Installed."


New Application Info: Windows Look


Also, the Languages ​​field has been added. It shows whether the selected application has been translated into the system language or into English plus it shows how many more languages ​​are available. This field requires a list of languages ​​for a specific application in the database file. The list must be submitted by language codes separated by | . Example: Languages=0C09|0813|0422 \\|| This parameter is multi-line.


And the last field is the license field changes. Added another parameter LicenseInfo database files. This field defines the license category of the application, and, if present, changes the appearance of the license string. The number 1 means Free Software, 2 means Free Software, and 3 means Trial Version. This will help to highlight free software among other available.


New Icons Overview: ReactOS


In this preview, Faenza icons and some others from the Internet were used.


The old RAPPS used the same icon for all applications in the list. I added support for custom icons for each application that are downloaded from the AppData/rapps/rapps/icons folder by its name (in the rapps folder where the database files are located).


Multiple installation


New Download Dialog: ReactOS


Previously, it was possible to install only one application at a time, and it was not possible to select a second application until the first one was installed. This innovation is a modeless dialog that sequentially loads several applications at once. Since the dialog is non-modal, it can be minimized and continue working with RAPPS while it is being downloaded and installed. The dialog shows the list of applications and the download status (Download / Download / Installation ... / Installed).


Download Dialog Animation: Windows


To download multiple applications, you must select them using the checkboxes or the Select All button and click the Install button. After that, the download process will immediately begin.


Checkbox Selection Animation: Windows


This animation is old and has a visual bug that was fixed during the testing process.


The status bar now also displays the number of selected applications. So far, the selected applications are reset when moving to another category. Checkboxes are also hidden in the "Installed" category.


Installation script


Command Line Install: ReactOS


The long-awaited feature - installation from the command line and script! Now you can install any application from RAPPS with just one command in the command line. I added two keys:



Other changes


In addition, in the process of working, I fixed some RAPPS bugs, among them:



Further work


An updated application manager will soon be included in the trunk. There are still things that I would like to further polish, such as:



There are also goals that were originally in the project, but were subtracted from it. This is, for example, the "Settings" mode, where RAPPS would be launched in the second stage of the installation for downloading applications. The team found it unnecessary now and therefore we now have a command line launch. Perhaps he will return in the future.


In this project, I focused on the code and capabilities of the application than on its appearance, as the concept from ReactOS wants. Soon the time will see the light of the conceptual design of the application.


Conclusion


The ReactOS team is very cool! I enjoyed working on the project with all the help of mentors and other developers. He gave me the feeling of what the FOSS community is, the general experience, as well as Hackfest and FrOSCon, in which I was lucky to meet some of them.


For myself, I decided that I would definitely stay in the project and will help develop the project in the future. Thanks to Google for the GSoC program which gave me the opportunity to work on something exciting!


Links



')

Source: https://habr.com/ru/post/337026/


All Articles