[WM17] Déploiement de mise à jour HTTP sur IIS

Nous avons récemment tenté de créer une application Windev Mobile 17 pour des terminaux industriels afin de connaitre les possibilités de développement sur ces appareils, et pour ce faire nous avons utilisé un serveur IIS et deux terminaux de test sous Windows CE .NET 5.0.

L’application créée, nous décidons donc de générer l’installation. Dans les options de l’assistant, nous utilisons un numéro de version par défaut avec incrémentation automatique, nous choisissons de générer un fichier “.CAB” et nous indiquons l’adresse du serveur qui contiendra les fichiers de mise à jour. Il s’agit dans notre cas du serveur ALINFV81 et nous utilisons un sous-répertoire.

Nous validons l’installation. Deux fichiers sont générés : une archive de type “cabinet”, et un fichier texte dont l’extension est .WX. Petite chose étrange : le fichier .CAB généré se voit suffixé par la mention “Application Windev Mobile”. Nous renommons donc celui-ci en AS400Reader.cab, le nom original du fichier. Nous devons copier ces éléments sur le serveur.

Lorsqu’on veut accéder pour la première fois à un fichier dont l’extension n’est pas mappée sur le serveur, une erreur 403 sera renvoyée. Cela permet en fait, à la base, de protéger l’accès à certains types de fichiers qui contiendraient des données sensibles. Si on veut y accéder d’un poste client, une page “accès refusé” sera affichée, sinon si on y accède depuis le serveur, une page d’aide d’IIS s’affiche:

