Maintenance d'UpdatEngine - Compilation et installeur

646 views
Skip to first unread message

Damien GUILLEM

unread,
Apr 24, 2016, 1:27:59 PM4/24/16
to updatengine-fr
Bonjour,

J'utilise en production UpdatEngine dans la société qui m'emploie depuis plusieurs années et je dois bien reconnaitre que c'est un formidable outil qui permet de garder un parc conséquent de machines à jour simplement (avec cet outil, les réelles difficultés résident selon moi dans la création des packages et la gestion de la bande passante).

Force est de constater que le projet ne semble plus évoluer depuis plusieurs mois et c'est dommage car il devient assez compliqué de le maintenir en production en l'absence de certaines évolutions (et oui, je ne suis pas différent d'un autre j'en veux toujours plus).
Bien que n'étant pas développeur python / django ... je suis un développeur aventurier ;-) et j'arrive à m'en sortir avec le code du projet, qui à été il faut le dire bien conçu !

Aussi j'envisage d'apporter quelques modifications au projet pour gérer plusieurs aspects que je souhaiterai voir dans l'application :
 - support de TLS dans le client (actuellement le support est bloqué à SSLv3 qui est obsolète) => J'ai proposé un patch ici : https://github.com/updatengine/updatengine-client/pull/4
 - multiples serveurs de redistribution pour répartir la charge dans une configuration VPN avec des bandes passantes limitées
 - sécurisation de l'inscription des clients via une passphrase dans le cadre d'une utilisation hébergée sur un serveur accessible publiquement (interdire à des clients non autorisés à s'inscrire sur le serveur)
 - gestion des accents dans les noms des applications
 - problème avec l'inventaire forcé sous Windows 10
 - et d'autres ....


Je me heurte cependant à plusieurs problèmes en ce qui concerne la génération des exécutables pour Windows et du package d'installation MSI.

1) Compilation Python en EXE :
En effet l'auteur du projet n'a pas à ma connaissance mis à disposition de la communauté les instructions de compilation de l'exécutable (j'ai cependant réussi à aboutir à un .exe fonctionnel de deux façon différentes : py2exe et cx_freeze)

2) Création d'un installeur MSI
Les éléments permettant la génération de l'installeur .msi (utilisant InnoSetup) ne sont également pas disponibles !
J'ai bien tenté de déconstruire le msi avec des outils tels que innounp mais une partie du code est compilé et la décompilation (utilisation de disasm) est laborieuse / inefficace pour revenir au code d'origone, de plus le résultat final est plutôt bordélique par rapport à ce que doit être le .iss d'origine et nécessite de repartir presque de zéro.

De sorte qu'actuellement j'en suis réduit à la méthodologie suivante :
 - installer la dernière version du client avec le MSI fourni par le projet UpdatEngine
 - stopper toutes les tâches et les processus
 - écraser le contenu du dossier dans Program Files avec les fichiers que j'ai compilé moi même
 - relancer l'application
=> Ça fonctionne mais ce n'est pas l'idéal.

Si l'auteur / mainteneur d'UpdatEngine passe par là, je lui serai extrêmement reconnaissant s'il pouvait livrer ces éléments à la communauté, en particulier s'il ne prévoie plus de faire vivre le projet.
Dans le cas contraire, quelqu'un as-t-il une idée à me proposer ?

Alain Valancogne

unread,
Apr 25, 2016, 4:14:38 AM4/25/16
to updatengine-fr
Bonjour,

A vrai dire, j'ai un peu les mêmes inquiétudes quant à la pérennité du projet...
J'ai également proposé au développeur quelques corrections concernant les conditions d'installation du type "Logiciel non installé ou version inférieure à :" ou "Logiciel installé et version supérieure à :".
  • Comparaison de version contenant des caractères non numériques
  • Si plusieurs logiciels installés correspondent à la condition, le true l'emporte sur le false (le OU étant le comportement habituellement retenu)
Le second point étant particulièrement gênant, car il peut provoquer des boucles si plusieurs versions d'un même logiciel sont installées en parallèle !
Je vais essayer de les mettre sur GitHub afin que tout le monde puisse en profiter.

Bravo et merci pour le support de TLS. Je n'ai pas encore testé, mais c'est très utile.
Yves passe encore parfois par ici... On peut raisonnablement espérer qu'il mette à disposition les scripts de compilation et d'installation.

Alain

Alain Valancogne

unread,
Apr 25, 2016, 5:55:40 AM4/25/16
to updatengine-fr
Voici ma proposition de correction :
https://github.com/updatengine/updatengine-server/pull/4
C'est la première fois que j'utilise GitHub et je ne suis pas développeur Python... Alors, soyez indulgent s'il y a des erreurs !

