SoC Home

Python rewrite by Bertrand

I will present my project the way Gil Tal has done it.



The project aim at developing an installer tool, used to select, download (if not a CDRom) and install applications distributed in WinLibre distribution. This installer will be implemented in Python with a GUI developped in WxPython. We will use cUrl libraries in order to download the needed files. A XML file will describe where to find the mirror sites to download the different files. This file can be updated in order to allways download the latest version of the softwares. This XML file can be the same that the one used by the “WinLibre Updater”. Another XML file will describe which applications are installed on the current computer. We will also register the version number abd where we have installed the application. Our installer will be launched each time the end user want to install a new application from the “Winlibre Control Center”.

Portability to other OS must be kept in mind. MacOS X and linux, in particular.


  • The different steps of an installation:
    • The “Installer” will download the latest XML File which describe the distribution (we will call it WinLibre.xml).
    • The end user will selects new application(s) to install or old one(s) to remove.
    • Thanks to WinLibreDistribution.xml file, the program will be able to download the needed packages (selected applications and their dependences) from the given mirror sites.
    • When the files are downloaded, the selected applications and their dependences are installed one by one. We first install the dependencies of course.
    • At the end of the installation of each application, we create/update an XML file which describes the installed applications on the computer in order to inform the “Winlibre Updater” and the “Control Center” which applications have been installed/uninstalled, which version and where (we will call it MyComputer.xml).
    • When a program is removed, we will read the XML file which describe where the application has been installed. We will lauch the uninstall program. At the end of the process, we update the MyComputer.xml file.
  • During the installation, the end user can view how many pakages have been downloaded and how many will be downloaded. We will do the same during the uninstall process. We will raise any error we detect during the download or install processes with the more information we have.
  • All the features which exist in the current WinLibre installer, will exist. Moreover the end user will have the choice to install or not the “Winlibre Updater” and the “Control Center”.
  • During the installation process, some “How To Install ...” html pages will be launched in the Web Browser. They contain usefull information about the installation process of each application. These pages will be read from the WinLibre server. The end user will have the choice wether to display or not these pages.

This sequence simplify the work of the administrator. He just needs to update the WinLibre.xml file on the server. When an end user wants to use WinLibre installer, he will use the latest version of the applications. I will need to work with the person who will develop the Winlibre Upater and Control Center in order to define the XML Files format.

This program, written in Python, will be transformed in an executable with py2exe. This way, we don’t need to install Python to use our installer.

Possible XML Format

Computer.xml can be defined like the following:

<Package name="WinLibre_Installer" version=" 2.1" path="...."/>
<Package name="FirstAppliName" version="2.3.4" path="....">
	<Package name="DependencieName1" version="1.0.0"  path="..."/>
<Package name="SecondAppliName" version="1.2.3" path="...."/>

It is just a list of name and version of each installed package.

The WinLibre.xml file contains a list of download servers for each package, its path as well as its dependencies.

<?xml version="1.0" ?>
<Distribution	Name="WinLibre"	Version="0.1">
 <Category Name="Bureautique">
  <Description language="fr">
   <p> Everything you need at the office</p>
  <Image Name="Bureautique.jpg" Size="5416" Width="32" Height="32" MD5Sum="6f5902ac237024bdd0c176cb93063dc4">
   <Package Name="" Version="1.1.3">
    <description language="en">
     <p> Complete, Microsoft Office compatible, sofware suite.</p>
     <p> Writer, Calc, Impress, Draw</p>
     <p> Web: <link></link></p>
    <Image Name="OpenOffice.jpg" Size="5416" Width="32" Height="32" MD5Sum="6f5902ac237024bdd0c176cb93063dc4">
    <File Name="OpenOffice.org_1.1.3.exe" Size="47205416" MD5Sum="6f5902ac237024bdd0c176cb93063dc4">
    <Installation RegistryKey="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\">
      <Dependence	Name="j2re"	Version="1.4.2-05" Install="before"	Priority="Needed" />
      <Dependence	Name="DicOOo"	Version="1.0.1" Install="after"	Priority="Optional" />

As I told in the previsous section, the format of the XML files need to be defined with people who are working on the project. This is just a proposition.



I will be able to start working on the code at the end of June until the begining of september. I would allocate at least 30 hours each week to the project.

In a first time, I will develop the installer. In a second time I will develop the updater.

winlibre_soc/python_rewrite_bertrand.txt · Last modified: 2011/07/21 14:29
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki