Wie man unschwer aus dem Namen des Befehls ExtractFileDrive erschließen kann, extrahiert er aus dem Parameter den Laufwerksbuchstaben und gibt diesen zurück. Der Rückgabewert ist also der Laufwerksbuchstabe.
Was also soll denn bitte schön ExtractFileDrive('setup.exe') bewirken?
Da ich grad gut drauf bin:
Delphi-Quelltext
1:
| ShellExecute(handle, PChar('open'), PChar('setup.exe'),PChar(''),PChar(ExtractFileDrive(Application.ExeName)),SW_SHOW); |
Alternativ könnte man natürlich auch gleich ExtractFilePath(Application.Exename)+'\setup.exe' in den dritten Parameter packen.
Aber wieso verwendest du nicht einfach relative Pfade? DAmit hättest du den ganzen Aufwand nicht. Wenn dein Programm etwa autostart.exe heißt und im Root-Verzeichnis der CD liegt, und du willst damit setup.exe ausführen, das z.B. im Unterverzeichnis test liegt, schreib doch einfach test\setup.exe. Absolute Pfade sind hier irgendwie unpraktisch.
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell