Updating... How to make sure it is a newer version

whosyodaddy

Well-known member
Joined
Jun 23, 2003
Messages
83
Ok, I know how to download a update with a progress bar from a past post, although when it downloads a file, It downloads like a .dat or .ini to update your current program. Although how (what do you add) to make it know if it is a newer version or not. So If you click update, and there is no newer version it says "no new version" or something like that. Here is my code:

Code:
Imports System
Imports System.Net
Imports System.IO

Public Class Form1

    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        This call is required by the Windows Form Designer.
        InitializeComponent()

        Add any initialization after the InitializeComponent() call

    End Sub

    Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    NOTE: The following procedure is required by the Windows Form Designer
    It can be modified using the Windows Form Designer.  
    Do not modify it using the code editor.
    Friend WithEvents pbrPercent As System.Windows.Forms.ProgressBar
    Friend WithEvents lblInfo As System.Windows.Forms.Label
    Friend WithEvents filesizeLabel As System.Windows.Forms.Label
    Friend WithEvents Timer As System.Windows.Forms.Timer
    Friend WithEvents Button1 As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container()
        Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
        Me.pbrPercent = New System.Windows.Forms.ProgressBar()
        Me.lblInfo = New System.Windows.Forms.Label()
        Me.filesizeLabel = New System.Windows.Forms.Label()
        Me.Timer = New System.Windows.Forms.Timer(Me.components)
        Me.Button1 = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        
        pbrPercent
        
        Me.pbrPercent.Location = New System.Drawing.Point(8, 72)
        Me.pbrPercent.Name = "pbrPercent"
        Me.pbrPercent.Size = New System.Drawing.Size(320, 20)
        Me.pbrPercent.TabIndex = 0
        
        lblInfo
        
        Me.lblInfo.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.lblInfo.Location = New System.Drawing.Point(16, 16)
        Me.lblInfo.Name = "lblInfo"
        Me.lblInfo.Size = New System.Drawing.Size(176, 16)
        Me.lblInfo.TabIndex = 3
        Me.lblInfo.Text = "Demo downloader"
        
        filesizeLabel
        
        Me.filesizeLabel.Font = New System.Drawing.Font("Arial", 6.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.filesizeLabel.ForeColor = System.Drawing.SystemColors.Highlight
        Me.filesizeLabel.Location = New System.Drawing.Point(16, 48)
        Me.filesizeLabel.Name = "filesizeLabel"
        Me.filesizeLabel.Size = New System.Drawing.Size(176, 16)
        Me.filesizeLabel.TabIndex = 4
        
        Timer
        
        Me.Timer.Interval = 1000
        
        Button1
        
        Me.Button1.Location = New System.Drawing.Point(200, 8)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(128, 56)
        Me.Button1.TabIndex = 6
        Me.Button1.Text = "Download!"
        
        Form1
        
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(338, 103)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button1, Me.filesizeLabel, Me.lblInfo, Me.pbrPercent})
        Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
        Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
        Me.MaximizeBox = False
        Me.MinimizeBox = False
        Me.Name = "Form1"
        Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
        Me.TransparencyKey = System.Drawing.Color.Firebrick
        Me.ResumeLayout(False)

    End Sub

#End Region

    Function DownloadFile(ByVal sURL As String, ByVal pProgress As ProgressBar, ByVal Filename As String) As Boolean
        Dim wRemote As System.Net.HttpWebRequest
        Dim URLReq As HttpWebRequest
        Dim URLRes As HttpWebResponse
        Dim bBuffer(999) As Byte
        Dim iBytesRead As Integer
        Try
             Reset the progress bar
            pProgress.Value = 0
             Start the request for the file
            URLReq = HttpWebRequest.Create(sURL & Filename)
             Get a response from the Request the response will hold header
             information from the Request such as filesize
            URLRes = URLReq.GetResponse
             Open the filestream to write back to, open in create mode so even
             if the file exist write over it.
            Dim FileStreamer As New FileStream(Application.StartupPath & "\" & Filename, FileMode.Create)
             Start getting the data from the response buffer
            Dim IncomingData As Stream = URLReq.GetResponse.GetResponseStream
             Set the progress bars MAXIMUM to Content length in bytes
            pProgress.Maximum = URLRes.ContentLength
             Start loop
             Loop until there is nothing in the receive buffer
            Do
                 Transfer all the current bytes from the respose buffer
                 into a byte array and hold the byte count received in
                 iBytesRead limit to a maximum 1000 bytes
                iBytesRead = IncomingData.Read(bBuffer, 0, 1000)
                 Write all the bytes in the Byte array into the opened
                 filestream
                FileStreamer.Write(bBuffer, 0, iBytesRead)
                 Code to change the value of the progress bar.
                If pProgress.Value + iBytesRead <= pProgress.Maximum Then
                    pProgress.Value += iBytesRead
                Else
                    pProgress.Value = pProgress.Maximum
                End If
                 Show the current count of KB downloaded KB = BYTES / 1024
                filesizeLabel.Text = "Downloading " & CInt(pProgress.Value / 1024) & "kb of " & CInt(URLRes.ContentLength / 1024) & "kb"
                 Let windows process any events
                Application.DoEvents()
                 Loop if not all bytes have been downloaded
            Loop Until iBytesRead = 0
             If for some strange reason the progress bar is not at its maximum
             value, make it. Can happen with small downloads!
            pProgress.Value = pProgress.Maximum
             Download done
             Close the Response and the File
            IncomingData.Close()
            FileStreamer.Close()
             if successful return true to show this
            Return True
        Catch
             if NOT successful return false to show this and show message 
             box with the error
            MsgBox(Err.Description)
            Return False
        End Try
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim DownloadURL As String = "http://www.computerhelp.forum/images/"
        If DownloadFile(DownloadURL, pbrPercent, "logo.gif") Then MsgBox("FILE DOWNLOADED!!" & vbCrLf & "Check the \Bin folder to see the download")
    End Sub

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

    End Sub
End Class
 
This is what I do. This is a direct copy from my update program.

[VB]
Dim LocalInformation As FileVersionInfo = FileVersionInfo.GetVersionInfo(LOC_PATH & "CSAKanban.exe")
Dim UpdateInformation As FileVersionInfo = FileVersionInfo.GetVersionInfo(UPD_PATH & "CSAKanban.exe")

If LocalInformation.FileVersion = UpdateInformation.FileVersion Then
If local file version is equal to the update file version the program exits.
lblInfo.Text = "Latest version installed..."
lblInfo.Refresh()
System.Threading.Thread.Sleep(2000)
Application.Exit()
ElseIf LocalInformation.FileVersion < UpdateInformation.FileVersion Then
Sets variable and display information.
NEW_VER = UpdateInformation.FileVersion
lblInfo.Text = "New version found..."
lblInfo.Refresh()
System.Threading.Thread.Sleep(1000)

Creates new instance of the Update form.
Dim frmUpdate As New frmUpdate

Shows the update form.
frmUpdate.Show()
Me.Hide()
Else
No updates available and exits.
lblInfo.Text = "No updates available..."
lblInfo.Refresh()
System.Threading.Thread.Sleep(1000)
Application.Exit()
End If


[/VB]
 
Back
Top