Welcome to MSDN Blogs Sign in | Join | Help

Security ist ...

... etwas, was alle beherzigen sollten aber keiner gerne tut. Weil - es ist ja so viel bequemer!

Bei uns heißt es jetzt Security @ Sunday, und dann auch noch 2.0 - von wegen Web und so. Was soll das Ganze? Tja, wir veranstalten ein Bar Camp rund um das Thema Sicherheit in der Softwareentwicklung. Schon mal auf einem gewesen? Nein? Dann wird's aber Zeit.

Sonntag 2.0 – ein Mini-Barcamp zum Thema: Web 2.0 und Sicherheits-Aspekte

Am Sonntag den 25.05.2008  findet unser erstes Mini- Barcamp in München statt zum Thema: Web 2.0 und Sicherheits-Aspekte.  Mehr Informationen und kostenfreie Anmeldung unter: http://sonntag.mixxt.de/

Kommen kann übrigens jeder, der mit dem Thema zu tun hat. Und, die Veranstaltung ist natürlich kostenlos.

Posted by jensha | 0 Comments

Visual Studio Extensibility zum Anfassen

Wußten Sie, daß man Visual Studio mit eigener Funktionalität erweitern, es sogar aus Shell für eigene Anwendungen einsetzen kann?

Ken Levy, Community Program Manager im Visual Studio Ecosystem Team bei der Microsoft Corporation und spezialisiert auf das Thema Visual Studio Extensibility kommt am 26. Mai nach Unterschleißheim und erzählt über dieses spannenede Thema. Und Sie können dabei sein. Aber beeilen Sie sich...

Weitere Infos und den Link zur Anmeldung gibt es hier.

Posted by jensha | 0 Comments
Filed under:

Support für Daisy XML

Microsoft und DAISY Consortium stellen Software für barrierefreie Nutzung von Worddokumenten vor

Ungefähr 70 Prozent der weltweit verfügbaren Informationen liegen als Word-Dokument vor. Doch Menschen mit Sehbehinderung, Legasthenie oder einer körperlichen Behinderung haben nur eingeschränkten Zugang zu diesen Inhalten. Daher haben wir gemeinsam mit Partnern aus Industrie und Interessensgruppen im Rahmen eines Open Source-Projekts die Software „Save as DAISY XML“ entwickelt, die mit Microsoft Office Word erstellte Dokumente und Inhalte insbesondere für Menschen mit Behinderung leichter zugänglich und verwertbar macht. Ab sofort ist das Software Add-in „Save as DAISY XML“ für Microsoft Office Word 2007, 2003 und XP kostenlos verfügbar. Es ermöglicht, Office Open XML basierte Textdateien in das Digital Accessible Information System (DAISY) Format, das weltweit am häufigsten genutzte Standard Format für Menschen mit Sehbehinderung, umzuwandeln.

Das "Save as DAISY Add-in" ist in einem Open Source-Projekt gemeinsam mit Microsoft, Sonata Ltd. und dem DAISY Consortium entwickelt worden und kostenlos unter http://www.openxmlcommunity.org/daisy herunterzuladen.

