Anforderung : Wir wollen ein externes Vergleichstool (wie BeyondCompare oder WinMerge) von einer Webseite aus über eine Schaltfläche oder einen Link starten. Die Pfade zu den Textdateien sollen beim Start an das Tool übergeben werden, damit es sie versteht und sie in den linken und rechten Vergleichsfenstern öffnet.
Erprobte Lösungen :
1) Verwendung Das ActiveXObject von JavaScript : Damit kann der Benutzer einfach auf eine Schaltfläche/einen Link klicken und das auf seinem Rechner installierte Vergleichstool starten. Es funktioniert jedoch nur im Internet Explorer, so dass wir dies nicht verwenden können.
Ref: Wie kann man ein externes Programm, z. B. Notepad, über einen Hyperlink aufrufen?
2) Verwendung Java-Applet : Aus Sicherheitsgründen dürfen in einen Browser eingebettete Applets nicht auf das lokale Dateisystem zugreifen und lösen eine "Access Control Exception" aus. Daher können wir dies auch nicht tun.
Ref: Warum löst mein Applet eine AccessControlException aus?
3) Verwendung Protokoll-Handler : Wir können ein benutzerdefiniertes URL-Protokoll einrichten, um das Programm auszulösen. Ähnlich wie bei der mailto:user@email.com-Syntax zur Erstellung von E-Mail-Links wird damit automatisch Outlook unter Windows gestartet. "mailto" ist ein vordefiniertes Protokoll in der Windows-Registrierung.
In ähnlicher Weise haben wir unser eigenes Protokoll, z.B. "launchCompareTool" in der Registry erstellt und konnten damit jede Anwendung wie WinMerge oder BeyondCompare starten. Wir sind jedoch nicht in der Lage, die Dateipfade auf der linken und rechten Seite als Argumente an die Anwendung zu übergeben. Möglicherweise muss die Anwendung, die gestartet wird, diese Argumente erwarten.
Ref: http://www.dreamincode.net/forums/topic/220444-run-program-from-server-on-client-computer/ http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx#app_reg
Im Gegensatz zum "mailto"-Protokoll, bei dem die Argumente "body" und "subject" an den E-Mail-Client (z. B. Outlook) weitergegeben werden, der sie versteht. Diese Vergleichstools haben keine solchen Argumente, die vom Protokoll übergeben werden können.
Gibt es eine andere Möglichkeit, diese Anforderung zu erfüllen?
Danke, Abdul