OVH Cloud OVH Cloud

Mise à jour automatique

5 réponses
Avatar
Assi
Bonjour,

J'aimerais bien mettre =E0 jour automatiquement mon=20
application =E0 partir d'une nouvelle version sur un serveur=20
afin que je ne puisse pas me d=E9placer =E0 chaque poste=20
client ou avertir l'utilisateur d'une nouvelle mise =E0 jour=20
disponible. Si quelqu'un a une id=E9e, je serais tr=E8s=20
content de la prendre. J'en ai trouv=E9 un exemple sur le=20
forum dat=E9 du 10/09/2003 mais je ne le comprends pas tr=E8s=20
bien.

D'avance merci pour votre aide.

Assi

5 réponses

Avatar
François Picalausa
"Assi" a écrit dans le message de
news:035b01c3ba58$917e7ca0$
J'aimerais bien mettre à jour automatiquement mon
application à partir d'une nouvelle version sur un serveur
afin que je ne puisse pas me déplacer à chaque poste
client ou avertir l'utilisateur d'une nouvelle mise à jour
disponible. Si quelqu'un a une idée, je serais très
content de la prendre. J'en ai trouvé un exemple sur le
forum daté du 10/09/2003 mais je ne le comprends pas très
bien.



Bonjour/soir,

Le principe est que l'exe ne peut pas se remplacer lui même.

Un possibilité est:
dans l'application:
Tester si l'exe est en dernière version
Si ce n'est pas le cas, lancer un second exécutable qui se chargera du
remplacement, après s'être assuré que l'application n'est plus en mémoire
(par exemple, en énumérant les process -
http://support.microsoft.com/?kbid2986)

Une autre:
Ne mettre à jour qu'au redémarrage via une copie par Windows du fichier:
http://msdn.microsoft.com/library/en-us/fileio/base/movefileex.asp
A noter, dans les remarques, le cas de Win 9x/Me ne supportant pas cette
API. Dans ce cas, il faut utiliser wininit.ini

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
Assi
Bonjour François,

Pourrez vous, s'il vous plait me donner un exemple sur les
cas que vous avez ennumeré ?
D'avance merci d'avoir consacrer une partie de votre temps
à me répondre.
Grâce à vous nous allons progresser en VB.
Encore merci.

Assi

-----Message d'origine-----
"Assi" a écrit dans


le message de
news:035b01c3ba58$917e7ca0$
J'aimerais bien mettre à jour automatiquement mon
application à partir d'une nouvelle version sur un




serveur
afin que je ne puisse pas me déplacer à chaque poste
client ou avertir l'utilisateur d'une nouvelle mise à




jour
disponible. Si quelqu'un a une idée, je serais très
content de la prendre. J'en ai trouvé un exemple sur le
forum daté du 10/09/2003 mais je ne le comprends pas




très
bien.



Bonjour/soir,

Le principe est que l'exe ne peut pas se remplacer lui


même.

Un possibilité est:
dans l'application:
Tester si l'exe est en dernière version
Si ce n'est pas le cas, lancer un second exécutable qui


se chargera du
remplacement, après s'être assuré que l'application n'est


plus en mémoire
(par exemple, en énumérant les process -
http://support.microsoft.com/?kbid2986)

Une autre:
Ne mettre à jour qu'au redémarrage via une copie par


Windows du fichier:
http://msdn.microsoft.com/library/en-


us/fileio/base/movefileex.asp
A noter, dans les remarques, le cas de Win 9x/Me ne


supportant pas cette
API. Dans ce cas, il faut utiliser wininit.ini

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


.



Avatar
Christian Hugoud - Xtrem7
Bonjour,

Voici comment je m'y prends pour faire cela :

1) l'appli est capable de faire un download en ftp.
2) il y a 2 fichiers sur le serveur : un fichier qui contient les n° de
la dernière version disponible sur le serveur et un indicateur qui dit
si une réinstallation complète est nécessaire (désinstaller d'abord,
réinstaller ensuite), et le fichier d'installation lui-même.
3) j'utilise Windows Installer.
4) pour la procédure d'update, l'appli interroge le fichier qui contient
le n° de la version disponible sur le site.
5) si pas d'update nécessaire, alors l'appli informe, donne le choix
etc...
6) si update sans réinstall, alors download du fichier d'installation
(*.msi pour Windows Installer), puis un shell sur ce fichier downloadé
avec une ligne de commande un peu particulière (que je peux te
communiquer), puis fin IMMEDIATE de l'appli (à gérer aux petits
oignons). L'idée est que l'appli doit être close avant que Windows
Installer ne vérifie qu'elle tourne encore.
7) si l'install nécessite une désinstall, alors download comme
précédemment, écriture dans la base de registre (RunOnce) de
l'installation lors du reboot sur le fichier downloadé, et lancement de
la désinstallation avec en paramètre de la ligne de commande le forçage
du reboot (même remarque que précédemment), et arrêt immédiat de l'appli
(même remarque que précédemment).

