[Source] Semplice Update

« Older   Newer »
  Share  
d0ct0r
CAT_IMG Posted on 13/4/2011, 13:25     +1   -1




Linguaggio: VB.net

Tempo fa, feci un semplice update\autopatcher per un programmino stupido (BatchEditor), ma ora, siccome ho formattato il pc sono andati persi i progetti, però per fortuna, postai il source di questo update su altri forum, giusto per dare un spunto\aiutino a dei neofiti.

Come già detto, l'update è molto semplice perché lo feci per un stupido programmino XD, quindi non aspettatevi chissà che roba.

Ah, il source non è commentato perché si capisce fin troppo bene e i link che ci sono nel source sono dei miei link, non sono no dei forum ne altro, semplicemente ho hostato i file su altervista.

Questo codice ve lo consiglio di inserire no nell'update, ma nel programma princiapale cosi, appena si avvia il programma già scarica\crea la cartella.

CODICE
Imports System.Net
Imports System.IO

Public Class Form1

Public WithEvents downloadVecchio As New WebClient
Public WithEvents downloadOldVersioneSeNonEsiste As New WebClient

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Try


           System.IO.Directory.CreateDirectory("temp")

           If (Not System.IO.File.Exists("versione.txt")) Then
               downloadOldVersioneSeNonEsiste.DownloadFileAsync(New Uri("http://kiragame.altervista.org/VecchiaVersione.txt"), "versione.txt")
           End If


           If (Directory.Exists("temp")) Then
               downloadVecchio.DownloadFileAsync(New Uri("http://kiragame.altervista.org/NuovaVersione.txt"), "temp\versione.txt")
           End If

           downloadOldVersioneSeNonEsiste.Dispose()
       Catch ex As Exception

       End Try
End Sub


Ora passiamo al source dell'update.

CODICE
Imports System.Net
Imports System.IO

