Updater für eigenes Programm



  • Hi,
    in der Artikelsektion gibts einen wunderschönen Beitrag dazu.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-169861.html

    Das kann man sehr einfach nutzen um ein File aus dem Netz zu laden. Müsstest es dir nur auf deine Gegebenheiten anpassen.

    MfG
    TFX



  • Danke an TFX!

    Trotzdem kann ich damit leider weniger anfangen, da ich eher ein Anfänger bin
    und das "nur auf deine Gegebenheiten anpassen" nicht hinbekomme.

    Gibt es noch andere Komponenten, die das einfacher erledigen?

    Chris_



  • TNMHTTP aus dem bereits erwähnten FastNet-Paket.
    Das ist beim BCB6 (ausser Personal?) im Lieferumfang.



  • Genau diese Personal-Edition habe ich. 😞

    Gibts diese Komponentensammlung irgendwo (kostenlos) ?
    Per Google hab ich nichts gefunden.

    Chris_



  • Ich kenne mich mit dem Builder nicht aus. Aber wenn du da WinAPI-Funktionen nutzen kannst, wäre URLDownloadToFile wohl das einfachste.



  • Wenn du die Win32 API benutzt kannst du auch das FTP Protokoll mit den Funktionen InternetOpen, InternetConnect und FTPGetFile benutzen.



  • Habe die Idee von Badestrand verfolgt (Danke dafür, auch an DocShoe!)
    und benutze folgenden Code als Konsolenanwendung:

    #include <urlmon.h>
    #include <iostream>
    #pragma comment(lib,"urlmon") 
    
    using namespace std;
    
    int main() {
    
    if ( FAILED( CoInitialize(NULL) ) ) return -1;
    
    HRESULT hResult = URLDownloadToFile(
    NULL,
    TEXT("http://www.test.de/"),
    TEXT("C:\\test.htm"),
    0,
    NULL
    );
    
    CoUninitialize();
    cout << GetLastError();
    
    if ( FAILED(hResult) ) return -1;
    else
    return 0;
    }
    

    Es tut sich aber leider gar nichts! 😞
    Bei GetLastError() wird 0 zurückgegeben 😕

    Woran liegt das?

    Chris_



  • Nicht alle Windows Funktionen benutzen Get-/SetLastError um einen Fehlerstatus anzuzeigen. Dass GetLastError() 0 zurückgibt heisst also nicht zwangsläufig, dass alles funktioniert hat.
    Hast du mal probiert, in der URL die konkrete Datei anzugeben, so wie "http://www.test.de/index.html" ?



  • Du musst schon die komplete URL zu der Datei spezifizieren, die du herunterladen willst, d.h. http://www.test.de/test.thm
    Und zur Diagnose solltest du auch dein hResult auswerten.

    Da du aber keine VCL-Mittel anwenden kannst/willst, wäre eine weitere Diskussion ggf. im WinAPI-Forum besser aufgehoben.

    Edit: Ähh ja, genau. 😉



  • @DocShoe: Auch unter Angabe der Datei lädt er nichts herunter.
    @Jansen: hResult: -2147467260 (irgendwo hier im Forum hab ich gelesen was der Wert bedeutet, finde ich gerade nur nicht. Edit: Hab mich getäuscht, war ein anderer Wert, auch bei msdn ist dieser wert nicht aufgelistet)

    Kann es evtl. am Zugriffsrecht auf (C:\) bei Vista liegen???
    Edit: Das muss es sein, denn es geht, wenn ich die datei auf einem USB-Stick speichere. Wie kann ich das beheben???

    Chris_



  • Chris_ schrieb:

    Kann es evtl. am Zugriffsrecht auf (C:\) bei Vista liegen???
    Edit: Das muss es sein, denn es geht, wenn ich die datei auf einem USB-Stick speichere. Wie kann ich das beheben???

    Entweder du speicherst die Datei irgendwo, wo du Schreibrechte hast (Persönlicher Ordner und Unterordner, siehe SHGetFolderPath), oder du musst dein Programm mit Administratorrechten starten; dazu eine entsprechende Manifestdatei im selben Ordner platzieren oder als Ressource einbinden.


Anmelden zum Antworten