Hallo zusammen,
denke meine Frage passt hier am besten rein:
Ich möchte in meinem Programm prüfen ob ein anderes Programm installiert ist.
Um genau zu sein brauche ich für bestimmte Teile meines Programms FFMPEG.
Daher will ich prüfen ob das Programm installiert ist und somit die Funktionen dem Benutzer zur Verfügung stehen.
Unter Linux ist das jetzt eigentlich kein Problem, ich rufe "which" auf und gucke ob die Antwort ungleich "which: no xyz" ist.
Geht das auch unter Windows (hab das hier nicht)?
Weil das Programm sollte später Plattform unabhängig sein.
MFG
Prüfen ob Programm vorhanden (windows und linux)
Re: Prüfen ob Programm vorhanden (windows und linux)
Weiß ich auch nicht aber muss zu implementieren sein, es gibt ja manche Programme die sowas checken oder zumindest den Standardpfad überprüfen, wenns was mit FFMPEG zu tun hat und codecs usw, schau mal auf doom9 vorbei da gibts viele Tools, und manche von denen checken sowas! Ich glaub StaxRip z.B. auch wenns mit eigenen Dateien kommt.
Re: Prüfen ob Programm vorhanden (windows und linux)
which auf Windows nachzuprogrammieren ist nicht allzuviel Aufwand. Im Prinzip brauchst Du ja nur die Umgebungsvariable "PATH" zu finden und dann für alle Einträge davon prüfen, ob die gesuchte Executable an der Stelle existiert.
Ohne Garantie auf Korrektheit (da ungestestet):
Nun brauchst Du nur noch die QStringList durchzugehen und zu gucken, ob die gesuchte Datei existiert. Für Linux musst Du im path.split ":" als Separator nehmen, dann brauchst Du auch dort nicht mehr which zu starten.
Ohne Garantie auf Korrektheit (da ungestestet):
Code: Alles auswählen
QStringList env = QProcess::systemEnvironment();
QString path = "";
for(int i=0; i<env.size(); ++i) {
QString tmp = env.at(i);
if (tmp.toLower().startsWith("path=")) {
path = tmp;
break;
}
}
// abschneiden von "path=" am Anfang
path = path.mid(5);
// nur die Pfade
env = path.split(";",QString::SkipEmptyParts);
Re: Prüfen ob Programm vorhanden (windows und linux)
Eventuell wäre es einfacher mit QLibrary zu versuchen die Bibliothek zu laden, was ja automatisch in den Paths nach dieser sucht, und bei nicht fund ne entsprechende Meldung auszugeben.
Mfg veeman
Mfg veeman