Bestand downloaden via vb programma (ftp server) plaatsen in bureablad lukt niet

Status
Niet open voor verdere reacties.

codGmer

Gebruiker
Lid geworden
8 mei 2010
Berichten
649
Hallo,

Ik heb een programma gemaakt en dat doet een bestand downloaden vanaf een ftp server, alleen als ik de pad wil dan moet ik de username weten van de client alleen die wil automatisch laten instellen.

ik heb al dit geprobeert:

c:\Users\%username%\Desktop\programma.exe

alleen dan maakt hij de map %username% in de users map maar ik wil dat het op het bureaublad wordt geplaatst. beetje domme vraag want ik wist het een tijd geleden:P

Alvast bedankt:)
 
Laatst bewerkt:
Code:
client.Connect(HostName)
            client.Login(Username, Password)
            client.GetFiles("ftp://cviewer.uphero.com/public_html/cviewer/CViewer_2.exe", My.Computer.FileSystem.SpecialDirectories.Desktop &"\"CViewer_2.exe, FtpBatchTransferOptions.Recursive, FtpActionOnExistingFiles.OverwriteAll)
            client.Disconnect()

Sorry dat ik zo laat antwoord : Fout.JPG :rolleyes:.
 
sorry maar het werkt niet, het word blauw onderstreept
 
bedankt er staat nu niet meer een (syntax error).

maar wel een error als ik het programma start staat er 'er is een nieuwe update beschikbaar'
en dan staat er dit: error

code:
Code:
client.GetFiles("ftp://cviewer.uphero.com/public_html/cviewer/CViewer_2.exe", My.Computer.FileSystem.SpecialDirectories.Desktop & "\CViewer_2.exe", FtpBatchTransferOptions.Recursive, FtpActionOnExistingFiles.OverwriteAll)
                    client.Disconnect()
 
probeer eens client.GetFile i.p.v. client.GetFiles
 
Antwoord op error:
De error geeft aan dat op de server niet zo'n bestand bestaat. Let even heel goed op hoofdletters enzo.


Tip:
En nog iets. Het valt me op dat je dit kiest
Code:
CViewer_2.exe
Ik zou dat veranderen voor dit:
Code:
"CViewer_" &My.Application.Info.Version.Major +1 &".exe"

Want als je dan versie 2.0 (via deze updatecode) hebt gedownload, en er komt een versie 3.0 uit die hij probeert te downloaden, dan krijg je problemen ;).
 
Kan het kloppen dat dit goed is?

Code:
client.GetFile("CViewer_" & My.Application.Info.Version.Major + 1 & ".exe", My.Computer.FileSystem.SpecialDirectories.Desktop & "\CViewer_2.exe", FtpBatchTransferOptions.Recursive, FtpActionOnExistingFiles.OverwriteAll)

moet ik de file op de ftp server dan gewoon _1 laten heten als er geen update is?
 
Hoeft niet, als er geen update is hoef je er niets op te zetten. Als er wel een update is, noem hem dan 'CViewer_2.exe' of 'CViewer_3.exe' dat ligt er aan voor welke versie deze update is. Mensen met versie 1 krijgen update 'CViewer_2.exe' te zien en mensen met versie 2 krijgen 'CViewer_3.exe' te zien, enz.

Snap je?

PS. Werkt het? Of heb je nog steeds die foutmelding?
 
de error komt niet meer.
het lijkt erop dat de getfiles helemaal niet werkt want er staat steeds er is geen nieuwe update beschikbaar ook als ik het bestand naar Cviewer_2.exe rename op de ftp server:(

ik denk dat mijn code fout is:

Code:
 If item.ToString = "CViewer_" & My.Application.Info.Version.Major + 1 & ".exe" Then
                    MsgBox("Er is een nieuwe update beschikbaar")
                    client.GetFile("CViewer_" & My.Application.Info.Version.Major + 1 & ".exe", My.Computer.FileSystem.SpecialDirectories.Desktop & "\CViewer_2.exe", FtpBatchTransferOptions.Recursive, FtpActionOnExistingFiles.OverwriteAll)

dat hij nu de source niet vindt op de ftp server (dat ik het adres nog erin moet zetten)
 
het lijkt erop dat de getfiles helemaal niet werkt want er staat steeds er is geen nieuwe update beschikbaar ook als ik het bestand naar Cviewer_2.exe rename op de ftp server

De GetFile-Functie werkt voor mij anders wel ;).

als ik het bestand naar Cviewer_2.exe rename
Volgens mij maak je hier de fout: In de code staat namelijk: CViewer i.p.v. Cviewer, pas dit even aan. (hoofdlettergevoelig!!)


Snap je de code trouwens wel? Volgens mij niet, want je hebt dit:

