Jump to content
Xtreme .Net Talk

Recommended Posts

Posted

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:

 

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.xtremedotnettalk.com/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

  • 3 years later...
Posted

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

 

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


Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...