Forum
Tipps
News
Menu-Icon

C++: Dateipfade mit unterordnern ohne Laufwerksbuchstabe angeben

Hallo,

ich will gerade einen Installer programmieren.

Der installer soll auf meine externe Festplatte, und von dort aus, auf jedem beliebigen PC das gewünschte programm installieren.

Das problem:

Die Ordnerstrucktur auf der externen Festplatte lautet wie folgt:
X:\Programme\xxxxxinstaller\Data\XXOrdner

Nun soll der Installer von der Festplatte den Ordner "XXOrdner" nach C:\Users\XXX\AppData\Roaming kopieren.

Wie lautet jetzt der Befehl? Der Laufwerksbuchstabe der Externen kann ja immer unterschiedlich sein. Der installer befindet sich aber definitif auf der Externen in "xxxxinstaller" und wird auch von dort ausgeführt.

Danke,
Kostnix


Antworten zu C++: Dateipfade mit unterordnern ohne Laufwerksbuchstabe angeben:

Hallo,

Wenn du den Installer startest bist du ja bereits in
X:\Programme\xxxxxinstaller\

Von dieser Stelle aus müssten dann ein xcopy-Befehl
Data\XXOrdner C:\Users\XXX\AppData\Roaming /s /e
lauten.
Nicht getestet, muss bestimmt noch etwas dran rumgefeilt werden.

Wie kommst du zum Installer-Programm.
Soll ja wohl als Batch laufen in der Eingabeaufforderung laufen?
Schon was von dem Script vorhanden? 

Ok, habs hingekrigt.

Habe jetzt ein weiteres Problem: C:\Users\XXX\AppData\Roaming /s /e
ist ja im Beispiel immer noch XXX als User. Angenommen der PC , auf dem ich das ausführe hat nen andern Benutzernamen, muss ich doch Umgebungsvariablen bestimmen (%appdata%). Wie geht das in meinem fall?
bis jetzt heist der code:

system("xcopy  \"Data\\XXXordner\" \"C:User\XXX\Appdata\Roaming"");

« Letzte Änderung: 25.06.12, 17:30:54 von Kostnix »
system("xcopy "Data\XXOrdner" "C:\Users\XXX\AppData\Roaming /s /e"");

ok, die Syntax von C++ habe ich nicht intus ;)
Hast du aber hier nicht etwas viel Anführungszeichen ?
Evtl.
system(xcopy "Data\XXOrdner" "C:\Users\XXX\AppData\Roaming" /s /e);
Wobei beim Ziel C:\Users\XXX durch die Systemvariable %USERPROFILE% ersetzt werden kann.

Zitat
Auserdem: warum eigentlich dieses "/s /e" ?
das sind Parameter für den xcopy-Befehl
s=kopiert auch Unterverzeichnisse
e=kopiert auch leere Unterverzeichnisse

Alle Parameter sind mit xcopy /? in der Eingabeaufforderung zu sehen.
 

Ok, habs hingekrigt.

Habe jetzt ein weiteres Problem: C:\Users\XXX\AppData\Roaming /s /e
ist ja im Beispiel immer noch XXX als User. Angenommen der PC , auf dem ich das ausführe hat nen andern Benutzernamen, muss ich doch Umgebungsvariablen bestimmen (%appdata%). Wie geht das in meinem fall?
bis jetzt heist der code:

system("xcopy  \"Data\\XXordner\" \"C:User\\XXX\\Appdata\\Roaming\"");
Sorry, für die änderung meines letzten posts, war so nicht vorgeseehen.
 

« Letzte Änderung: 25.06.12, 17:33:44 von Kostnix »

genau, nicht %USERPROFIL% sondern %APPDATA%

system("xcopy  \"Data\\XXordner\" %APPDATA%"); 

« Letzte Änderung: 25.06.12, 17:35:38 von AchimL »

Also kann ich einfach:

system("xcopy  \"Data\\XXordner\" \"%Appdata%\"");

schreiben, und was Appdata ist, blickt der von alleine? 

« Letzte Änderung: 25.06.12, 17:37:05 von Kostnix »

habe vorherigen Post nochmal korrigiert.

APPDATA=C:\Users\Admin\AppData\Roaming

Eingabeaufforderung und set eingeben, dann siehst du alle Systemvariablen.

... und was Appdata ist, blickt der von alleine? 
sollte er blicken ;)

ich denke die Syntax müsste so sein:
system("xcopy  \"Data\\XXordner\" %APPDATA%");
 

Ich werds einfach mal ausprobieren

Hätte da noch 'ne frage.

Das Script ist von einem früheren Programm, daher sind noch alte includes drin. Wollte fragen welche includes ich denn brauche, wenn ich:

den Curser ändere:
system("color F");
   CONSOLE_CURSOR_INFO ci = {10,FALSE};
   SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE) , &ci);

wenn ich system("xcopy"); und system("pause"); verwende
und wenn ich über system dateien starte, z.B. system("setup.exe")

zum Cursor kann ich nichts sagen.

Das Dateihandling sollte doch die stdio.h machen, wenns die in C++ gibt.
Aber system("pause") wird wohl nicht funktionieren, das musst du wohl im C++ Script abfangen.

Ok. Soweit funktioniert jetzt alles. Schonmal vielen dank.

Was ich jetzt allerding bemerkt habe: wenn das programm fertig ist, sagt Windows "Das Programm wurde eventuell nicht richtig installiert".

Habe da mal was von einem "Es liegt kein Fehler vor"-befehl gehört, dass man an windows, am ende des Programms senden muss.

Wie kann ich diese Meldung verhindern?

da muss ich leider passen :(

da wird wohl eine Fehlermeldung kommen, denn %ProgramFiles(x86)% gibt es auf einem 32-bit System nicht als Systemvariable.

ProgramFiles=C:\Program Files auf einem 32-bit System


« Hilfe bei der Excel ProgramierungC# dynamische checkboxen überprüfen »
 

Fremdwörter? Erklärungen im Lexikon!
Festplatte
Die Festplatte, oft auch als Hard Disk Drive (HDD) bezeichnet, ist ein interner Datenträger im Computer. Man unterscheidet zwischen den Größen der Geh&aum...

Ordner
Ordner sind Strukturelemente in einem Dateisystem, die  Dateien und andere Ordner organisieren und speichern können. Sie ermöglichen eine strukturierte und...

AGP Schnittstelle
Die AGP (Accelerated Graphics Port) - Schnittstelle wurde in den 1990er Jahren eingeführt und war speziell für Grafikkarten in PCs konzipiert. Sie bot eine dire...