Pour appliquer ce correctif, il suffit de remplacer le fichier updatengine-server/inventory/views.py, puis redémarrer le serveur Apache.

Alain

Damien GUILLEM

unread,
Apr 25, 2016, 6:38:56 AM4/25/16
to updatengine-fr
Salut, je regarderai ça prochainement et je te donnerai mon avis là dessus si ça t'intéresse ;-)

Damien GUILLEM

unread,
Apr 25, 2016, 6:41:22 AM4/25/16
to updatengine-fr
En ce qui concerne TLS, j'ai par souci de compatibilité activé l'ensemble des protocoles SSL / TLS (y compris SSLv2 et SSLv3).
Une implémentation correspondant aux standards actuels imposerait l'activation de TLS >= 1, je ferai certainement ça plus tard.

David Cuoq

unread,
Apr 26, 2016, 3:25:56 AM4/26/16
to updatengine-fr
Merci Alain et Damien de vos partages.

Je vous soutiens à fond sur le principe du partage. J'espère que d'autres personnes développeurs/bidouilleurs feront de même dans l'avancée de ce projet.

C'est dommage car ce soft est une pépite et fait ce qui lui demande. Malheureusement, on ne l'a pas mis en production en raison des cas de :
- pb certificat SSL
- des difficultés de remontés d'inventaire en Windows 10
- l'attente des nouveautés surtout avec la synchro Active Directory.... :/ dans une société un soft sans lien AD/ldap....


J'ai espoir de voir de bonnes nouvelles avant la fin de ce 1er semestre 2016 histoire de remettre le sujet sur les rails dans ma société.

Alain Valancogne

unread,
Apr 27, 2016, 4:28:22 AM4/27/16
to updatengine-fr
Bonjour,

Damien, à mon avis, le plus important est de pouvoir basculer les serveurs en TLS.
Que les clients acceptent encore SSL ne me semble pas un problème !

David, quels problèmes as-tu avec les clients sous Windows 10 ?

UE est complémentaire de AD/SCCM...
L'authentification AD/LDAP serait intéressante, mais elle ne concerne que les administrateurs d'UE.

Alain

Damien GUILLEM

unread,
Apr 27, 2016, 5:04:36 AM4/27/16
to updatengine-fr
Bonjour,

Damien, à mon avis, le plus important est de pouvoir basculer les serveurs en TLS.
Que les clients acceptent encore SSL ne me semble pas un problème !

Je suis d'accord avec ça, sous réserve que la connexion soit établie suivant la priorité TLS 1.2 > TLS 1.1 > TLS 1 > SSLv3 > SSLv2 !
La doc ne m'a pas plus éclairé que ça sur le sujet ... (https://docs.python.org/2/library/ssl.html)


David, quels problèmes as-tu avec les clients sous Windows 10 ?

Me concernant, le lancement d'un inventaire forcé semble fonctionner aléatoirement sur les PC sous Windows 10 (le serveur établie le contact vers le client sur le port 2010 et lui transmet une passphrase qui déclenche l'inventaire).
Test fait en local en ouvrant le port en telnet et en transmettant la passphrase, ça semble ne pas fonctionner tout le temps. Je n'ai pas encore eu le temps de pousser plus loin mon analyse.

Petite remarque en passant parce que je ne l'avais pas remarqué avant : le client ne fonctionne que lorsque la machine est reliée au secteur, dans le cas d'un PC portable qui est sur batterie, il n'y à pas d'inventaire tant qu'il n'est pas alimenté par le réseau.


UE est complémentaire de AD/SCCM...
L'authentification AD/LDAP serait intéressante, mais elle ne concerne que les administrateurs d'UE.

N'ayant qu'un nombre limité d'administrateurs je me contente de la gestion de l'authentification locale.

Alain Valancogne

unread,
Apr 27, 2016, 9:59:17 AM4/27/16
to updatengine-fr
Forcer l'inventaire ne fonctionne pas toujours quel que soit la version de Windows.
On peut raisonnablement émettre l'hypothèse que les pare-feux ou antivirus puisse en être la cause.

Effectivement les ordinateurs portables doivent être reliés au secteur pour effectuer l'inventaire...
Mais c'est davantage lié à la gestion des tâches de Windows qu'à UpdatEngine !

Alain

Damien GUILLEM

unread,
Apr 27, 2016, 10:04:26 AM4/27/16
to updatengine-fr
Forcer l'inventaire ne fonctionne pas toujours quel que soit la version de Windows.
On peut raisonnablement émettre l'hypothèse que les pare-feux ou antivirus puisse en être la cause.

Si ça ne fonctionnait pas tout le temps sur une machine donnée Ok mais lorsque ça fonctionne aléatoirement 1 fois sur X, je suis plus sceptique ...
De plus le test à été fait sur une VM qui n'avait ni antivirus, ni pare-feu !