Sur notre serveur où est installé IIS, nous allons donc créer un type MIME. Ceci est possible soit via le gestionnaire des services internet IIS, comme expliqué dans la base de connaissances Microsoft, soit via la ligne de commandes, comme expliqué sur la page d’aide affichée (à partir de la ligne “vérifiez que le mappage MIME est activé ou ajoutez-le (…)”.Testons à nouveau l’URL une fois l’opération réalisée:

Tout est donc en place, il ne reste plus qu’à envoyer le fichier d’installation d’origine (.CAB) sur le terminal, de l’ouvrir et d’effectuer une installation classique. Ce n’est qu’au lancement de l’application que les mises à jour seront vérifiées. C’est en fait grâce à la présence de la clé HKEY_LOCAL_MACHINE\Software\PC SOFT\WINDEV Mobile\17.0\APPLI\<NomAppli> et de la valeur “UPDATE_URL”, générées sur notre terminal, que notre application pourra localiser les mises à jour, dès son lancement.

1re tentative

Le centre de contrôle Windev Mobile installé sur le terminal grâce au Framework Windev Mobile comportait un bug qui pouvait empêcher de lister correctement les applications présentes sur l’appareil. La vérification était alors proposée en boucle. Un correctif est proposé par PC SOFT pour la version 06F170078n du logiciel. A télécharger ici : pack_fr_76638.zip. Elle doit être décompressée dans le dossier Programmes de WinDev Mobile 17 ; vous devez lors de la décompression confirmer le remplacement des fichiers de mêmes noms déjà présents. Le framework doit ensuite être déployé à nouveau.

2ème tentative

La mise à jour n’est pas trouvée sur le serveur : aucun numéro de version ne s’affiche lorsqu’on a demandé à vérifier les mises à jour depuis le terminal. Cela est en fait dû à l’encodage du fichier VERSION.WX qui a été copié plus tôt sur le serveur (fichier généré avec l’archive .CAB). Il est en fait en Unicode, mais nos appareils, ou le centre de contrôle, requièrent que celui-ci soit encodé au format ANSI. Nous l’avons converti avec Notepad++, mais cela peut se faire avec le bloc-notes.

3ème tentative

Nous recherchons donc, une fois de plus, les mises à jour pour notre application AS400Reader. Nous la lançons donc, et répondons “Oui” lorsque la question “Voulez-vous rechercher les mises à jour” est posée. Elle recherchera également les nouvelles versions pour d’autres applications Windev Mobile qui seraient présentes sur l’appareil.

Le centre de contrôle s’ouvre alors et affiche un message proposant la mise à jour de notre application. La taille affichée en Ko est incorrecte car, pour rappel, le fichier VERSION.WX indique “-1” dans le paramètre TAILLE (voir l’image plus haut). Nous répondons par “Oui” au message affiché.

L’appareil fait mine de télécharger quelque chose car la LED d’activité du Wi-Fi clignote à plusieurs reprise et le terminal ralentit, comme quand on transfère un fichier par FTP sur celui-ci. Il reste alors bloqué un moment sur l’écran suivant.

Soudain, un message assez bizarre s’affiche en mentionnant un nom de fichier complètement inconnu :File \Temp\WDMaj.cab is not a valid Windows setup file. Ce fichier a une taille aléatoire : parfois 130 bytes, parfois plus, parfois moins, mais sans dépasser le kilo-octet. Notre fichier de mise à jour, AS400Reader.cab, n’a pas été téléchargé, et donc la mise à jour n’a pas été appliquée.

Cependant, la valeur de registre comportant le numéro de version a été mise à jour. Celle-ci est également stockée dans la clé HKEY_LOCAL_MACHINE\Software\PC SOFT\WINDEV Mobile\17.0\APPLI\<NomAppli>. Il faudra forcer ce numéro et remettre l’ancienne version si on veut à nouveau que le centre de contrôle détecte la mise à jour. Le logiciel TweakIt permet d’explorer la base de registre et de modifier les valeurs.

Et après?

Nous en sommes donc restés là pour l’instant, mais nous n’abandonnons pas de sitôt. PC SOFT est au courant de ces problèmes et nous attendons leur réponse par rapport à l’erreur de la dernière tentative. Cet article sera donc complété en temps et en heure lorsque la solution aura été trouvée. Si vous avez déjà été face à ce problème, et que vous pensez connaitre la source de l’erreur, n’hésitez pas à faire par de vos commentaires dans ce billet.

Mise à jour du 22/8/2012 : PC SOFT nous a annoncé par e-mail qu’ils travaillaient actuellement sur un correctif censé corriger le problème du fichier qui ne se télécharge pas. Nous attendons actuellement les prochaines mises à jour du logiciel.

Sources

Principe détaillé d’une mise à jour HTTP (Windev Mobile) – Blogs PC SOFT

4 commentaires sur « [WM17] Déploiement de mise à jour HTTP sur IIS »

  1. Bonjour,
    Merci pour ce billet, très instructif, nous sommes arrivés à peut près au même résultat (avec la version 16 ça fonctionnait presque mieux …)
    Je vous écris, pour vous donner mon sentiment :
    1 – L'utilisateur doit demander de vérifier la mise à jour, alors que le système devrait proposer de mettre à jour quand il y a réellement un changement de version.
    2 – Lors d'un cold-boot, la mise à jour sera effacé par l'ancienne version, puisqu'elle se décompresse sans remplacer le CAB d'installation.
    3 – Un simple "Attendez SVP" avec tout le travail en tâche de fond, sans avoir à changer d'application, et cliquer sur 3 ou 4 boutons "suivant/ok", serait plus "professionnel" dans un environnement industriel, ou l'opérateur n'en a que faire d'avoir des informations inutiles.

    En conclusion, je trouve qu'une fois de plus PC-Soft fait des systèmes très "accessible", une volonté manifeste de supprimer les tâches rébarbatives, mais j'ai l'impression qu'ils méconnaissent totalement le milieu industriel.

    Votre avis ?

  2. Bonjour,

    1- Le système propose la mise à jour au lancement de l'application, comme sur les PC. En fait, il serait utile que le processus soit automatique quoiqu'il arrive et que l'utilisateur n'ait pas son mot à dire.

    2- Je n'avais pas du tout pensé au cas du cold boot et je ne pensais pas du tout que le CAB n'était pas remplacé,donc que l'ancienne version serait restaurée. Avez-vous signalé cela à PC SOFT, afin qu'ils l'intègrent (peut-être) dans les prochaines mises à jour ?

    3- Effectivement, un message d'attente plutôt que toutes les fenêtres de mise à jour – surtout que quand les terminaux ne sont pas tactiles, ça rend directement la tâche plus "longue" (pas tellement, mais on perd vite du temps).

    Je suis assez d'accord, ils n'ont pas apporté beaucoup d'attention au côté pratique, mais je pense que les développeurs WD n'ont pas le même réflexe que les autres, à savoir partager leurs connaissances, leurs avis, et leurs suggestions, comme vous le faites, et comme je le fais via ce blog.

    Sachez également que nous sommes sans doute lu par PC SOFT, puisque j'ai déjà eu des contacts avec eux suite à différents articles parus ici.

    Bien à vous,
    Vincent

  3. Bonjour,

    ce billet date un peu, mais nous rencontrons le même problème avec la version Windev Mobile 20.
    Avez-vous trouvé une solution ?
    Merci.
    Eric

  4. Je n'ai pas encore travaillé avec Windev Mobile 20 (car je ne la possède pas). Si le problème existe toujours il serait utile de le signaler à PC SOFT 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *