File Extension per ClickOnce mit Anwendung assoziieren


Seit Version 3.5 des .NET Frameworks ist es möglich, Dateierweiterungen auch bei ClickOnce Deployment mit dem zu verteilendem Programm zu verbinden. Aber wie ist das möglich, findet sich doch in Visual Studio kein Hinweis dazu?

Vorbedingungen für die Anwendung sind:

  • FullTrust anfordern
  • Offline verfügbar sein
  • als normale Windows Anwendung funktionieren (also keine im Browser laufende WPF App)

Benötigte Tools:

  • Mage.exe (.NET Framework Manifest Generation Tool)

Auszuführende Schritte:

Nach dem normalen Publish-Prozess öffnen wir das Application Manifest MyApp.exe.manifest in Visual Studio und fügen vor der PublisherIdentity die Informationen zur zu registrierenden Dateierweiterung ein:

<fileAssociation extension=".abc" description="My Tester App" progid="abc.Document" defaultIcon="Camera.ico" xmlns="urn:schemas-microsoft-com:clickonce.v1" />

Achten sollte man darauf, dass das angegebene Icon auch mit im Deployment Prozess integriert wurde und dessen Name korrekt ist (case sensitiv).

AppManifest

Das Ganze wird wieder abgespeichert und muß jetzt erneut signiert werden, da durch die Änderung der Hash nicht mehr stimmt.

Das Application Manifest MyApp.exe.manifest kann gleich nach dem Öffnen in Mage wieder gespeichert werden. Dabei wird dach dem digitalen Zertifikat gefragt, welches entweder aus dem lokalen Store oder von einer Datei geholt werden kann.

Das Deployment Manifest MyApp.application erfordert einen Eingriff. Nach dem Öffnen in Mage wird unter Application Reference das eben signierte Application Manifest ausgewählt. Dadurch wird erstens der Pfad angepaßt (Vorsicht: relativer Pfad!) und zweitens ein Hash ermittelt und in das Deployment Manifest eingetragen. Danach wird wiederum beim Speichern signiert.

Mage Select Manifest

Wenn jetzt die Anwendung per ClickOnce installiert wird, wird auch die File Extension registriert. Beim Entfernen wird die Verbindung zur Anwnedung wieder entfernt.

Vorsicht ist unter Windows Vista geboten. Dort kann es zu jeder registrierten Dateierweiterung mehrere Anwendungen geben, die über einen UserCoice Eintrag in der Registry gesteuert werden. Wenn also Ihre registrierte Erweiterung scheinbar nicht akzeptiert wird, so kann das daran liegen, daß sie bereits mit einem anderen Programm verbunden ist und der Anwender diese Verbindung bereits genutzt hat (Doppelklick auf eine Datei mit einer solchen Erweiterung). In diesem Fall holt ein Rechtsklick auf die Datei die Eigenschaften dieser auf den Bildschirm und erlaubt eine Änderung der Zuordnung.

Das mehr als eine Anwendung zugeordnet ist, erkennt man auch, wenn per Rechtsklick auf die Datei Öffnen mit ... aufgerufen wird:

OpenWith

Wenn die Anwendung über die File Extension aktiviert wird, wird der Auto Update Mechanismus trotzdem verwendet. Es kann also sein, daß bei einem Doppelklick auf eine Datei ein Update der Anwendung angeboten wird.

Mit einer ClickOnce-Anwendung können so bis zu 8 Dateierweiterungen registriert werden.

Wie alles bei ClickOnce werden die Änderungen auf einer per-User Basis durchgeführt.

Sollte eine andere Anwendung inzwischen die Zuordnung geändert haben, so erkennt ClickOnce das beim Deinstallieren und beläßt es dabei.

Comments (0)

Skip to main content