Effectivement les ordinateurs portables doivent être reliés au secteur pour effectuer l'inventaire...
Mais c'est davantage lié à la gestion des tâches de Windows qu'à UpdatEngine !

Tout à fait, et je trouve d'ailleurs que le fonctionnement est judicieux.
Pour info, dans le MSI d'installation les taches sont créées à l'aide de schtasks.exe

UpdatEngine-admin

unread,
Apr 28, 2016, 2:19:28 AM4/28/16
to updatengine-fr
bonjour,

Je passe trop peu souvent c'est vrai et ne travail plus tout à fait dans le même domaine.
J'ai remonté une vm windows pour compiler un client avec les modifications poussées sur github.
Je compilerai le client et vous le communiquerai ici pour tests. Je ferai prochainement un article sur la façon de compiler le client également.

Merci pour le commit!
Yves

Damien GUILLEM

unread,
Apr 28, 2016, 3:00:10 AM4/28/16
to updatengine-fr
Bonjour, ça fait plaisir de te voir passer par là !
Si tu peux, pense aussi à la création du MSI pour l'installation ...
J'attends impatiemment ton article (et je pense que je ne suis pas le seul) !

Draglir' N

unread,
Apr 28, 2016, 3:54:48 AM4/28/16
to updatengine-fr
Ah ca Damien tu l'as dis !!
C'est un énorme plaisir de revoir le créateur de ce chef-d'oeuvre ! 
Le logiciel est une pépite et beaucoup de personnes l'on adopté alors si vous pouvez, Yves, essayer de maintenir ce bijou aussi longtemps que vous le pourrez ca serait génial !
Merci de prendre du temps ainsi que d'être à l'écoute de vos "clients" et je vous souhaite de passer une très bonne journée :)

Cordialement,

Drag'

Alain Valancogne

unread,
Apr 28, 2016, 10:33:15 AM4/28/16
to updatengine-fr
Cool !
Si nous avons tous les éléments nécessaires pour compiler un nouveau client et créer l'installeur, il devient envisageable de participer à l'évolution du produit...
Il faudra toujours un "arbitre" pour décider de l'intégration ou non de nouvelles fonctionnalités et déclencher la sortie de nouvelles version.

Merci,
Alain

UpdatEngine-admin

unread,
Apr 28, 2016, 3:45:57 PM4/28/16
to updatengine-fr
Tous les outils sont en ligne pour participer au projet sur github, pour ce qui est de l'arbitre, pas de souci ;)
D'ailleurs je regarderai de plus près ta modification Alain, merci.

Voici le client compilé pour test: http://download.updatengine.com/updatengine-client-setup_2.5.0.exe
Une fois le bon fonctionnement confirmé chez vous j'intégrerai la modification à la branche principale du projet et publierai le client en ligne.

bons tests,
Yves

Damien GUILLEM

unread,
Apr 29, 2016, 2:15:59 PM4/29/16
to updatengine-fr
Bonjour,

Je viens de faire une batterie de tests avec le client 2.5.0 :
 - installation / suppression (silencieuse)
 - inventaire et déploiement en TLSv1, TLSv1.1 et TLSv1.2
 - inventaire forcé
 - vérification des logs du client

Tout fonctionne comme attendu, je pense que tu peux publier cette nouvelle version.

Damien

Damien GUILLEM

unread,
May 7, 2016, 6:06:46 AM5/7/16
to updatengine-fr
Je propose un patch pour l'inventaire qui ne fonctionne pas toujours :
https://github.com/updatengine/updatengine-client/pull/7

Dans l'attente de vos retours.

Michael Lance

unread,
May 9, 2016, 6:02:09 AM5/9/16
to updatengine-fr
En ce qui concerne les remontées sur les laptops, ça vient effectivement des taches planifiées UE dans windows à modifier.

Damien GUILLEM

unread,
May 16, 2016, 9:06:27 AM5/16/16
to updatengine-fr
Petit état des corrections / améliorations proposées :

Client :
 - Support de TLS 1.0, 1.1 et 1.2 (en plus de SSLv2 et SSLv3) : https://github.com/updatengine/updatengine-server/pull/4
 - Support des caractères spéciaux (accents) dans les noms des applications et dans les commandes de packages : https://github.com/updatengine/updatengine-client/pull/5
 - Proposition de correctif pour les inventaires forcés depuis le serveur qui ne fonctionnent pas toujours : https://github.com/updatengine/updatengine-client/pull/7

Serveur :
 - Amélioration de la comparaison des versions et gestion du cas ou de multiples versions d'un logiciel sont installées : https://github.com/updatengine/updatengine-server/pull/4

Damien GUILLEM

unread,
May 31, 2016, 7:57:44 AM5/31/16
to updatengine-fr
Bonjour Yves,

