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