setup



  • Ich weiß ich nerve langsam aber ich will das jetzt mal hinbekommen...

    Da ich nicht wirkliche Antworten/Lösungen zu meinem Setup-programm bekommen habe versuch ich es jetzt mal andersherum!

    Wie mache ich am besten ein Setup?

    Ich hab mir erstmal überlegt den Pfad (wo die Dateien hin sollen) vom Benutzer abzufragen und als string zu speichern.
    (das is ja noch nicht schwer)

    Ferner habe ich eine Funktion kopieren. Sieht so aus:

    void kopieren(string ziel, string datei){
                         //Funktion
    
                         ifstream quelle;
                         //quelle definieren
                         quelle.open(datei.c_str(), ios::binary|ios::in);
                         // quelle öffnen
                         if(!quelle){
                                     cerr << datei << " kann nicht geöffnet werden! \n";
                                     exit(-1);
                                     }
                         //Fehlerüberprüfung
                         ofstream zieldatei(ziel.c_str(), ios::binary|ios::out);
                         //zieldatei definieren
                         if(!zieldatei){
                                     cerr << ziel << " kann nicht geöffnet werden! \n";
                                     exit(-2);
                                     }
                         //Fehlerüberprüfung
                         char c;
                         while(quelle.get(c)){
                                             zieldatei.put(c);
                                             }
                         //Variablendefinition und Kopiervorgang
                         quelle.close();
                         zieldatei.close();                     
                         //Dateien schließen
                         }
    

    So hab ich das gedacht... mein Programm funktioniert aber nicht und da auch keiner einen Fehler gefunden hat, wärs ned schlecht wenn ihr mir schon bei der Erstellung helfen könntet...

    Wie mache ich jetzt am besten weiter???

    thx für Antworten! 😉



  • mmmmh...

    Warum verwendest du denn keine API-Funktionen deines Betriebssystems?
    Also z.b. WinAPI oder POSIX



  • danke schon mal für die Antwort, aber ich hab (leider noch) keinen blassen Schimmer was das überhaupt is! Programmiere erst seit Weihnachten.... 😃

    Könnte des mir bitte jemand gaaaaanz einfach erklären (so dass es sogar ich versteh!?) 🙂



  • WINAPI is das Grundgerüst dieser schönen, optisch ansprechenden Windowsfenster. Stellt nebenher noch einiges an Funktionalität zur Verfügung. http://www.win-api.de/ hier gibts n kleines Tut dazu.



  • naja damit hat er sich aber wieder an nen dummes os gebunden ...



  • ein Setup programm machst du am besten garnicht in C++, sondern benutzt z.B. das hier:

    http://nsis.sourceforge.net/Main_Page

    damit kannst du dir ein Installer "zusammenscripten" aber es wird dir auch mit einem Wizard geholfen, der mit dir Schritt für Schritt durchgeht, um einen Installer für dein Programm zu kreieren. (Falls du keinen "Bock" hast, dir die Doku für die skriptsprache 8die allerdings sehr einfach ist) durchzulesen.

    Falls das nicht das ist, was du suchst hab ich nicht verstandne, was du machen willst :).

    Grüße, Tom



  • Danke für die Antworten,

    @Raven2
    das ist sehr gut, ich hab mich scho immer gefragt wie ich von diesem einseitigen Dos-Fenstern wegkomme, weil sie irgendwie nicht wirklich toll aussehen 😃

    @yeus
    eigentlich wollte ich selber ein setup schreiben und mir keines laden....
    aber ➡ warum macht man das nicht mir C++?



  • Weil Standard-C++ sowas wie Filesysteme nicht kennt. Du könntest dir für die Dateioperationen ja auch mal boost::filesystem anschauen.



  • </Exit> schrieb:

    ➡ warum macht man das nicht mir C++?

    Weil kompilierte Sprachen dafür ab einem bestimmten Komplexitätsgrad zu unflexibel sind.
    Beispiel:
    => Du möchtest eine neue zu kopierende Datei hinzufügen
    => Hinzufügen, neu kompilieren
    => Beim fünften Mal ist dir das neukompilieren zu aufwendig, also schreibst du alle Dateinamen in eine Datei und lässt diese von deinem C++ Programm einlesen

    Ähnlich geht es dir, wenn du jedem Setup eine eigene Begrüßung zukommen lassen willst oder vielleicht irgendwann mal Seriennummern überprüfst.
    (Ich gehe jetzt einfach mal davon aus, dass du den Code mehr als einmal verwenden willst)

    Aber das soll nicht heißen, dass man soetwas nicht mit C++ machen kann oder sollte, nur solltest du dir zumindest längerfristig das Ziel setzen, das ganze skriptbar (z.B. mit Boost.Python) zu machen.



  • vielen Dank für die Antworten,

    jetzt bin ich wieder ein bisschen aufgeklärter! 😉
    Werd jetzt mal schaun dass ich in Richtung winapi informiere....

    thx 😃



  • Nimm lieber Boost.Filesystem, WinAPI ist C und das wirkt in C++ Programmen einfach nicht schön ;).



  • Psst. boost::filesystem verwendet unter Windows auch wieder WinAPI. 🙂



  • Eben, reicht doch wenn sich die boost Entwickler damit rumschlagen :p



  • </Exit> schrieb:

    ...warum macht man das nicht mir C++?

    Neben all den bisherigen richtigen Antworten noch ein Argument:
    Weil es sich dabei um eine sehr typische "Spezialaufgabe" handelt.

    ... und in solchen Fällen kann man sich gut auf die Vorarbeiten Anderer verlassen.
    Auch der o.g. Installer ist evtl. in C++ geschrieben ... aber die haben eben alle die Probleme schon gelöst, mit denen Du Dich noch rumschlagen würdest.

    Letztlich ist "ein passender Spezialist" immer besser als ein "Generalist".
    Trotzdem ist ein Generalist immer da wichtig, wo es keinen Spezialisten oder nur unpassende oder zuviele (z.B. 15 Spezialisten hintereinander zur Lösung einer Aufgabe) gibt....
    ... und natürlich, wenn man den Dingen etwas auf den Grund gehen will (Erkenntnisgewinn im Vordergrund).

    Gruß,

    Simon2.


Anmelden zum Antworten