Cela fonctionne parfaitement sous 98SE et XP

Voila...

Hope this helps.

Christian


"Assi" a écrit dans le message de
news:035b01c3ba58$917e7ca0$
Bonjour,

J'aimerais bien mettre à jour automatiquement mon
application à partir d'une nouvelle version sur un serveur
afin que je ne puisse pas me déplacer à chaque poste
client ou avertir l'utilisateur d'une nouvelle mise à jour
disponible. Si quelqu'un a une idée, je serais très
content de la prendre. J'en ai trouvé un exemple sur le
forum daté du 10/09/2003 mais je ne le comprends pas très
bien.

D'avance merci pour votre aide.

Assi
Avatar
Assi
Bonjour,

Merci de m'avoir répondu.
J'aimerais que tu me communique la ligne de commande
particulière en question. Je te signale que pour mes
installations, j'utilise Inno Setup. Peux-tu me situer sur
le second fichier et la fin immediate de l'appli dont tu
parles ici?

D'avance infiniment pour ton aide.

Assi

-----Message d'origine-----
Bonjour,

Voici comment je m'y prends pour faire cela :

1) l'appli est capable de faire un download en ftp.
2) il y a 2 fichiers sur le serveur : un fichier qui


contient les n° de
la dernière version disponible sur le serveur et un


indicateur qui dit
si une réinstallation complète est nécessaire


(désinstaller d'abord,
réinstaller ensuite), et le fichier d'installation lui-


même.
3) j'utilise Windows Installer.
4) pour la procédure d'update, l'appli interroge le


fichier qui contient
le n° de la version disponible sur le site.
5) si pas d'update nécessaire, alors l'appli informe,


donne le choix
etc...
6) si update sans réinstall, alors download du fichier


d'installation
(*.msi pour Windows Installer), puis un shell sur ce


fichier downloadé
avec une ligne de commande un peu particulière (que je


peux te
communiquer), puis fin IMMEDIATE de l'appli (à gérer aux


petits
oignons). L'idée est que l'appli doit être close avant


que Windows
Installer ne vérifie qu'elle tourne encore.
7) si l'install nécessite une désinstall, alors download


comme
précédemment, écriture dans la base de registre (RunOnce)


de
l'installation lors du reboot sur le fichier downloadé,


et lancement de
la désinstallation avec en paramètre de la ligne de


commande le forçage
du reboot (même remarque que précédemment), et arrêt


immédiat de l'appli
(même remarque que précédemment).

Cela fonctionne parfaitement sous 98SE et XP

Voila...

Hope this helps.

Christian


"Assi" a écrit dans


le message de
news:035b01c3ba58$917e7ca0$
Bonjour,

J'aimerais bien mettre à jour automatiquement mon
application à partir d'une nouvelle version sur un serveur
afin que je ne puisse pas me déplacer à chaque poste
client ou avertir l'utilisateur d'une nouvelle mise à jour
disponible. Si quelqu'un a une idée, je serais très
content de la prendre. J'en ai trouvé un exemple sur le
forum daté du 10/09/2003 mais je ne le comprends pas très
bien.

D'avance merci pour votre aide.

Assi


.



Avatar
Christian Hugoud - Xtrem7
Bonjour,

La fin de l'appli immédiate signifie que lorsque l'on lance une install
ou une désisntall, WI (windows Installer) commence par vérifier que
l'appli n'est pas déjà ouverte. Donc, si l'appli prend du temps à se
fermer (check de sortie, écran etc...), WI va détecter que l'appli
fonctionne, et donc stopper la procédure avec une belle boite. D'autre
part, les problèmes de fermeture sous VB sont fréquents ; attention
donc. Sous 98, j'ai ajouter un KillProcess, que je ne lance pas sous XP
(donc détecter l'OS).

Les lignes de commandes sont valables pour WI. Pour INNO, cela ne
fonctionnera pas. Il faut alors voir comment tu peux récupérer quelque
chose quelque part pour lancer la désinstallation de l'appli. Il faut
aussi que tu sache si INNO accepte d'écraser une install pour mettre à
jour une appli.

Dans RunOnce, il s'agit simplement d'un shell sur le fichier que tu as
téléchargé, avec ou non des paramètres de commande. Il faut alors que la
désinstall puisse forcer le reboot (à vérifier).

Le fichier d'identification de version est un fichier texte avec 2
séquences de 3 lignes, qui comprennent dans la première séquence
Version, Release et Update de la version disponible en download (l'appli
lit ces infos et vérifie par rapport à elle-même si elle est à jour ou
non). La seconde séquence a la même structure, mais qualifie depuis
quelle version on n'a pas besoin de réinstaller totalement.

Si tu veux voir comment tout cela fonctionne, télécharge
www.xtrem7.com/xtrem7.msi sur ton disque dur (impératif) et installe
depuis ton disque. Dans le menu Outil, tu trouvera Mise à jour
logiciel...

Christian


"Assi" a écrit dans le message de
news:0c9401c3ba7e$97543630$
Bonjour,

Merci de m'avoir répondu.
J'aimerais que tu me communique la ligne de commande
particulière en question. Je te signale que pour mes
installations, j'utilise Inno Setup. Peux-tu me situer sur
le second fichier et la fin immediate de l'appli dont tu
parles ici?

D'avance infiniment pour ton aide.

Assi

-----Message d'origine-----
Bonjour,

Voici comment je m'y prends pour faire cela :

1) l'appli est capable de faire un download en ftp.
2) il y a 2 fichiers sur le serveur : un fichier qui


contient les n° de
la dernière version disponible sur le serveur et un


indicateur qui dit
si une réinstallation complète est nécessaire


(désinstaller d'abord,
réinstaller ensuite), et le fichier d'installation lui-


même.
3) j'utilise Windows Installer.
4) pour la procédure d'update, l'appli interroge le


fichier qui contient
le n° de la version disponible sur le site.
5) si pas d'update nécessaire, alors l'appli informe,


donne le choix
etc...
6) si update sans réinstall, alors download du fichier


d'installation
(*.msi pour Windows Installer), puis un shell sur ce


fichier downloadé
avec une ligne de commande un peu particulière (que je


peux te
communiquer), puis fin IMMEDIATE de l'appli (à gérer aux


petits
oignons). L'idée est que l'appli doit être close avant


que Windows
Installer ne vérifie qu'elle tourne encore.
7) si l'install nécessite une désinstall, alors download


comme
précédemment, écriture dans la base de registre (RunOnce)


de
l'installation lors du reboot sur le fichier downloadé,


et lancement de
la désinstallation avec en paramètre de la ligne de


commande le forçage
du reboot (même remarque que précédemment), et arrêt


immédiat de l'appli
(même remarque que précédemment).

Cela fonctionne parfaitement sous 98SE et XP

Voila...

Hope this helps.

Christian


"Assi" a écrit dans


le message de
news:035b01c3ba58$917e7ca0$
Bonjour,

J'aimerais bien mettre à jour automatiquement mon
application à partir d'une nouvelle version sur un serveur
afin que je ne puisse pas me déplacer à chaque poste
client ou avertir l'utilisateur d'une nouvelle mise à jour
disponible. Si quelqu'un a une idée, je serais très
content de la prendre. J'en ai trouvé un exemple sur le
forum daté du 10/09/2003 mais je ne le comprends pas très
bien.

D'avance merci pour votre aide.

Assi


.