My.Computer.FileSystem.SpecialDirectories.Desktop & "\CViewer_2.exe"

Als je logisch nadenkt, dan weet je dat-ie hem dan ALTIJD als 'CViewer_2.exe' opslaat ongeacht het versienummer... Dus het moet dit zijn:

Code:
"CViewer_" & My.Application.Info.Version.Major + 1 & ".exe"

Begrijp je??? Als je het namelijk niet begrijpt dan komen we niet veel verder :eek: (Het kan natuurlijk ook zo zijn dat ik het vaag uitleg en dat het dus aan mij ligt :P) Als het nog steeds ingewikkeld is, zal ik wel even een code voorzien van commentaar plaatsen, misschien is het dan duidelijker ;).
 
Laatst bewerkt:
even de hele code :

Code:
Imports Rebex.Net
Public Class Hviewer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim client As New Ftp
        Try
            client.Connect("cviewer.uphero.com")
            client.Login("a6162961", "hierwachtwoord")
            client.ChangeDirectory("/public_html/cviewer/")
            Dim list As FtpList = client.GetList()
            Dim item As FtpItem
            For Each item In list

                If item.ToString = "Cviewer_" & My.Application.Info.Version.Major + 1 & ".exe" Then
                    MsgBox("Er is een nieuwe update beschikbaar")
                    client.GetFile("Cviewer_" & My.Application.Info.Version.Major + 1 & ".exe", My.Computer.FileSystem.SpecialDirectories.Desktop & "\CViewer_" & My.Application.Info.Version.Major + 1 & ".exe", FtpBatchTransferOptions.Recursive, FtpActionOnExistingFiles.OverwriteAll)
                    MsgBox("De update is gedownload naar het bureaublad")
                Else
                    MsgBox("Er is op dit moment geen nieuwe update beschikbaar")
                End If
            Next item
        Catch ex As Exception
            client.Disconnect()
            MsgBox("Er is een fout opgetreden: " & ex.Message, 16 + 4096, "error")
        Finally
            client.Disconnect()
        End Try
    End Sub

kunt u comments plaatsen waar ik het fout heb?
ik heb nog geen ervaring met visual basic, dit is pas mijn eerste programma..;)
voorderest heb ik wel geprogrammeert voor games (Call of duty modern warfare 2) mods maken in C.

hij maakt nu alleen een .exe aan genaamd Cviewer.exe want als ik dubbelklik erop dan komt er te staan:
de versie van dit bestand is niet compatible met de windows versie. dus het is een leeg bestand.
 
Laatst bewerkt:
Code:
Dim client As New Ftp
        Try
            'maak verbinding
            client.Connect("cviewer.uphero.com")
            client.Login("a6162961", "hierwachtwoord")
            client.ChangeDirectory("/public_html/cviewer/")

            'verkrijg lijst met items
            Dim list As FtpList = client.GetList()
            Dim item As FtpItem

            'declareer aant (dat is om te bepalen of het de laatste is)
            Dim aant As Integer = 1

            'gaat lijst af
            For Each item In list

                'als het de juiste update is, geef dan een prompt
                If item.ToString = "CViewer_" & My.Application.Info.Version.Major + 1 & ".exe" Then
                    'prompt
                    Dim a = MsgBox("Er is een nieuwe update beschikbaar. Wilt u deze downloaden?", 64 + 4096 + 4, "titel")
                    If a = vbYes Then
                        'download naar bureaublad
                        client.GetFile("CViewer_" & My.Application.Info.Version.Major + 1 & ".exe", My.Computer.FileSystem.SpecialDirectories.Desktop & "\CViewer_" & My.Application.Info.Version.Major + 1 & ".exe")
                        MsgBox("De update is gedownload naar het bureaublad.", 64 + 4096, "titel")
                    End If
                    Exit For
                Else
                    'als het de laatste is -> prompt
                    If aant = list.Count Then
                        MsgBox("Er zijn geen updates beschikbaar.", 64 + 4096, "Titel")
                    Else
                        aant += 1
                    End If
                End If
            Next item
        Catch ex As Exception
            client.Disconnect()
            MsgBox("Er is een fout opgetreden: " & ex.Message, 16 + 4096, "error")
        Finally
            client.Disconnect()
        End Try

Ik heb het getest met m'n eigen server en voor mij werkt-ie prima. Dit zou dus moeten werken. Ik heb alles voorzien van commentaar.
 
Ik heb uw code eens geprobeert en het werkt perfect!:D
heel erg bedankt nu kan ik verder met de software:)
 
Hij blijft wel vragen om de update te downloaden ook als het programma is geupdate.
 
Niet als je de 'gedownloade' versie hebt. (Je moet wel het versie nummer 1 omhoog doen!!!)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan