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.
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.