Public Class Update

   Public WithEvents download As New WebClient
 

   Private Sub Update_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub

   Private Sub download_DownloadProgressChanged(ByVal sender As Object, ByVal e As Net.DownloadProgressChangedEventArgs) Handles download.DownloadProgressChanged

       ProgressBar1.Value = e.ProgressPercentage

   End Sub

   Private Sub PrgComplete(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles download.DownloadFileCompleted

       Dim downloadNewVersione As New WebClient

       MessageBox.Show("Download completato. Chiudere l'applicazione prima di installare gli aggiornamenti.", "Download Completato", MessageBoxButtons.OK, MessageBoxIcon.Information)
       downloadNewVersione.DownloadFileAsync(New Uri("http://kiragame.altervista.org/NuovaVersione.txt"), "versione.txt")
       System.Diagnostics.Process.Start("setup.exe")
       ProgressBar1.Value = 0

   End Sub

   Private Sub EsciToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
       Application.Exit()
   End Sub

   Private Sub UpdateToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UpdateToolStripMenuItem.Click


       Dim oldVersione As New StreamReader("versione.txt")
       Dim newVersione As New StreamReader("temp\versione.txt")

       Dim leggiOld As String
       Dim leggiNew As String

       Try

           leggiOld = oldVersione.ReadLine()
           leggiNew = newVersione.ReadLine()

           If (Not leggiNew.Equals(leggiOld)) Then

               If (MessageBox.Show("È disponibile una nuova versione del client, desideri scaricarla ?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Information)) = MsgBoxResult.Yes Then
                   download.DownloadFileAsync(New Uri("http://kiragame.altervista.org/setup.exe"), "setup.exe")
               End If

           Else

               MessageBox.Show("Non ci sono aggiornamenti", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information)
               download.CancelAsync()
           
           End If

       Catch ex As Exception

       End Try

       oldVersione.Dispose()
       newVersione.Dispose()

   End Sub

End Class


Funzioni (sempre se me li ricordo bene asd):

ProgressBar1 segue il download del programma
Se non esistono: Scarica il file: "versione.txt" e crea la cartella "temp"
Poi li confronta e se sono diversi, avverte l'utente che ce un nuovo aggiornamento del programma
Appena finisce il download, viene liberata la memoria di due variabili cosi facendo, il programma copia la "versione.txt" che ce nella cartella "temp" nella cartella principale del programma, praticamente aggiorna la vecchia "versione.txt" con la nuova, cosi il programma non troverà più nuovi aggiornamenti da scaricare.

Fine. Se mi sono dimenticato qualcosa, sorry, comunque questo update scarica il file: setup.exe e no degli zip (anche se può fare tutto, ma scaricando degli zip dovete implementare anche la funzione che vi dirò tra poco), altrimenti dovevo aggiungere anche la funzione di estrazione dei zip asd.

Anche se non servirà a nessuno, spero che vi possa essere di aiutinoino XD.

[edit]

Scusatemi, ho sbagliato sezione !!!!! l'update è scritto in vb.net, sorry.

Edited by d0ct0r - 13/4/2011, 14:43
 
Top
Doch88
CAT_IMG Posted on 13/4/2011, 14:08     +1   -1




CITAZIONE
Scusatemi, ho sbagliato sezione !!!!! l'update è scritto in vb.net, sorry.

Sposto.
 
Top
themetaldrummer
CAT_IMG Posted on 13/4/2011, 15:40     +1   -1




:/ non mi sembra un linguaggio molto "compatto", il c standard ha solo 32 parole chiave lol, ma qui mi sembra che ce ne siano mooolte di più....
 
Top
d0ct0r
CAT_IMG Posted on 13/4/2011, 16:01     +1   -1




Mha.... il visual basic.net è meglio lasciarlo dove sta XD se si conosce linguaggi come: C, C++ et simili.

Questo update lo feci anche perché mi interessava apprendere meglio come lavorare sui file, anche se è stato molto semplice.

 
Top
TheJokers
CAT_IMG Posted on 3/10/2011, 22:28     +1   -1




si il vb.net è una cagata non serve ha niente meglio c,c++,python
 
Top
I.Ren
CAT_IMG Posted on 4/10/2011, 15:01     +1   -1




ora non esageriamo, neanche a me piace ma non per questo non vuol dire che non serve a niente, ogni linguaggio può sempre servire.
 
Top
»Master
CAT_IMG Posted on 4/10/2011, 17:40     +1   -1




bhe a questo punto puoi anche mandare a cagare autoit eh...
 
Top
I.Ren
CAT_IMG Posted on 4/10/2011, 18:04     +1   -1




ma perchè? anche quello è molto utile in alcune situazioni!
 
Top
»Master
CAT_IMG Posted on 4/10/2011, 18:06     +1   -1




si appunto per quello xD
lui ha detto di mollare vb.net perché non è forte come il C/C++, ma se ragiona così può mollare anche autoit xd
io ritengo autoit utilissimo minchia, non sono admin di questo forum per niente xD in relazione al vb.net non lo conosco... è OOP?
 
Top
I.Ren
CAT_IMG Posted on 4/10/2011, 18:19     +1   -1




non lo conosco neanche io xD ma non mi pare da quel che mi ricordo da alcune source visti ai tempi che furono

ps: pensavo ti riferissi a me prima xD
 
Top
TheJokers
CAT_IMG Posted on 5/10/2011, 12:39     +1   -1




non capite cosa volevo dire è utile come linguaggio fino ad cun certo punto pero poi puoi fare cose piu utili con altri linguaggi
Master autoit e meglio del vb.net sotto alcuni aspetti funzionali
 
Top
I.Ren
CAT_IMG Posted on 5/10/2011, 13:31     +1   -1




ma allora grazie alla minchia, ogni linguaggio ha il suo punto forte, probabilmente una gestore di database lo crei molto prima in vb.net che non in C (hai voglia a capire le liste in c)
 
Top
Doch88
CAT_IMG Posted on 5/10/2011, 14:28     +1   -1




Si, il vb.net è OOP, io sono obbligato a studiarlo per scuola, non abbiamo ancora fatto niente ma non mi pare male.
 
Top
-AsCiA-
CAT_IMG Posted on 5/10/2011, 21:36     +1   -1




sono del parere che ogni linguaggio abbia i suoi pro ed i suoi contro,penso che nessun linguaggio sia da considerarsi inutile
 
Top
TheJokers
CAT_IMG Posted on 6/10/2011, 13:27     +1   -1




si il vb.net non è male è ottimo se devi creare qualcosa con GUI.
 
Top
16 replies since 13/4/2011, 13:25   321 views
  Share