Prüfen ob Programm vorhanden (windows und linux)

Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Antworten
chom
Beiträge: 24
Registriert: 13. Januar 2012 21:02

Prüfen ob Programm vorhanden (windows und linux)

Beitrag von chom » 11. Juni 2012 18:46

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

Ericlwo
Beiträge: 4
Registriert: 14. November 2012 14:19

Re: Prüfen ob Programm vorhanden (windows und linux)

Beitrag von Ericlwo » 21. November 2012 14:44

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.

brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: Prüfen ob Programm vorhanden (windows und linux)

Beitrag von brax » 21. November 2012 17:09

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):

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);
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.

veeman
Beiträge: 267
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Prüfen ob Programm vorhanden (windows und linux)

Beitrag von veeman » 21. November 2012 23:09

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

mage-dev

Antworten