Hallo,
Ich bin gerade dabei ein Programm zu schreiben, welches ein externes Programm benötigt. Zum Aufrufen verwende ich:
System.Diagnostics.Process.Start("externesProgramm.exe");
Jetzt meine Frage: Gibt es eine Möglichkeit zu überprüfen, ob diese Anwendung auf dem PC installiert ist? Der Installationspfad des externen Programmes ist für mich dabei unbekannt.
Danke im Voraus!
Wenn Du keine Eindeutigkeit der externen Anwendung hast (Registry, Pfad, etc....), dann gibt es keine eindeutige Überprüfungsmöglichkeit.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Er benötigt den Pfad zur Exe, um diese zu starten. Try-Catch hilft beim Suchen nicht; nur beim Start-Versuch einer nicht-existierenden Exe.
Der Installationspfad des externen Programmes ist für mich dabei unbekannt.
Oder was willst mit try-catch bezogen auf seine Frage anfangen?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Die PATH
-Variable wird beim Starten eines Prozesses schon beachtet (welche where
auch nur durchsucht).
Man könnte dann das gesamte Dateisystem durchsuchen lassen ([Snippet] Verzeichnisse und Dateien rekursiv durchlaufen) - evtl. noch zusätzlich mit Einbeziehung des (direkten) Ordnernamens.
Um welche konkrete Anwendung geht es denn?
Um welche konkrete Anwendung geht es denn?
Mein Hauptprogramm ist eine Bedienoberfläche zur Steuerung eines Arduinos. Zusätzlich kann dann das externe Programm verwendet werden, welches eigene Programmierung ermöglicht. Um die Anwendung so angenehm wie möglich zu gestalten, wollte ich, dass man das externe Programm von Hauptprogramm aus starten kann. Da dies aber extra heruntergeladen wird, ist mir der Dateipfad unbekannt.
Ich hoffe, damit konnte ich helfen😅
Dann lass doch den Anwender den Pfad zu der Anwendung (z.B. über den FileOpenDialog
- mit einem Filter auf den Dateinamen) eingeben.
Das (was Th69 vorschlägt) machen übrigens viele Programme - ist die einzige mehr oder weniger zuverlässige Möglichkeit.
Z.B. gibt's Visual Studio Extensions, die externe Programme in Visual Studio integrieren. Die Extension weiß natürlich nicht, wo das Programm liegt (besonders wenn das nicht installiert werden muss), also gibt es eine Einstellung, wo man den Pfad zur exe oder zum Programm-Ordner eingeben muss.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Dann mache ich es über den OpenFileDialog. Danke für die vielen Antworten.😀