Update voor een programma

Status
Niet open voor verdere reacties.
Ik weet je huidige code niet (niet vanaf het begin meegedaan met 't topic ;)), maar als je wilt kijken of internet het wel doet moet je deze er inderdaad in zetten. :)
 
Laatst bewerkt door een moderator:
Nee, dat komt als eerste, en daar heb je geen Try Catch blok voor nodig, gewoon een simpel If blok is alles wat je nodig hebt.

Voor het verbinding laten maken met een online version bestand moet je wel een Try Catch gebruiken, dus de uiteindelijke code (in pseudocode) komt er zo ongeveer uit te zien:

Code:
If netwerk beschikbaar then
Try
'Hier je huidige code met het DownloadString gebeuren
Catch ex As Exception
MessageBox.Show(Er is een fout opgetreden bla bla de foutmelding is: ex.message, msgboxbtns.ok msgboxicon.error)
End Try
Else als netwerk niet beschikbaar is
messagebox met uitleg
End If

Hopelijk heb je idee hoe je het verder moet programmeren.
 
Laatst bewerkt:
Sorry, ik heb me niet verdiept in de code.

Luister maar naar The Mighty Atom. ;)

@TheMigthyAtom: Heb jij deze code geschreven? Die Luuknl gebruikt, bedoel ik.
 
Nee, daar kwam CaptainBri mee.

Het enige wat van mij is is die Update functie in die dll in dat demo programmatje dat ik een paar dagen heb gemaakt.
Zie hier: http://www.helpmij.nl/forum/showthr...en-programma?p=3994111&viewfull=1#post3994111

Probeer het gerust uit en volg de instructies. Ik ben eigenlijk wel benieuwd wat jij hiervan vind, ik moet zeggen dat ik er best trots op ben.
Ik heb die hele update functie voor eigen gebruik geschreven om te gebruiken in al mn projecten en ik was helemaal niet van plan om het te delen met andere gebruikers, maar misschien moet ik dat toch maar eens doen. Misschien wil je er ook een handleiding voor schrijven? Ik zal je dan wel per email of via instantmessaging (MSN of Skype) precies uitleggen hoe je het importeert en gebruikt in projecten. Het is echt heel simpel. :)
 
De code komt er met die catch enzo dus zo uit te zien:
Code:
Imports System.Net

Public Class Form1

    Dim UpdateAvailable As Boolean
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Button1.Enabled = False
        Label1.Text = "Bezig met controleren op nieuwe versie, een ogenblik geduld..."
        pgbUpdateCheck.Visible = True
        bgwUpdateChecker.RunWorkerAsync()
        LinkLabel1.Visible = False


    End Sub

    Private Sub bgwUpdateChecker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgwUpdateChecker.DoWork
        Try
            If My.Computer.Network.IsAvailable Then
                If New WebClient().DownloadString("http://luuknl.woelmuis.nl/Versions/Programma%20Updater/Version.txt") > My.Application.Info.Version.ToString.Replace(".", Nothing) Then
                    UpdateAvailable = True
                Else
                    UpdateAvailable = False
                End If
            End If
        Catch ex As Exception
            MsgBox("Er kan geen verbinding worden gemaakt. Mogelijk is er geen internet verbinding. Probeer het later opnieuw.", MsgBoxStyle.Critical, "Geen internetverbinding gevonden...")
        End Try
    End Sub

    Private Sub bgwUpdateChecker_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgwUpdateChecker.RunWorkerCompleted

        Button1.Enabled = True
        pgbUpdateCheck.Visible = False
        If UpdateAvailable = True Then
            Label1.Text = "Er is een update."
            LinkLabel1.Visible = True
        Else
            Label1.Text = "Er is geen update."
        End If

    End Sub

    Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        Process.Start("http://luuknl.webs.com/programmaupdater.htm")
    End Sub
End Class
Wat betekent die eerste regel? Imports System.Net Die kan ik namelijk niet weglaten, dus wat doet die?
 
Laatst bewerkt:
Er gaat daar wat mis met je post. Fix dat eerst effe.

En de code onder bgwUpdateChecker_DoWork moet er zo uitzien:

