Utilitaire de mise à jour d'applications

Description

Utilitaire à intégrer dans vos applications :
à compiler après avoir rempli les champs et enregistré dans debug : adresses.txt et identFTP.txt

-* Test connection par ping
-* Lecture des versions locale et distante d'une application
-* Utilisateur : Mise à jour d'un .exe par Download en HTTP
-* Développeur : Download et Upload en FTP de l'exe de la dernière version et du zip complet de l'application (Zip créé dans l'application)
-* Gestion de toutes les erreurs d'exécution (prévues ou non par Try)

Source / Exemple :


'upload developpeur  ou download ZIP complet pour l'utilsateur
    Private Sub UPLOAD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles upload.Click
        If Not SousReseau Then Exit Sub
        'pour déposer le fichier exe avec son indicateur de version
        Infos.Cursor = Cursors.AppStarting
        If upload.Text = "Dépôt (UPLoad) sur le site Ressources" Then 'c'est le developpeur en FTP
            Dim Log = NomProduit + ".exe" + Chr(10) + "Adresses.txt"
            Dim tab = Log.Split(Chr(10))
            Dim mesg As String = "L'upload déposera côte à côte  le fichier  " + ExeVersion("up") + " , sa version " + NomVersion + " et " + NomProduit + ".zip avec lequel l'utilisateur pourra conserver tous ses fichiers persos, tout en rafraichissant tous les fichiers indispensables soit : " + Str(tab.length) + " fichiers:" _
            + Chr(10) + Log _
            + Chr(10)
            Dim SeptZG As String = "C:\Program Files\7-Zip\7zG.exe"

            If IO.File.Exists(SeptZG) Then 'auto
                'pour faire le zip automatiquement par 7-Zip, il ne faut pas de fichier ouvert !
                If IO.File.Exists(CheminExe + "/" + ExeVersion("up")) Then IO.File.Delete(CheminExe + "/" + ExeVersion("up"))
                IO.File.Copy(CheminExe + "/" + NomProduit + ".exe", CheminExe + "/" + ExeVersion("up"))
                '7-Zip le creera automatiquement
                If IO.File.Exists(ZIPLocal) Then IO.File.Delete(ZIPLocal)
                MsgBox(mesg + Chr(10) + "Le nouveau ZIP va être réalisé automatiquement par 7-Zip (" + SeptZG + ").", MsgBoxStyle.OkOnly)
                For i = 0 To tab.length - 1
                    tab(i) = Chr(34) + Application.StartupPath + "/" + tab(i) + Chr(34)
                Next
                Join(tab, ";")
                Dim args = " a " + Chr(34) + CheminExe + "/" + NomProduit + ".zip" + Chr(34) + " " + Join(tab, " ")
                args = args.replace("/", "\")
                Shell(SeptZG + args, AppWinStyle.NormalFocus, True, 30000) 'doit être fait en moins de 30 s !
            Else 'namuel
                If Not IO.File.Exists(ZIPLocal) Then
                    MsgBox(mesg + Chr(10) + "Ce ZIP doit être réalisé manuellement par l'archiveur de votre choix(ou télécharger l'archiveur gratuit 7-ZIP qui peut travailler en arrière plan...)" + Chr(10) + "Quitter cette application. ")
                    Exit Sub
                Else 'sinon deuxième passage avec le Zip créé ou rfaraichi automatiquement
                End If
            End If

            If IO.File.Exists(ZIPLocal) And MsgBox("Le Zip est prêt. Confirmez-vous l'upload complet vers votre site distant (et localhost) : " + NomZIP + ", " + ExeVersion("up") + ", et " + NomVersion + " ?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
                Try
                    mess("Votre application est en cours de transfert sur localhost et sur le site Ressource (version " + veractuel.Text + ").")
                    Cree_VersionDistanteTemp()  'fait le fichier pour transferer la version actuelle 
                    If FTP Then 'le developpeur fonctionne en ftp
                        'true pour voir l'avancement, et pas de boolean  écrase car upload ecrase toujours
                        My.Computer.Network.UploadFile(VersionDistanteTemp, VersionDistanteFTP, user, pass, True, 10000) 'il y a eu un pb si plus de 10s
                        My.Computer.Network.UploadFile(CheminExe + "/" + ExeVersion("up"), adrftp + "/" + dossiers + "/" + ExeVersion("up"), user, pass, True, 300000) 'il y a eu un pb si plus de 5 mn
                        My.Computer.Network.UploadFile(ZIPLocal, ZIPdistantFTP, user, pass, True, 300000) 'il y a eu un pb si plus de 5 mn
                    Else
                        MsgBox("Cette application ne permet pas de faire un Upload en HTTP. Il vous faut un accés FTP sur le site.")
                    End If
                    'synchroniser wpapache avec site ressources (si site modifié et pas loacalhost
                    If Wapache Then
                        IO.File.Copy(EXELocal, adrLocalHost + "/" + dossiers + "/" + ExeVersion("up"), True)
                        IO.File.Copy(VersionDistanteTemp, VersionLocalhost, True)
                        IO.File.Copy(ZIPLocal, ZIPLocalHost, True)
                    End If
                Catch ex As Exception
                    mess(ex.Message)
                    traite_exception(ex, False)
                End Try
                mess("Uploads terminés. L'EXE et le ZIP ont été transférés sur localhost et sur le site Ressource avec son indicateur de version." + veractuel.Text)
                Lire_VersionDistante() 'qui rafraichit les infos distantes, puis efface le fichier version local
                'la destruction du ZIP se fait juste avant la demande de création du Zip.
            End If

        Else 'C'est un download zip complet : l'utilisateur qui veut faire un téléchargement du Zip complet

            MsgBox("Quand on vous en fera la demande, choisir enregistrer... et comme dossier d'enregistrement le dossier : " + Chr(10) + CheminExe)
            Try
                Shell(Navigateur + " " + ZIPDistantHTTP, AppWinStyle.Hide)
                mess("Aprés le téléchargement, quitter votre application, puis décompresser le ZIP (Clic droit-extraire ici..) qui est dans : " + Chr(10) + CheminExe + Chr(10) + "  en autorisant les remplacements de fichiers..." + Chr(10) + "Vos dossiers et fichiers personnels seront conservés.")
            Catch ex As Exception
                traite_exception(ex, False)
            End Try
        End If
        Infos.Cursor = Cursors.Arrow
    End Sub

    'courriel
    Private Sub courriel_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles courriel.LinkClicked
        Try
            Shell(Navigateur & " " & courriel.Tag, AppWinStyle.Hide)
        Catch ex As Exception
            mess(ex.Message)
        End Try
    End Sub

Conclusion :


Cela peut vous être utile, pour des extraits de code, ou pour intégrer en About dans une de vos application. (il suffit de définir dans votre application :Nom du produit et définir vos adresses Http et Ftp.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.