Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
J'aimerais qu'une de mes applications PB (V10.2.1) puisse se mettre à jour toute seule.
Est-ce que vous pourriez me conseiller une façon de faire svp ? peut être qu'il existe déja quelque chose qui fasse ca ?
Merci d'avance
Hors ligne
Pour info, depuis la V11, il y a ceci (merci à Sweey pour le tuyau ):
Aide PB a écrit:
Properties for .NET Windows Forms Application: General tab
options
(...)
Publish as smart client application
Select if you want to publish this application as a smart client application. This enables you to use "intelligent update” and to specify whether the application can be used online only or both online and offline. If you do not select this check box, only the General, Resource Files, Library Files, Version, Run, and Post Build tab pages are enabled.
Hors ligne
raaahh mince je suis en 10.2.1 moi
une autre idée ?
Hors ligne
foon a écrit:
Pour info, depuis la V11, il y a ceci (merci à Sweey pour le tuyau ):
Aide PB a écrit:
Properties for .NET Windows Forms Application: General tab
options
(...)
Publish as smart client application
Select if you want to publish this application as a smart client application. This enables you to use "intelligent update” and to specify whether the application can be used online only or both online and offline. If you do not select this check box, only the General, Resource Files, Library Files, Version, Run, and Post Build tab pages are enabled.
il me semble que c'est uniquement valable pour la partie winform.
Hors ligne
Bonjour,
Oui, mais on peut le détourner de sa fonction originel pour déployer des applications standard Win32.
Il suffit de déclarer l'exe dans le package. Je n'ai pas testé cette une réponse que j'ai lors d'un séminaire avec Alex Pratt.
Hors ligne
et sinon pour la V10.2.1 vous auriez pas une idée ou un code source svp ?
Hors ligne
Je vais bientôt devoir implémenter ce genre de chose et pour y avoir déjà un peu pensé voici une idée générale:
Tu pourrais créer une application indépendante qui se connecterait à un serveur FTP et irait lire un fichier contenant les différentes versions disponibles. Cette application vérifierait la version encours et comparerait avec la dernière version disponible. Suivant qu'une nouvelle version est dispo, elle téléchargerait cette version et en ayant préalablement effectué un backup de la version tu remplacerait les sources de ton application.
Il existe aussi sur le net une version open source d'un outil similaire à RTPATCh (un binary bit level difference generator dont je ne me souviens plus du nom) qui te permettrai de ne mettre à jour que le delta entre deux versions (beaucoup plus léger que de toute transférer mais aussi plus complexe à mettre en oeuvre).
Ne surtout pas oublier de travailler à la manière d'une transaction logique (çà que si tout ne s'est pas bien passé, tu dois pouvoir revenir à la version précédente (d'ou l'utilité de backuper avant de mettre à jour).
On pourrait envisager de construire cet objet en parallèle si çà te tente, histoire de se répartir l'effort à fournir... (moi je bosse en 10.5.1 cela ne devrait pas trop poser de poblèmes)...
Vincent
Hors ligne
Salut Vince, merci pour le tuyau
Oui si tu veux on peut voir ca ensemble, mais je n'ai pas prévu de m'y mettre avant quelques temps, il faut déja que je termine le gros du dev avant de penser à faire ca.
Je pensait plutot stocker les fichiers de la nouvelle version sur un serveur de fichier (pas besoin de FTP). Mais ce qui me pose problème c'est plutôt ca :
Comment remplacer l'exe d'une appli qui tourne vu qu'il est vérrouillé, par une autre (nouvelle version)
Dernière modification par bombseb (06-04-2009 13:17:10)
Hors ligne
bombseb a écrit:
Comment remplacer l'exe d'une appli qui tourne vu qu'il est vérrouillé, par une autre (nouvelle version)
Il faut que le prg principal, s'il détecte une nouvelle version (comparaison entre le n° de version du prg lancé via API windows et un n° de version stocké dans la BDD p.ex), lance un second exe et se termine.
C'est ce 2ème exe qui se chargera des màj puis relancera le prg principal.
Ainsi tu es sûr de pouvoir déplacer/écraser les fichiers du prg principal.
Hors ligne
yes, c'est ce que j'était en train de me dire....
Hors ligne
bombseb a écrit: Oui si tu veux on peut voir ca ensemble, mais je n'ai pas prévu de m'y mettre avant quelques temps, il faut déja que je termine le gros du dev avant de penser à faire ca.
Je suis en train de finaliser aussi une application en cours et je fais çà en soirée après le boulot et week-end, donc ce n'est pas dans l'immédiat non plus. Dans le même style, je dois mettre en place un module de traduction (que j'ai déjà en partie réalisé) et réfléchir à la protection de l'application (contre les cracks et autre bidouillage du genre) et suis partant pour le partage et la collaboration de source, donc si çà t'intéresse...
Vincent
Hors ligne
Bonjour, est déclaré dans un point ini
Nous utilisons un programme externe appelé depuis un raccourcis spécifique :
Exemple de raccourcis pour mancer l'application GPAO_V9 :
Cible : "C:\Program Files\Applications JII\Mise à jour version\mj.exe" GPAO_V9
Démarrer dans : "C:\Program Files\Applications JII\Mise à jour version"
GPAO_V9 est déclaré dans un point ini lié à mj.exe :
[GPAO_V9] Appli_Serveur = \\FICHIERS\INSTALL\Mise à jour de Versions\Fichiers LST\GPAO V9.LST Appli_Local = c:\Program Files\Applications \Gpao
Le fichier LST contient la liste des différents fichiers à vérifier.
Ainsi au lancement du raccourci on récupère la liste des fichiers à comparer et à mettre à jour en local par rapport aux sources définies dans le LST.
Exemple du fichier LST :
[Répertoire] Serveur=\\FICHIERS\INSTALL\Mise à jour de Versions\Applications\GPAO V9 SauvegardeSourcesTravail=G:\INFORMATIQUE\PERSONNEL\GROUPE INFORMATIQUE\PROJETS\0114 GPAO\APPLICATIF\VERSION PB9\VERSION DE TRAVAIL SauvegardeSourcesDiffusés=G:\INFORMATIQUE\PERSONNEL\GROUPE INFORMATIQUE\PROJETS\0114 GPAO\APPLICATIF\VERSION PB9\VERSION EN COURS [Informations] Création=TOTO Date_Création=26/08/2005 14:03 Modification=TITI Date_Modification=07/04/2009 16:45 [Fichiers] Fichier1=gpao.exe,1 Fichier2=gpao.pbd,0 Fichier3=communs.pbd,0 Fichier4=consitution.pbd,0 Fichier5=environnement.pbd,0 Fichier6=jalonnement.pbd,0 Fichier7=operations_types.pbd,0 Fichier8=profils.pbd,0 Fichier9=nomenclature.pbd,0 Fichier10=machines.pbd,0 Fichier11=expression_besoin.pbd,0 Fichier12=demande_interne.pbd,0 Fichier13=document.pbd,0 Fichier14=produit_intermediaire.pbd,0 Fichier15=messagerie.pbd,0 Fichier16=ico\clochette_1.ico,0 Fichier17=ico\clochette_2.ico,0 Fichier18=ico\clochette_3.ico,0 Fichier19=ico\clochette_4.ico,0 Fichier20=lock.pbd,0 Fichier21=lancement.pbd,0 Fichier22=essai_gpao.pbd,0 Fichier23=stock.pbd,0 Fichier24=commande.pbd,0 Fichier25=images.pbd,0 Fichier26=of.pbd,0 Fichier27=expedition.pbd,0 Fichier28=ico\clochette_5.ico,0 Fichier29=tableau_bord.pbd,0 Fichier30=magasin.pbd,0 Fichier31=suivi_activite.pbd,0 Fichier32=gestion.pbd,0 Fichier33=gestion_lots.pbd,0 Fichier34=gest_activite_annexe.pbd,0 Fichier35=inventaire.pbd,0 Fichier36=images.pbd,0 Fichier37=gestion_impressions.pbd,0 Fichier38=Mswinsck.ocx,0 Fichier39=documents_rattaches.pbd,0 Fichier40=gestion_lot_client.pbd,0 Fichier41=lot_provisoire.pbd,0 Fichier42=saisie_manuelle_lot.pbd,0 Fichier43=gestion_lot_sous_traitant.pbd,0 Fichier44=gest_art_info_nomen.pbd,0 Fichier45=gestion_premier_article.pbd,0 Fichier46=permis_produire.pbd,0 Fichier47=utilitaire.pbd,0 Fichier48=secretariat_vente.pbd,0 Fichier49=FMAIL32.DLL,0 Fichier50=suivi_affaire.pbd,0 Fichier51=ordo.pbd,0 Fichier52=Complements\xGantt\Vcgantt.ocx,0 Fichier53=Complements\xGantt\vcpane32u.dll,0 Fichier54=Complements\xGantt\vcprct32u.dll,0 Fichier55=Complements\xGantt\vcwin32u.dll,0 Fichier56=Complements\xGantt\vxcsv32u.dll,0 Fichier57=Complements\xGantt\msvcp60.dll,0 Fichier58=Complements\xGantt\mfc42u.dll,0 Fichier59=Complements\xGantt\msvcrt.dll,0 Fichier60=Complements\xGantt\olepro32.dll,0 Fichier61=Complements\xGantt\oleaut32.dll,0 Fichier62=Complements\xGantt\comctl32.dll,0 Fichier63=Complements\xGantt\wininet.dll,0 Fichier64=Complements\xGantt\shlwapi.dll,0 Fichier65=Complements\xGantt\gantt_isys.ifd,0 Fichier66=Complements\xGantt\gantt_isys.INI,0 Fichier67=Complements\xGantt\gantt_isys_ENM.ifd,0 Fichier68=Complements\xGantt\gantt_isys_ENM.INI,0 Fichier69=msg_alerte.pbd,0 Fichier70=marquage.pbd,0 Fichier71=recherche_et_developpement.pbd,0 Fichier72=registres_controle_rec.pbd,0 Fichier73=outils_jehier.pbd,0 Fichier74=lib_chaines.pbd,0 Fichier75=lib_fenetres.pbd,0 Fichier76=lib_fichiers.pbd,0 Fichier77=lib_mathematique.pbd,0 Fichier78=lib_menu.pbd,0 Fichier79=connexion_jehier.pbd,0 Fichier80=utilit.pbd,0 Fichier81=connexion.pbd,0 Fichier82=rebut.pbd,0 Fichier83=forcast.pbd,0 Fichier84=ilot_production.pbd,0
Ce fichier indique aussi quel est l'exe à lancer suite à mise à jour.
Nous utilisons ce module avec les versions 7, 9 et 10.5 de powerbuilder.
Contactez-moi si vous voulez plus de détails.
Hors ligne
bonjour
J'ai fait un service en c#, qui arrête l'application et remplace les fichiers pbd,exe et dll.
Seul soucis, il faut que ce service tourne avec un compte lui permettant d'arrêter le processus.
Une autre piste à explorer est de faire vérifié à l'application concernée la présence d'un fichier, contenant l'heure d'arrêt et la durée pour qu'elle se ferme toute seule.
Dernière modification par ydl (05-05-2009 13:52:07)
Hors ligne
Peut-être un peu tard, mais je me suis fait un pbni capable d'aller lire un n° de version (et fait toute info présente dans la ressource VersionInfo d'un module windows - .exe, .dll, ...) et même d'aller le modifier.
Je m'en sers sur mes projets pour déployer des mises à jour. Pour ce qui est de l'exe qui tourne, je n'ai pas de solution : nos mises à jour sont déployées via des installeurs NSIS, qui s'occupent d'installer les fichiers à remplacer et dans la cas de "patches" où seuls des fichiers de config changent qui modifient le n° de version de l'exe PB.
Pour info, cette manip (aller modifier la ressource VersionInfo d'un exe PB) est casse gueulle en passant par l'API windows car elle risque de supprimer des données utilisées par la VM de PB qui se trouvent à la fin de l'exe mais dont l'entête PE n'est pas au courant (un overlay). Mais ma lib gère cette manipulation.
Si ça vous intéresse, je pourrais mettre ça en ligne ?
Hors ligne
seki a écrit:
Si ça vous intéresse, je pourrais mettre ça en ligne ?
avec plaisir
d'ailleurs on pourrait déposer tes réalisations dans le module téléchargement du forum
Hors ligne
Bon, on ne maîtrise pas toujours les priorités, alors je n'ai pas eu le temps de finir le packaging mais ça va venir.
Je viens de faire une nouvelle version de ma lib, ainsi que de mon plugin pour NSIS.
Le pbni va suivre.
En attendant y a une nouvelle version de PbniRegex et un petit nouveau : PbniHash (je poste ça dans le forum des echanges des sources)
Hors ligne
buck a écrit:
Bonjour,
Oui, mais on peut le détourner de sa fonction originel pour déployer des applications standard Win32.
Il suffit de déclarer l'exe dans le package. Je n'ai pas testé cette une réponse que j'ai lors d'un séminaire avec Alex Pratt.
ca marche ca ?
comment declare l'exe et les pbds ?
merci des réponses.
Hors ligne
Bonjour,
Nous avons, nous aussi, une application qui vérifie un numéro de version et, le cas échéant, copie une liste de fichiers prédéfinie dans un .ini. Nous aimerions faire une copie différentielle (ne copier que les fichiers modifiés). Nous sommes en PB9.
Sans parler de comparer la date du fichier ou la taille, est-il possible (par l'appel d'une API Windows ou autre) d'effectuer une comparaison "bit à bit" ?
Hors ligne
Salut,
Plutôt qu'une comparaison bit à bit, il est peut-être plus aisé (rapide ?) de calculer un checksum avec un algorithme de hashage tel que MD5, SHA1 ou SHA256. Il me semble que Windows (depuis NT4) possède de telles fonctions dans ses API de crypto.
Edit:
Tu pourras t'inspirer de ce qui se trouve ici.
Dernière modification par General Protection Fault (27-01-2010 13:32:31)
Hors ligne
seki a écrit:
Bon, on ne maîtrise pas toujours les priorités, alors je n'ai pas eu le temps de finir le packaging mais ça va venir.
Je viens de faire une nouvelle version de ma lib, ainsi que de mon plugin pour NSIS.
Hum, pour ceux qui cherchent dans les archives, ça a pris le temps mais c'est enfin en ligne, voir cet autre post.
Vieux motard que jamais
Hors ligne
Pages: 1