MSDN Blogs
  • Office Development is more than VBA

    Visual Studio Extensibility zum Anfassen

    • 0 Comments

    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.

  • Office Development is more than VBA

    Support für Daisy XML

    • 0 Comments

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

  • Office Development is more than VBA

    VSTO 3.0 Add-Ins für alle User installieren

    • 0 Comments

    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.

    Bitte beachten: Es handelt sich hierbei um einen internen Office-Mechanismus. Natürlich kann man den verwenden. Es ist aber nicht garantiert, daß das Verhalten in Office-Versionen nach Office 2007 genauso ist. Eine Verwendung desselben geschieht demnach auf eigene Gefahr.

  • Office Development is more than VBA

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

    • 0 Comments

    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>

  • Office Development is more than VBA

    TechTalk einmal anders

    • 0 Comments

    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

  • Office Development is more than VBA

    Videos der Launch-Vorträge verfügbar

    • 0 Comments

    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.
  • Office Development is more than VBA

    Direkt aus dem Hexenkessel der Softwareschmiede

    • 0 Comments

    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

  • Office Development is more than VBA

    VSTO 3.0 Security

    • 2 Comments

    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 Disabled

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

  • Office Development is more than VBA

    Microsoft sei nicht innovativ...

    • 4 Comments

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

  • Office Development is more than VBA

    Etwas Terminologie gefällig?

    • 1 Comments

    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)

  • Office Development is more than VBA

    File Extension per ClickOnce mit Anwendung assoziieren

    • 0 Comments

    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.

  • Office Development is more than VBA

    Office-Protokolle freigegeben für jedermann's Gebrauch

    • 0 Comments

    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

  • Office Development is more than VBA

    Erweiterungsbibliothek für Excel-Tabellenfunktionen in Managed Code schreiben

    • 5 Comments

    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.

  • Office Development is more than VBA

    VSTO Support für Office Standard Edition

    • 0 Comments

    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

  • Office Development is more than VBA

    Open XML Ressourcen

    • 0 Comments

    Doug Mahugh, Program Manager bei Microsoft in Redmond, hat eine umfangreiche Liste an Ressourcen zu Open XML zusammengestellt. Sehr hilfreicht für jeden, der damit arbeitet oder erst mal anfangen will.

  • Office Development is more than VBA

    Neue WebCasts zu VSTO 3.0 (Office Integration mit Visual Studio 2008) verfügbar

    • 0 Comments

    ich habe mir in den letzten Tagen die Zeit genommen, wichtige Features von VSTO im Video zu demonstrieren. Vier Video-Demos sind jetzt auf MSDN freigegeben:

    Visual Studio Tools for Office (Teil 1 von 4) - Outlook Custom Form Regions mit VSTO 3.0
    Dauer: 51 min

    Visual Studio Tools for Office (Teil 2 von 4) - Office Client UI Extensibility
    Dauer: 50 min

    Visual Studio Tools for Office (Teil 3 von 4) - Deployment & Security
    Dauer: 54 min

    Visual Studio Tools for Office (Teil 4 von 4) - VSTO - VBA Interop: VBA mit VSTO verwenden und erweitern
    Dauer: 37 min

    Haben Sie weitere Ideen bzgl. für Video-Tutorials im Themenbereich VSTO? Ich freue mich über eine Rückmeldung.

  • Office Development is more than VBA

    Open XML wurde als ISO Standard akzeptiert

    • 2 Comments

    Von den 87 National Body Members (stimmberechtigten Ländern) unterstützen 87% die ISO/IEC Standardisierung, was ein ganzen Stück über der mit 75% festgesetzten Grenze für formale Akzeptanz unter ISO und IEC Regeln liegt. Ebenfalls unterstützen 75% der P-Members die Standardisierung (die Grenze liegt hier bei 2/3 aller Stimmen).

     

    Jan van den Beld (former Secretary General of Ecma International): The value of standardization bodies

    -------------------------------------------------

    Brian Jones

    ECMA Statement

    Presseerklärung

    --------------------------------------------------

    Open XML Resources for Developers

     

    [kein Aprilscherz]

  • Office Development is more than VBA

    Deutschland spricht sich für Open XML aus

    • 2 Comments

    Relativ klar aber nicht einstimmig hat das zuständige Gremium des Normenausschusses Informationstechnik und Anwendungen (NIA) im DIN im Rahmen einer elektronischen Abstimmung mit einer Mehrheit von 14 zu 5 Stimmen beschlossen, seine Zustimmung zum Standard Office Open XML vom August 2007 zu bestätigen und aufrecht zu erhalten.

    Auch Christian Ude - Münchens OB -  konnte mit der fadenscheinigen Begründung, Open XML als Standard würde das LiMux Projekt (welches wohl von ganz anderer Seite gefährdet ist...) gefährden, keine Wende herbeiführen. Die Logik ging nicht auf, hatte doch die Standt das Projekt schon vor Verabschiedung von ODF als Standard begonnen.

    Auch wenn das noch nicht das offizielle Votum ist, zeigt es doch die Richtung, die Deutschland in dieser Frage beschreitet.

  • Office Development is more than VBA

    Roadmap für Open XML SDK veröffentlicht

    • 1 Comments

    Letzten Donnerstag hat Microsoft die Roadmap für die Weiterentwicklung des Open XML SDKs veröffentlicht:

    Open XML SDK roadmap: timeline

    Was können Entwickler erwarten:

    • Kapselung von oft benutzten document-level Objekten
      • Paragraph, Style, Cell, Shape, …
    • Suche über Inhalte
    • Validation
    • „High-level“ Szenarien
      • Dokumente aus Vorlage erzeugen, Überarbeitungen annehmen, ...
    • SharedML
      • Klassen DrawingML und weiteren in unterschiedlichen Dokumententypen verfügbaren Inhalten
  • Office Development is more than VBA

    Ich wünschte, die Kuh meines Nachbarn wäre tot ...

    • 1 Comments

    Muss es denn immer sein, dass man eine Sache ablehnt, wenn man die andere unterstützt? Muss es auch sein, dass  die Ablehnung Vorrang vor der Unterstützung hat? Das passiert derzeit wieder bzw. immer noch in Bezug auf Open XML. Eine kleine Firma mit 3 Buchstaben und einer nicht zu übersehenden Vorliebe für die Farbe Blau kämpft mit allen Mitteln gegen eine ISO Standardisierung von Open XML.

    Geht nicht bei einer solchen Haltung irgendwie der Blick für die eigene Sache verloren? Nützt das noch den Anwendern?

    Vielleicht verliert man so auch ein klein wenig seiner Glaubwürdigkeit.

    Patrick Durusau, Markup Guru und technical lead für OASIS, vergleicht die Zustände sehr bildlich mit einer russischen Geschichte.

  • Office Development is more than VBA

    Kostenlose Vollversionen für Studenten

    • 1 Comments

    Mit dem Programm DreamSpark öffnet Microsoft die Türen für alle interessierten Studenten, Visual Studio 2008 Professional, Expression Studio, Windows Server 2008 Standard bzw. XNA Game Studio kostenlos einzusetzen.

    DreamSparkBanner

    Wenn das mal keine Aufforderung zum Schreiben cooler Lösungen darstellt. Na dann mal los, der Imagine Cup wartet auf Euch.

  • Office Development is more than VBA

    Neue Silverlight / Expression Studio Workshops

    • 1 Comments

    Das zweitägige „Silverlight Boot Camp” ist ein Einführungsworkshop in Microsoft® Silverlight™ 1.0 und Microsoft Expression® Studio

    image Im Rahmen des Kurses lernen Sie, wie mit Microsoft Silverlight plattformübergreifende Rich Interactive Applications (RIAs) für Windows, Mac und Linux entwickelt werden. Das visuelle Design der Grafikelemente und Benutzeroberflächen geschieht im Vektorgrafikprogramm Microsoft Expression Design und im RIA-Interfacedesign-Programm Microsoft Expression Blend v2 – die JavaScript-Programmlogik wird in Microsoft Visual Studio® entwickelt.

    Zweiter Schwerpunkt ist der Einsatz von Microsoft Expression Encoder, um HD-Videos zu konvertieren und komfortabel als Silverlight-Anwendungen online zu veröffentlichen – sowohl anhand vorgefertigter Vorlagen, als auch über einen individuellen Silverlight Media Player.

    Ziel des Silverlight Workshops

    Nach erfolgreichem Abschluss des Workshops sind die Teilnehmer in der Lage, eigene RIAs für Windows, Mac und Linux mit Microsoft Silverlight und Microsoft Expression Studio zu gestalten, einfache Programmlogik in JavaScript zu programmieren und die Anwendungen online zu veröffentlichen.

    Zielgruppe und Vorkenntnisse

    Der Kurs wendet sich an Designer und Entwickler, die bereits über Erfahrung im Bereich Webdesign und Webentwicklung besitzen. Grundkenntnisse in gängigen Grafikprogrammen und Entwicklungswerkzeugen wie Adobe Illustrator, Corel Draw und Visual Studio, sowie Vorkenntnisse im Bereich XHTML/HTML, JavaScript und Flash sind wünschenswert, aber nicht zwingend notwendig.

    Schwerpunkte des Kurses

    · Silverlight und XAML verstehen: Das Silverlight-Plug-In, die Tools, der XAML-Workflow und die Zusammenarbeit zwischen Designern und Entwicklern

    · Grafikelemente in Expression Design entwerfen und bearbeiten

    · Multimediale Benutzeroberflächen in Expression Blend v2 gestalten

    · Medienkonvertierung und -broadcasting mit Expression Encoder und Silverlight Streaming

    · Silverlight 1.0 in JavaScript programmieren

    · Bessere User Experience durch interaktive Elemente, Datenaustausch, Texteffekten und Ink-Texterkennung

    · Ausblick auf Silverlight 2.0 – die plattformübergreifende .NET-Runtime für Windows, Mac und Linux

    Referent: Oliver Scheer

     

    Termine:

    11. + 12. März 2008
    Microsoft Deutschland GmbH
    Konrad-Zuse-Str. 1
    85716 Unterschleißheim
    22. + 23. April 2008
    EAST Hotel Hamburg
    Simon-von-Utrecht-Straße 31
    20359 Hamburg
    13. + 14. Mai 2008
    Microsoft Deutschland GmbH
    Geschäftsstelle Bad Homburg
    Siemensstraße 27
    61352 Bad Homburg
    18. + 19. Juni 2008
    Microsoft Deutschland GmbH
    Geschäftsstelle Neuss
    Stresemannallee 4(b)
    41460 Neuss

    Mehr Informationen und Anmeldung

    image

  • Office Development is more than VBA

    Microsoft Office Interactive Developer Map

    • 1 Comments

    Vor einiger Zeit schon in meinem Blog, nun ist die neue Version da. Für alle, die es noch noch nicht gesehen haben: Es handelt sich um eine interaktive Karte, die die in der Office-Familie vorhandenen Technologien auflistet, Informationen bereit hält und entsprechende Links zu MSDN bzw TechNet (Dokumentation, WalkTroughs, Code Samples) bietet. Kurz gesagt, das Startpunkt für den Office System Entwickler.

    Das Ganze wurde mit WPF erstellt und ist jetzt mit ClickOnce Deployment verfügbar (ja, automatische Updates).

    OffDevMap OffDevMap2

    Was ist neu:

  • Office Development in Visual Studio 200
  • PerformancePoint Server 2007
  • Unified Communications
  •  

    Zum Download geht's hier oder mit Klick auf den Screenshot.

  • Office Development is more than VBA

    Nachtrag zum Launch In Frankfurt

    • 1 Comments

    Es war phantastisch, auf einer Veranstaltung mit 7500 (!) Teilnehmer dabei sein und vor etwa 800 davon sprechen zu dürfen.

    Leider war das Ergebnis meines Service Mashups in Outlook (mit CRM und MapPoint Integration) wegen der just in diesem Moment nicht funktionierenden Internet-Verbindung nicht vollständig zu sehen. Aber dank des Einsatzes eines Background Workers war zumindest die linke Seite erschienen. Das komplette Ergebnis des in 20 min erstellten Beispiels sollte so aussehen:

    OLFR

    Die Präsentation zum Vortrag zu VSTO 2008 als PDF finden Sie wie versprochen hier.

    Wir suchen übrigens immer wieder coole Lösungen für Case Studies. Wenn Sie also eine solche haben und berühmt werden wollen (:-), dann melden Sie sich bei mir.

  • Office Development is more than VBA

    Verteilung von VSTO 2005 SE - Lösungen [Teil 5]

    • 1 Comments

    Build und PostBuild und ein paar Bugs

    Damit ist es geschafft. Fast zumindest. Das Projekt kann kompiliert werden. Es wird aber auf den meisten Systemen nicht installiert werden können. Beim Installieren unter Windows Vista erscheint eine Fehlermeldung kurz vor Ende der Installation: Error 2867. Oder auch Error 2869 und zwar ohne weitere Erklärung. Die Ursache ist der Visual Studio Installer, der einerseits einen Eintrag in der Error Table vergessen hat und desweiteren eine Verhaltensweise des Windows Installers, der die Custom Actions im Kontext des angemeldeten Benutzers ausführt. Und zwar unabhängig von einem evtl. erscheinenden Elevation Prompt des User Account Controls (UAC). Um Code Access Security setzten zu dürfen, benötigt man allerdings entsprechende Rechte, die der Standard User nicht hat. Somit schlägt die Ausführung der Custom Action fehl.

    Im verbose Log des MSI (msiexec /i MyInstaller.msi /L*v Logfile.log) steht dann etwas von „ActionType=1025“. Das setzt sich zusammen aus: msidbCustomActionTypeInScript (1024) + (bzw. OR) msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData (1) und sollte dem Entwickler sagen, dass etwas fehlt.

    Um das Problem zu lösen, muss die Typinformation der Custom Action um msidbCustomActionTypeNoImpersonate (2048) erweitert werden. Daraus ergibt sich Typ 3073. Damit wird der Custom Action (InstallUtil) Process nicht impersoniert und läuft mit den erforderlichen Rechten. Der Typ kann auch für die UnInstall Custom Action verwendet werden. Für die RollBack Custom Action kommt noch msidbCustomActionTypeRollback (256) hinzu, was dann zum Wert 3329 führt.

    Die Änderungen lassen sich leider nicht direkt im Visual Studio Installer durchführen, sondern man muss sich ein Tool aus dem MSI SDK (Bestandteil des Windows Plattform SDK) namens ORCA (nicht zu verwechseln mit ORCAS, dem Codenamen der nächsten Version von Visual Studio) holen. ORCA ist ein Editor für die in einem MSI Paket enthaltene relationale Datenbank. Damit kann das fertige MSI Paket geladen und modifiziert werden (in diesem Fall die CustomActions Table).

    Die zweite Änderung betrifft die Error Table. Dort wurde nämlich vergessen, auftretende Fehler auch ans User Interface weiter zu geben. Ein Eintrag mit Error = „1001“ und Message = „Error [1]: [2]“ behebt die Misere.

    In Visual Studio 2008 sind diese Probleme übrigens behoben.

    Software Life Cycle

    Dank Visual Studio Tools for Office, Managed Code und Entwicklung in Visual Studio selbst ist auch die reibungslose Integration von Office-Lösungen in den Software Life Cycle gegeben. Visual Studio Team System und Team Foundation Server benötigen keiner besonderen Vorbereitung. So ist Ihr Source Code in besten Händen und Testszenarien können ebenso aufgebaut werden wie Implementierungsregeln. It’s just managed Code.

    Fazit

    Das Deployment von Lösungen auf Basis von VSTO ist einfacher geworden, wenn auch nicht ganz ohne Probleme. Weiß man allerdings um die wenigen Klippen, kann man sich viele Stunden des Suchens ersparen. Sicherlich ist die Versionsabhängigkeit von VSTO in Bezug auf Office ein Problem (VSTO 2.0 gegen Office 2003, VSTO 2005 SE gegen Office 2007, dokumentzentrische Projekte müssen aber generell mit VSTO 2.0 gegen Office 2003 geschrieben werden, laufen aber unter der Runtime von SE und gegen Office 2007…). VSTO 3.0 wird Office 2003 und 2007 unterstützen und vollständig im neuen Visual Studio 2008 (Professional Edition) enthalten sein. Damit ist dann auch das letzte Missverständnis um den Inhalt der Pakete (VSTO 2.0 ist eigentlich ein Visual Studio Pro mit VSTO aber ohne Mobility-Entwicklung und VSTO 2005 SE ist ein kostenloses Add-On für Visual Studio 2005) ausgeräumt sein.

    Prerequisites für VSTO-Lösungen

    .NET Framework 2.0

    http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5

    VSTO 2005 SE Runtime (unterstützt ebenfalls VSTO 2.0)
    http://www.microsoft.com/downloads/details.aspx?FamilyId=F5539A90-DC41-4792-8EF8-F4DE62FF1E81

    Office Primary Interop Assemblies (Sind Bestandteil von Office, aber nicht überall installiert, da eine Installation das .NET Framework voraussetzt)

    http://www.microsoft.com/downloads/details.aspx?familyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513

    Links & Literatur

    [1] Deploying Visual Studio 2005 Tools for Office Second Edition Solutions Using Windows Installer
    http://msdn2.microsoft.com/en-us/library/bb332051.aspx
    http://msdn2.microsoft.com/de-de/library/bb332051.aspx

    http://msdn2.microsoft.com/en-us/library/bb332052.aspx
    http://msdn2.microsoft.com/de-de/library/bb332052.aspx

    [2] Deploying Office Solutions
    http://msdn2.microsoft.com/en-us/library/hesc2788(VS.80).aspx

    [3] CasPol.exe
    http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/cptools/html/cpgrfCodeAccessSecurityPolicyUtilityCaspolexe.asp

    [4] Deployment Models
    http://msdn2.microsoft.com/en-us/library/7b37fkst(VS.80).aspx

    [5] Application Manifest Editor Sample
    http://msdn2.microsoft.com/en-us/library/ms268756(VS.80).aspx

    [6] Smart Client Offline Application Block
    http://www.microsoft.com/downloads/details.aspx?FamilyId=BD864EB5-56B3-43A5-A964-6F23566DF0AB

    [7] Bootstrapper Manifest Generator
    http://www.codeplex.com/bmg

    [8] Was darf mein Code? - Das Sicherheitsmodell der Common Language Runtime
    http://www.microsoft.com/germany/msdn/library/security/WasDarfMeinCodeDasSicherheitsmodellDerCommonLanguageRuntime.mspx

    [9] Sicherheit in Office-Projektmappen
    http://msdn2.microsoft.com/de-de/library/k64zb6we(VS.80).aspx

    +++ Ende der Serie +++

Page 5 of 11 (275 items) «34567»