Gleichzeitig zum Add-in ist auch die neueste Version der Konvertierungssoftware aus dem DAISY Pipeline-Projekt verfügbar. Diese verschiedenen Konvertierungswerkzeuge, die mit Unterstützung von Software zur synthetischen Erzeugung von Sprache die nahtlose Überführung von DAISY XML in das DAISY Digital Talking Book (DTB)-Format ermöglichen, können kostenlos heruntergeladen werden (http://www.daisy.org/projects/pipeline).

Posted by jensha | 0 Comments
Filed under:

VSTO 3.0 Add-Ins für alle User installieren

Das Office 2007 Security Modell erlaubt es nicht, unter HKLM registrierte Managed Add-Ins zu verwenden. Was nicht heißt, dass mit einem Trick das Ganze nicht dennoch erreicht werden kann. Misha Shneerson, Senior Software Design Engineer im Microsoft BizApps Team, hat die notwendigen Aspekte in seinem Blog (Teil 1, Teil 2, Teil 3) beschrieben. Ich will mir hier die Zeit nehmen und das Ganze etwas erläutern.

Die Basis ist ein Registry-Replikations-Mechanismus von Office, durch welchen bestimmte Einträge von HKLM nach HKCU repliziert werden, wenn eine der Office Anwendungen gestartet wird.

Definiert werden diese Einträge unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings mittels eines Create bzw. Delete Keys.

Ein Beispiel:

Ein Add-In für Excel 2007 wird hier registriert (ich gehe davon aus, dass die Manifests digital signiert wurden und eine Trust Chain auf der Zielmaschine existiert (siehe hier):

   HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\MyAddIn

Die erforderlichen Einträge wären:

Name   Type    Value   
Description REG_SZ Ein Add-In für Excel ...
FriendlyName REG_SZ MyAddIn
LoadBehavior DWORD 3
Manifest REG_SZ C:\\Program Files\\MyCompany\\MyAddin.vsto|vstolocal

Um jeden an der Maschine angemeldeten Benutzer in den Genuß des Add-Ins kommen zu lassen, wird dieser Pfad im Prinzip auf die UserSettings von Office 2007 in HKLM "kopiert". Der gesamte Pfad würde dann so aussehen:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Office
            12.0
               User Settings
                 MyCompany.MyAddIn
                     Create
                        Software
                           Microsoft
                              Office
                                 Excel
                                    Addins
                                       MyAddIn

Unter MyAddIn stehen dann die in der o.g. Tabelle angegebenen Werte.

Nicht genug

Das reicht aber noch nicht. Repliziert wird der Pfad nur, wenn eine vorhandene Count Property (DWORD) auf dem im obigen Pfad fett formatierten Key (MyCompany.MyAddIn) gefunden wird und deren Wert vom Wert derselben im Ziel-Hive der Registry (HKCU) abweicht.

OfficeRegReplication

Der Wert am Zielort wird unter HKCU\Software\Microsoft\Office\12.0\User Settings\MyAddIn geführt. Das wird getan, um nicht bei jedem Start die Replikation durchzuführen, sondern nur bei Änderungen. Deshalb muß auch diese Count Property nach dem Deinstallieren erhalten bleiben. Am besten. man zählt bei jeder Änderung per Custom Action den Wert um eins hoch. Der Wertebereich eines DWords sollte für einige Zeit ausreichen.

Da die Installation mittels MSI stattfinden sollte, müssen einige Dinge beachtet werden:

  1. Der unter Manifest angegebene Pfad muß so aussehen: [TARGETDIR]MyAddin.vsto|vstolocal
    Der MSI setzt den ausgewählten Zielpfad automatisch ein.
  2. Der Create Key muß mit dem Flag DeleteAtUninstall versehen sein, damit er wieder entfernt wird.
  3. Beim Deinstallieren muß ein Delete Subkey geschrieben werden, der dafür sorgt, daß beim nächsten Start der Hostapplikation die Registrierung des Add-Ins aufgehoben wird. Der sieht vom Aufbau her genauso aus wie der Create Key. Allerdings - da dieser in der Registry verbleibt - muß beim erneuten Installieren ein evtl. vorhandener Delete Key gelöscht werden.
  4. Und natürlich muß beim Installieren wie auch beim Deinstallieren die Count Property erzeugt bzw. hochgezählt werden.

Im anfangs referenzierten Blog findet sich der Code für diese Aktionen. Das klingt kompliziert, aber man muß sich vor Augen halten, daß hier per User und per Machine Aktionen koodiniert werden müssen und der Sicherheitsmechanismus von VSTO der von ClickOnce ist - einer Technologie, die per User funktioniert.

Natürlich kann man das auch auf Basis der Inclusion List tun, Misha Shneerson erklärt das in Teil 3. Das sollte aber nur bei nichtverwalteten Netzwerken getan werden, da die zu erwartende Sicherheit geringer ist.

Posted by jensha | 0 Comments

Ribbon Controls mit best. Control IDs können nicht deaktiviert werden

In der Liste der Control Ids sind die Namen der eingebauten Controls zu finden. Offensichtlich haben sich einige der Controls - so wie das bei Menschen auch hin und wieder üblich ist - einen zweiten Namen zugelegt. Das führt zu Unstimmigkeiten, die dazu führen, dass einige der eingebauten Controls nicht deaktiviert werden können, wenn der erste Name (auch im Anpassen Dialog der Quick Access Toolbar angezeigt) verwendet wird. Für ein simples Anzeigen der Controls und Verwenden der eingebauten Funktionalität kann auch weiterhin dieser erste Name verwendet werden.

In der nachfolgenden Tabelle finden Sie unter Control ID for Disabling den korrekten Namen des Controls zum Deaktivieren.

ControlId Bugs

Somit kann mit folgenden Snippet verhindert werden, dass z.B. die Gridlines ein- bzw. ausgeschaltet werden können:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">
  <commands>
    <command idMso="ViewSheetGridlines" enabled="false"/>
  </commands>
</customUI>

oder

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">
  <commands>
    <command idMso="SplitCells" getEnabled="GetSplitCellsEnabled"/>
  </commands>
</customUI>

Posted by jensha | 0 Comments
Filed under:

TechTalk einmal anders

Meine Kollegen Lori Grosland und Dirk Primbs gehen im Juni auf TechTalk Tour zum Thema

 

Technologieperlen unter der Haube

In diesem TechTalk halten wir es analog zu einer beliebten Süssigkeit: Spass, Spannung und Schokolade...

Das bedeutet:

- Spass, wenn wir Ihnen Tools und Technologien wie Deep Zoom, die Live APIs oder auch das eine oder andere Research Projekt vorstellen.

- Spannung, wenn wir der Frage nachgehen, wie die Technik darunter funktioniert und

- Schokolade, wenn wir hands on zeigen, wie Sie diese Lösungen in eigenen Applikationen einsetzen.

 

Anmeldung und Infos gibt’s unter http://www.microsoft.com/germany/msdn/techtalk/default.mspx

 

Termine:

02.06 - Karlsruhe

03.06 - Köln

05.06 - Berlin

10.06 - München

11.06 – Hamburg

Posted by jensha | 0 Comments
Filed under:

Videos der Launch-Vorträge verfügbar

120x240_Launch_DE_ani Haben Sie nicht alle Vorträge besuchen können weil Sie es nicht geshafft haben, sich zu (vier-)teilen?
Dann können Sie jetzt aufatmen.

Neben einer Reihe von Informationen rund um die Launch Produkte sind jetzt auch die Videos der Launch-Vorträge online.

Neben der aus Kapazitätsgründen nicht von allen gesehenen Keynote finden Sie hier die Fachvorträge zu Visual Studio 2008, Windows Server 2008 und SQL Server 2008 sowie die der deutschen SharePoint Konferenz.

Also geballtes Know-How in der Konserve. Viel Spaß damit.
Posted by jensha | 0 Comments
Filed under:

Direkt aus dem Hexenkessel der Softwareschmiede

Bekanntlich sind Informationen direkt von der Quelle die besten, da nicht misinterpretiert. Andrew Whitechapel, Senior Program Manager im BizApps Team (der Wiege von VSTO) und maßgeblich am Design von VSTO beteiligt, schreibt über

Besonders für C# Entwickler interessant: Phil Hoff schreibt über die von ihm mitentwickelten Office Interop API Extensions (in den VSTO Powertools), einem Weg, wie man stark typisiert mit Office OM Parametern umgehen kann.

Kris Makey schreibt über Deployment-Themen in Bezug auf Office Integration mit VSTO und wie man mit der beteiligten Security umgeht.

 

Desweiteren hier noch ein paar Links zu VSTO 2008 (oder 3.0) Development:

VSTO Dokumentation: Englisch / Deutsch 

Samples and walkthroughs: Englisch / Deutsch 

Office Development whitepapers: Englisch

Posted by jensha | 0 Comments

VSTO 3.0 Security

Im dotNet Magazin, Ausgabe 4/08 habe ich das Security-Modell und den Deployment-Mechanismus von VSTO 3.0 beschrieben. Da sicherlich nicht jeder (oder doch?) diese Ausgabe gelesen hat und die Länge des Artikels begrenzt war, hier noch ein paar Gedanken dazu.

VSTO 3.0 verwendet nach wie vor Code Access Security, wenn es um Add-Ins oder Dokumentzentrische Lösungen für Office 2003 geht. Zielen wir aber auf Office 2007, so können wir dieses Modell nicht mehr verwenden. Die verwendeten Manifeste (Application und Deployment Manifest) müssen digital signiert werden (ClickOnce Security Modell). Und dazu brauchen wir ein Digitales Zertifikat. Dieses sollte bei professionellen Lösungen von einer vertrauenswürdigen Internet Zertifikats-Authorität stammen (Verisign, Thawte, etc.) oder bei Unternehmenslösungen von einem im Unternehmen stehenden Zertifikatsserver (der MS Certificate Server ist im Windows Server enthalten).

Vor dem Deployment der eigentlichen Anwendung muß dann nur das zum Signieren benutzte Zertifikat auf den Clients bekannt gemacht werden, sprich ein sog. Trusted Publisher eingerichtet werden. Das Zertifikat der herausgebenden Authorität muß dabei im Root Certificate Store zu finden sein, damit eine Trust Chain aufgebaut werden kann. Damit kann eindeutig bestimmt werden, daß die zu installierende Anwendung von einem Herausgeber stammt, dem das System vertraut. Das ist nichts anderes als das, was größere Unternehmen mit einer intakten PKI (Public Key Infrastructure) heute schon bei der Verteilung von In-Haus-Anwendungen verwenden.

Doch, erstens kann/will nicht jeder Geld für Zertifikate ausgeben, zweitens hat nicht jeder die Infrastruktur für einen eigenen Zertifikatsserver und drittens sind die Sicherheitsanforderungen bei Einzel-PCs nicht die gleichen wie bei durch Administratoren verwalteten Netzwerken. Was also tun?

Die Manifeste von VSTO-Projekten in Visual Studio 2008 werden mit Zertifikaten signiert, die mit MakeCert.exe erzeugt werden (self-signed). Das sind universale Code Signing Zertifikate, denen aber ein wichtiger Teil fehlt: Die Manufacturer bzw. Publisher Information. Damit kann keine Trust Chain aufgebaut werden! Also doch ein Zertifikat kaufen?

 VS SelfCert

Hier kommt eine Ausnahme ins Spiel. Die Inclusion List. Wird ein solches VSTO 3.0-Setup (ClickOnce Application) gestartet, fehlt die Trust Chain und ein Trust Prompt teilt dem Anwender mit, daß das verwendete Zertifikat nicht vertrauenswürdig ist (es wurde entweder ein vollständiges Zertifikat verwendet, aber der Herausgeber ist nicht in Trusted Root Certificates zu finden oder das Zertifikat wurde mit MakeCert erstellt und es fehlen die entsprechenden Infos). Weiterhin wird (nicht immer, aber dazu weiter unten im Text) gefragt, ob die Anwendung dennoch installiert werden soll.

Entscheidet sich der Anwender für ein Installieren, so wird neben den bekannten Infos auch ein Eintrag in die Inclusion List gesetzt. Diese Liste (HKCU\Software\Microsoft\VSTO\Security\Inclusion) enthält je einen Schlüssel mit zwei Werten (Public Key der Signatur und die URL zum Deployment Manifest) für eine VSTO 3.0 Lösung. Solange sich die Signatur der Anwendung nicht ändert, wird Ihr (auch nach Updates) vertraut.

In verwalteten Umgebungen, wo ein Netzwerk-Administrator sich darum kümmert, wer was darf und warum, ist dieses Verhalten nicht erwünscht und kann auch abgeschaltet werden. Auch bei Anwendungen, die aus unsicheren Zonen wie dem Internet kommen, könnte das ein Problem werden.

Aus diesem Grund kann das TrustPrompt-Verhalten separat gesteuert werden. Dazu wird in der Registry unter HKLM\SOFTWARE\Microsoft\.NETFramework\Security\TrustManager\ ein Key PromptingLevel angelegt und für die gewünschte Zone (siehe Tabelle) der Wert auf Enabled, AuthenticodeRequired bzw. Disabled gesetzt werden. (An dieser Stelle war die Erklärung im dotNet Magazin etwas zu kurz gekommen)

Enabled ist klar, TrustPrompts sind erlaubt.

AuthenticodeRequired bedeutet, dass Trust Prompts erlaubt sind, wenn:

  • ein Zertifikat mit einer bekannten Identität (Publisher Informationen) verwendet wird (was ein in Visual Studio mit makecert.exe selbst erzeugtes Zertifikat nicht besitzt)
  • dieses Zertifikat nicht im Trusted Publisher Store zu finden ist
  • das Zertifikat des Herausgebers (bspw. das des eigenen Zertifikatsservers) im Trusted Root Store liegt

In diesem Fall spricht man von sog. Friendly Trust Prompts, da sie das Installieren erlauben:

Friendly Trust Prompt

Ein Klick auf "More Information ..." enthüllt Details:

Friendly Trust Prompt Info

Man kann also schon anhand des Icons im Dialog gewissse Rückschlüsse ziehen. Die Publisher Informationen sind bei einem Self-Cert (also mit MakeCert erstelltem Zertifikat nicht zu sehen, weil nicht vorhanden.

Bei Disabled besteht keine Chance des Umgehens. Nur vertrauenswürdige Zertifikate (mit vollständiger Trust Chain, also Trusted Publisher und Trusted Root Zertifikate vorhanden und gültig) sind erlaubt. Das betrifft auch schon vorhandene Inclusion List Einträge, die in diesem Fall ignoriert werden, da die Zertifikatsauswertung Priorität vor der Inclusion List besitzt.

Sind diese Voraussetzungen nicht gegeben, so erhält man ein sog. Unfriendly Trust Prompt, nur um zusagen: Pech gehabt, die Lösung kann nicht installiert werden:

Unfriendly Trust Prompt

Auch hier erhüllt ein Klick aud Details die Hintergründe:

Unfriendly Trust Prompt Details 

Einen Ausweg stellt die Aufnahme des entsprechenden (Installations-)Pfades in die Liste der TrustedSites sein. Dafür gibt es einen eigenen PromptingLevel-Eintrag, der i.d.R. auf Enabled gesetzt sein dürfte. Das funktioniert aber nur, wenn der Pfad nicht unter UntrustedSites gelisted ist.

Wurde dagegen das PromptingLevel nach der Installation einer mit einem nicht vertrauten Zertifikat signierten Lösung (dabei wurde der TrustPromt positiv bestätigt) von Enabled auf AuthenticodeRequired oder Disabled geändert, so läuft die Lösung trotzdem, da die Prüfung während der ClickOnce Installation abläuft und nicht beim Start der Anwendung.

Obwohl der Key PromptingLevel i.d.R. nicht vorhanden ist, sind folgende Werte aktiv:

Name Typ Wert
Internet REG_SZ AuthenticodeRequired
LocalIntranet REG_SZ Enabled
MyComputer REG_SZ Enabled
TrustedSites REG_SZ Enabled
UntrustedSites REG_SZ Enabled

Visual Studio 2008 selbst legt übrigens für jedes VSTO-Projekt (für Office 2007) einen Eintrag in der Inclusion List an. (Vorsicht also bei Testen von ClickOnce Deployment für Öffice Lösungen auf der Entwickler-Maschine, es müssen nach dem Publish-Prozess zuerst die Add-In Einträge für Office und der Eintrag in der Inclusion List entfernt werden!)

Außerdem überprüft VS auch, ob eine intakte Trust Chain für nicht selbst generierte Zertifikate besteht und bricht das Kompilieren ab, wenn das nicht der Fall ist. (Beispiel: Code Signing Certifikat im Trusted Publisher Store, aber kein Trusted Root vorhanden)

CertNotTrusted in VS

Tools:

Zum Handhaben der Zertifikate sollte man die Management Console (MMC) mit dem Snap-In Zertifikate verwenden. In gewissem Umfang kann auch der Browser (Tools - Options - Content - Certificates) verwendet werden, jedoch zeigt dieser nicht alle Stores an.

Übrigens, wenn beim Signieren ein TimeStamp (offizieller Zeitstempel einer bekannten Internet Authorität, TimeStamp Server) verwendet wird, dann laufen Ihre Lösungen auch noch nach Ablauf des Gültigkeitsdatums des Zertifikates, da der Zeitpunkt des Signierens innerhalt des Gültigkeitzeitraums lag und das auch nachgewiesen werden kann (anhand des TimeStamps). Ansonsten müssen Zertifikate nach Ablauf erneuert werden. Er handelt sich dabei um kein komplett neues Zertifikat, sondern es enthält Informationen des ursprünglich erstellten. Somit müssen bei erneuerten Zertifikate die einmal verteilten Lösungen nicht erneut signiert werden.

Fazit:

In der Regel wird sich der Entwickler nicht um die PKI (Public Key Infrastructue) kümmern, da dies von Administratoren erledigt wird. Erstens ist aber gut zu wissen, wie es funktioniert und zweitens kommt es wahrscheinlich schon vor, dass Admin und Entwickler eine Personalunion bilden.

Microsoft sei nicht innovativ...

... behaupten nicht wenige außerhalb der MS-Welt. Und denken dabei an die Welt von Windows und Office. Zugegeben, Innovationen in diesem Bereich - vielleicht mal von den Ribbons abgesehen - sind nicht so offensichtlich. Doch Microsoft ist auch in anderen Bereichen tätig, beschäftigen wir doch 600+ Wissenschaftler bei MS Research, die ständig auf der Suche nach Neuem sind.

Wer sich mit Fotografie beschäftigt, wird sich vielleicht schon einmal mit HDR (High Dynamic Range) Imaging oder dem Zusammensetzen von Einzelbildern zu Pamoramas (stitching) beschäftigt haben und sollte dann die Image Based Realities von Microsoft Research nicht missen. Das Stitching Tool sollte man unbedingt mal ausprobieren

PhotoSynth und DeepZoom sind weitere innovative Technologien, die Verknüpfungen von statischen Images zu dreidimensionalen Bildräumen sowie eine Zoom-Experience erlauben, wie sie bisher nicht bekannt waren. Doch, schauen Sie selbst. Blaise Aguera y Arcas (Software Architekt bei Microsoft Live Labs und Architekt von SeaDragon sowie Co-Author von PhotoSynth) präsentiert beide Technologien hier:

image

Posted by jensha | 4 Comments

Etwas Terminologie gefällig?

Seit kurzem gibt es eine eigene Webseite bzgl. Fragen zu Microsoft Terminologie, und zwar für über 90 Sprachen! Das Microsoft Sprachenportal lädt ein zur Terminologiesuche über alle Produkte. Sie können sprachabhängige Style-Guides herunterladen oder auch Feedback geben. Zudem erfahren Sie neues zum Thema im dazugehörigen Blog von einer Microsoft-Terminologin (Ich wußte bisher nicht, daß es so eine Job-Bezeichnung überhaupt gibt)

Posted by jensha | 1 Comments
Filed under:

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.

Posted by jensha | 0 Comments
Filed under:

Office-Protokolle freigegeben für jedermann's Gebrauch

Am Dienstag, dem 8. April, wurden mehr als 14.000 Seiten an Dokumentation (vorläufige Versionen) zu in Office-Anwendungen bzw. in Windows selbst verwendeten Protokollen veröffentlicht. Dazu gehören Anwendungen wie Office 2007, SharePoint Server 2007 und Exchange Server 2007.

Jeder, der das möchte, hat nun (kosten-) freien Zugriff darauf.

Unter den Protokollen sind z.B. die für Microsoft Error Reporting, für File bzw. Data Access oder Document Management Protokolle aus der Office-Familie. Oder aber auch Windows Protokolle wie Active Directory Schema Informationen bzw. Application Services and .NET Framework Protokolle.

MSDN Open Protocol Specifications pages

Posted by jensha | 0 Comments
Filed under:

Erweiterungsbibliothek für Excel-Tabellenfunktionen in Managed Code schreiben

Hin und wieder werde ich gefragt, ob man mit VSTO auch Tabellenfunktionen für Excel schreiben kann. Nun, bislang kann man das nicht. Allerdings kann man mit etwas COM Interop das Ganze als Excel Add-In (Vorsicht, nicht COM Add-In) laufen lassen. Wie das geht, will ich im Folgenden mal beschreiben.

Als allererstes muß natürlich in Visual Studio eine einfache Klassenbibliothek angelegt und diese für COM sichtbar gemacht werden. Wichtig dabei ist, dass das COM Interface vom Typ AutoDual ist, sonst sieht Excel die Klasse nicht. Da bei der COM Registrierung mittel Regasm kein Programmable Key geschrieben wird, wir den aber brauchen, müssen wir uns selbst darum kümmern, dass der geschrieben wird. Dafür sind die beiden Methoden RegistrationMethod und UnregistrationMethod zuständig.

Nun ist es relativ einfach, Funktionen mit skalaren Parametern wie integer oder double zu implementieren:

Schwieriger wir es, wenn der Inhalt eines Arrays durchsucht werden soll. Normalerweise würden wir das so machen:

Das funktioniert aber nicht. Da ein Range Objekt in Excel als ein einziges COM Objekt (System.__ComObject) übergeben wird, müssen wir die Werte der einzelnen Zellen herausholen und ein Array erzeugen, welches am besten auch noch 0-basiert ist. Diese Konvertierung wird der eigentlichen Funktion vorgeschaltet:

Dazu kommt noch die Behandlung sog. flüchtiger Funktionen. Das sind solche, die bei gleichen Parameterwerten zu verschiedener Zeit unterschiedliche Ergebnisse liefern, wie z.B. now().

Sind diese im eigenen Code enthalten, müssen wir die Hostanwendung (also Excel) darauf aufmerksam machen (Volatile-Methode). Das führt dann dazu, dass nach Eingabe der Funktion bei jedem Neuberechnen der Tabelle auch diese Funktion berechnet wird. Anderenfalls denkt Excel - da sich die Eingabewerte ja nicht verändert haben - der Rückgabewert wäre konstant.

Wir benötigen dafür einen Zeiger auf die aktuelle Instanz von Excel, weswegen wir IDTExtensibility implementieren müssen und deshalb eine Referenz auf die Extensibility Library und - wegen der Typreferenz (Excel.Application) - die Excel PIA setzen müssen. In dessen OnConnection Event bekommt man diese Instanz übergeben. Dort speichern wir uns den Zeiger in einer lokalen Property. Alle anderen Events des IDTExtensibility Interfaces brauchen wir nicht zu befüllen, müssen diese aber implementieren und die Standard-Inhalte entfernen (Throw Exception, hier im Beispiel nicht angegeben)

Nach dem Kompilieren muß die Assembly nur noch registriert werden: regasm /codebase ExcelExtender.dll
(unter Vista die Console im Admin-Mode starten)

Und am Ende das Add-In Excel bekannt machen:

Danach können wir die Erweiterungsfunktionen auf der Maschine, auf der die Erweiterungsbibliothek registriert wurde verwenden

Weitere Hinweise finden Sie in den Teilen eins, zwei und drei einer 3-teiligen Serie von Shahar Prish.

Der Kollege ist Software Architect im Excel Services Team in Redmond und schreibt darin über User Defined Functions, die sowohl in Excel Services als auch auf dem Client verwendet werden können. Den Excel Services-Anteil kann man in unserem Kontext einfach ausblenden.

Posted by jensha | 0 Comments
Filed under:

VSTO Support für Office Standard Edition

Wer sich mal die Systemanforderungen für VSTO 2005 SE angesehen hat (macht das überhaupt jemand?), wird festgestellt haben, dass da auch die Standard Version von Office 2003 drin steht. Wie denn das? Hat Microsoft nicht immer behauptet, es gehe erst ab Professional? Jein. Früher gab es nur dokumentzentrische Erweiterungsmöglichkeiten (bis VSTO 2.0) und die funktionierten wegen der in der Standard-Version von Office 2003 fehlenden XML-Unterstützung erst ab der Pro-Version.

VSTO 2005 SE brachte aber applikationsweite Add-Ins, und die sind völlig unabhängig von einer XML-Unterstützung. Also kann man ab VSTO 2005 SE auch Add-Ins für Office 2003 Standard schreiben. Bei Office 2007 wurde die Standard-Limitierung beseitigt und es geht sowieso.

VSTO Office Std

Posted by jensha | 0 Comments
Filed under:
More Posts Next page »
 
Page view tracker