Oppure

Loading
08/06/12 16:40
Reloader90
salve vorrei creare un updater abbastanza semplice...
deve confrontare la versione e se c'è nè una nuova scarica i files della nuova versione... questo updater dovrà anche avere una progress bar...

aiuto! :hail:
aaa
08/06/12 19:50
GN
Uhm, secondo me devi costruire un piccolissimo servizio web a cui appoggiarti. Ti basta fare un file accessibile via http che contenga (o stampi, se preferisci farlo dinamicamente) il numero dell'ultima versione. Dal tuo programma, quando devi fare gli aggiornamenti fai una webrequest a questo file (con uno di questi metodi totemslair.org/guide/…) e confronti il numero con My.Application.Info.Version; se è maggiore, scarichi il file con uno degli stessi spiegati nel link di prima.
aaa
09/06/12 7:07
Reloader90
uhm... ma io non ho solo un file... ho più files in delle cartelle...
la soluzione potrebbe essere scaricare uno zip e farlo decomprimere ma non sò come si fà... oppure far leggere un files.txt che contiene i file da scaricare....

ekko ho fatto una cosa del genere ma dovrei dirgli che se nn esiste la cartella locale che corrisponde a quella remota la deve creare (cm faccio?)
Imports System.IO

Public Class Form1

    Public apdir As String
    Public downloadfiles As List(Of String) = New List(Of String)
    Public curver As String

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        apdir = System.Environment.CurrentDirectory
        WebClient1.DownloadFileAsync(New Uri("http://aldrigo.sourceforge.net/aldrigoscraft/version.txt"), apdir & "\version-new.txt")
    End Sub

    'scarica la versione
    Private Sub WebClient1_DownloadFileCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles WebClient1.DownloadFileCompleted
        Dim Read As String = My.Computer.FileSystem.ReadAllText(apdir & "\version.txt")
        Dim rnew As String = My.Computer.FileSystem.ReadAllText(apdir & "\version-new.txt")

        If Not Read = rnew Then
            'If it reads blank, then the internet connection is faulty.
            If Read = "" Then
                MsgBox("ERROR: Please check your internet connection or try later.", MsgBoxStyle.Critical, "ERROR")
            Else
                Label2.Text = "Update ready to download!"
                Button1.Enabled = True
                Label2.ForeColor = Color.Green
            End If
        Else
            Button1.Enabled = False
            Button1.Text = "Up to date."
            Label2.Text = "Up to date."
            Label2.ForeColor = Color.Green
        End If
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        MsgBox("Downloading new update!")
        WebClient2.DownloadFileAsync(New Uri("http://aldrigo.sourceforge.net/aldrigoscraft/link.txt"), apdir & "\link.txt")
    End Sub

    'scarica i links
    Private Sub WebClient2_DownloadFileCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles WebClient2.DownloadFileCompleted
        Dim sr As StreamReader = New StreamReader(apdir & "\link.txt")
        Dim line As String
        ' Read and display the lines from the file until the end 
        ' of the file is reached.
        Do
            line = sr.ReadLine()
            'li aggiungo alla lista delle cose da scaricare
            If Not line Is Nothing Then downloadfiles.Add(New String(line))
        Loop Until line Is Nothing
        sr.Close()

        Dim i As Integer
        For i = 0 To downloadfiles.Count - 1
            MsgBox(downloadfiles.Item(i))
        Next

        'Button1.Enabled = False
        'Button1.Text = "Update already downloaded."
        'Label2.Text = "Update already downloaded."
        'Label2.ForeColor = Color.Red
    End Sub
End Class
Ultima modifica effettuata da Reloader90 09/06/12 9:55
aaa
09/06/12 19:37
GN
Uhm, se non hai dati da conservare la cosa più semplice è sovrascrivere tutto. Per estrarre lo zip puoi usare librerie come questa dotnetzip.codeplex.com.
aaa
09/06/12 20:41
Reloader90
forse è meglio fare file per file e creare le cartelle in locale se nn esistono... ci provo...
cmq secondo te è valido quello che ho scritto sopra? per ora scarica e confronta la versione e legge le cose da scaricare...
Ultima modifica effettuata da Reloader90 09/06/12 20:42
aaa
10/06/12 19:33
GN
Postato originariamente da Reloader90:

forse è meglio fare file per file e creare le cartelle in locale se nn esistono... ci provo...
cmq secondo te è valido quello che ho scritto sopra? per ora scarica e confronta la versione e legge le cose da scaricare...

Secondo me anche se non vuoi sovrascrivere tutto uno zip è più comodo, se poi lo fai autoestraente basta lanciarlo con Process.Start(percorso) senza dover usare nessuna libreria, comunque se vuoi fare diversamente l'idea del file con i link mi sembra la migliore (anche perchè non ne ho altre, lol)
aaa
11/06/12 8:32
Reloader90
mah in efetti... forse lo zip che si estrae da solo e sovrascrive è più semplice no?
ehm come faccio uno zip auto estraente?
aaa
11/06/12 10:01
ampeg
Postato originariamente da Reloader90:

mah in efetti... forse lo zip che si estrae da solo e sovrascrive è più semplice no?
ehm come faccio uno zip auto estraente?



windows.digital.it/…

poi per l'estrazione senza visualizzare alcuna finestra di dialogo lanci l'eseguibile autoestraente con la command-line seguente

nomefile.exe /t: percorso_di_destinazione

altri parametri della riga di comando li trovi qua

support.microsoft.com/kb/…


aaa