Un moins s'est écoulé passé depuis ta dernière intervention et j'ai vraiment besoin de pouvoir déployer un client corrigé (voir les 3 pull request sur le projet).
Est-ce que tu peux envisager de nous fournir de quoi recompiler / packager l'installeur dans un futur proche ?
Dans le cas contraire je vais devoir le faire moi-même ce qui va être une énorme perte de temps ...

Je te remercie d'avance pour ton aide.

sebastien

unread,
Nov 8, 2016, 8:52:15 AM11/8/16
to updatengine-fr
Bonjour, je sais que ce post n'est pas tout récent mais a t'on des nouvelles pour ce nouveau client ?
Merci

Damien GUILLEM

unread,
Nov 8, 2016, 9:01:07 AM11/8/16
to updatengine-fr
A mon grand regret, aucune des modifications proposées sur le serveur ou le client n'ont été intégrés :
 - https://github.com/updatengine/updatengine-client/pulls
 - https://github.com/updatengine/updatengine-server/pulls

Et ma requête des sources de l'installeur et de la méthode de compilation n'ont pas abouti ...

sebastien

unread,
Nov 9, 2016, 2:01:30 AM11/9/16
to updatengine-fr
Je vois, merci pour la réponse, espérons que cela puisse se faire, j'utilise énormément updatengine cela serait dommage que ce soit un projet qui au fil du temps disparaisse car il est vraiment très pratique. Si jamais l'auteur passe dans le coin pense à nous :)

Damien GUILLEM

unread,
Nov 9, 2016, 2:52:33 AM11/9/16
to updatengine-fr
Pareil pour moi, on à investi pas mal de temps à prendre en main l'outil, et on se pose la question de migrer vers autre chose en raison de la difficulté de faire évoluer l'outil avec la communauté ...

sebastien

unread,
Nov 10, 2016, 5:21:43 AM11/10/16
to updatengine-fr
Effectivement c'est un problème, tant que le produit fonctionne ça va mais à long terme cela risque d'être gênant, surtout qu'à l'heure actuelle je n'ai pas trouvé d'autre outils comme updatengine gratuit qui fonctionne aussi bien (si quelqu'un connait une alternative possible au cas ou) je préférais largement continuer à l'utiliser mais si plus d'évolution il faudra envisager d'autres produits.

Damien GUILLEM

unread,
Feb 4, 2017, 11:45:40 AM2/4/17
to updatengine-fr
Bonjour à tous,

Comme indiqué nous utilisons beaucoup UpdatEngine dans notre entreprise et faute d'avoir réussi à obtenir de la part de l'auteur la procédure de compilation et les sources de l'installeur, j'ai été contrait de me lancer pour le faire moi même. Ainsi je vous fait par de mon avancement en espérant que certains d'entre vous se joignent à moi pour la suite.

Tout d'abord, je tiens à préciser que je n'ai pas du tout prévu de recréer d'installeur interactif mais uniquement en ligne de commande.
  • Compilation du code Python en .EXE Windows - OK (utilisation de cx_freeze)
  • Création d'un installeur avec InnoSetup - EN COURS (j'ai un truc fonctionnel mais pas de gestion les options d'installation sont en dur)
  • Création d'un script de déploiement ne nécessitant pas de reboot - OK (utilisation d'une tâche planifiée afin de faire une mise à jour à chaud)

Concernant la compilation, je ne pense pas avoir besoin de plus car tout est fonctionnel (je n'ai pas testé la partie proxy).

L'installeur est fonctionnel, j'ai retiré l'ajout du répertoire d'UpdatEngine dans le PATH Windows car je ne vois pas vraiment son intérêt. Il manque à implémenter la lecture des instructions (/option=val) afin de ne pas avoir à les mettre en dur avant de générer l'installeur. En fait toute la partie codée en pascal du script d'origine est manquante, j'aurai gagné beaucoup de temps là dessus si l'auteur m'avais transmis ces données.

Concernant le script d'installation, il souffre d'un petit défaut : comme on doit stopper UpdatEngine pour le mettre à jour sans redémarrer, il n'y à pas de remontée dans updatengine pour "Operation completed".


Est-ce qu'il y a des motivés pour m'aider ?

Je vais faire une petite doc et vous transmettre prochainement tout ce que j'ai fait jusque là pour que vous puissiez en disposer vous aussi.


Damien

Damien GUILLEM

unread,
Feb 6, 2017, 1:33:51 PM2/6/17
to updatengine-fr
Voilà déjà l'exécutable :

Client UE 2.4.9 mis à jour par mes soins [NON OFFICIEL]
https://groups.google.com/forum/#!topic/updatengine-fr/OUgp2TVFctQ
Les sources suivront d'ici quelques jours.
Reply all
Reply to author
Forward
0 new messages