Code:
        If My.Computer.Network.IsAvailable Then
            Try
                If New WebClient().DownloadString("http://luuknl.woelmuis.nl/Versions/Programma%20Updater/Version.txt") >
                    My.Application.Info.Version.ToString.Replace(".", Nothing) Then
                    UpdateAvailable = True
                Else
                    UpdateAvailable = False
                End If
            Catch ex As Exception
                MessageBox.Show("Er is een fout opgetreden tijdens het controleren op een update:" & ControlChars.NewLine & ControlChars.NewLine &
                                ex.Message & ControlChars.NewLine & ControlChars.NewLine, "Geen internetverbinding...", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        Else
            MessageBox.Show("Er kan geen verbinding worden gemaakt. Mogelijk is er geen internet verbinding. Probeer het later opnieuw.",
                               "Geen internetverbinding...", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
 
Ik zal 'm eens testen (morgen of vanavond). Ik wil er ook best een handleiding voor schrijven. Alleen misschien wordt dat niet op prijs gesteld (Ik heb al een handleiding over updates geschreven).

Je kunt mij op dit adres mailen: joz.helpmij@gmail.com :)
 
Laatst bewerkt door een moderator:
Er zit nog een foutje in. As ik namelijk mijn internet er even uit haal (adapter eruit) en dan het programma probeer. Dan geeft hij de foutmelding van dat de website niet beschikbaar is. Maar als het goed is gaat hij helemaal niet zoeken naar updates, waneer My.Computer.Network.IsAvailbale false is... Toch doet hij dat. (Kijk ook ff onder de code nog!!)
Code:
If My.Computer.Network.IsAvailable Then
            Try
                If New WebClient().DownloadString("http://luuknl.woelmuis.nl/Programma%20Bestanden/Programma%20Updater/Version.txt") >
                    My.Application.Info.Version.ToString.Replace(".", Nothing) Then
                    UpdateAvailable = True
                Else
                    UpdateAvailable = False
                End If
            Catch ex As Exception
                MsgBox("Er is een fout opgetreden tijdens het controleren op een update. Mogelijk is de website (tijdelijk) niet beschikbaar. Probeer het later opnieuw.", MsgBoxStyle.Exclamation, "Geen internetverbinding...")
            End Try
        Else
            MsgBox("Er kan geen verbinding worden gemaakt. Mogelijk is er geen internet verbinding. Probeer het later opnieuw.", MsgBoxStyle.Critical, "Geen internetverbinding...")
        End If

Kan het niet zo?? (Rode tekst is aangepast)
Code:
If My.Computer.Network.IsAvailable Then
            Try
                If New WebClient().DownloadString("http://luuknl.woelmuis.nl/Programma%20Bestanden/Programma%20Updater/Version.txt") >
                    My.Application.Info.Version.ToString.Replace(".", Nothing) Then
                    UpdateAvailable = True
                Else
                    UpdateAvailable = False
                End If
            Catch ex As Exception
               [COLOR="red"] End Try
        Else
            MsgBox("Er kan geen verbinding worden gemaakt. Mogelijk is er geen internet verbinding, of is de website tijdelijk niet beschikbaar. Probeer het later opnieuw.", MsgBoxStyle.Critical, "Geen internetverbinding...")
        End If[/COLOR]

Mijn eigen code blijkt wel naar wens nog steeds te werken. Dus gebruik ik die lekker :)
 
Laatst bewerkt:
Als er geen internet verbinding is heeft ook geen zin om die code nog verder uit te voeren.
Persoonlijk zou ik gewoon die eerste code gebruiken, niet jouw aangepaste code met rode tekst.

Wat betekent die eerste regel? Imports System.Net Die kan ik namelijk niet weglaten, dus wat doet die, want die staat niet in mijn

Doe nou eens niet zo slordig en fix je post nou eens. Je typt daar een halve zin.
 
Code:
Imports System.Net
Het importeert gewoon een Namespace zodat je functies/objecten etc. kunt gebruiken zonder de desbetreffende Namespace ervoor te zetten.

Dus dit:

Code:
Imports System.IO
Public Class Form
Public Function Test()
Dim a As New StreamWriter("bla")
End Function
End Class
I.P.V. dit:
Code:
Public Class Form
Public Function Test()
Dim a As New System.IO.StreamWriter("bla")
End Function
End Class
Meer informatie: http://visualbasic.about.com/od/quicktips/qt/imports.htm

Als je voortaan eerst je post in jezelf leest, dan kun je horen of het goed te begrijpen is of niet. Dat maakt het voor anderen ook makkelijker :)


Edit:

Mighty Atom: Ik heb 'm getest! Het ziet er zeer goed en professioneel uit! :) Ik heb alleen een paar vragen:

Wat moet er staan in NewFiles?
Wat moet er staan in ManualDownloadUrl? Een .ZIP?

Kun je dit via mijn mail beantwoorden? Anders gaan we topic kapen ;).


Is het eigenlijke probleem trouwens opgelost, luuknl?
 
Laatst bewerkt:
OK, dan stel ik voor dat als je een nieuw probleem hebt een nieuw topic opent.

Want anders wordt deze te groot ;)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan