<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Open XML, VSTO, Deployment, .NET und anderes : Setup &amp;amp; Deployment</title><link>http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx</link><description>Tags: Setup &amp;amp; Deployment</description><dc:language>de-DE</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Ressourcen vom BASTA!-Chalk Talk</title><link>http://blogs.msdn.com/jensha/archive/2008/09/26/ressourcen-vom-basta-chalk-talk.aspx</link><pubDate>Fri, 26 Sep 2008 18:00:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8966575</guid><dc:creator>jensha</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jensha/comments/8966575.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=8966575</wfw:commentRss><description>&lt;p&gt;Hier gibt's nachtr&amp;#228;glich noch meine Mindmap vom VSTO Deployment, die ich auf der Basta! gezeigt hatte. Mit ein Klick auf das Bild gibts eines, wo Sie auch was lesen k&amp;#246;nnen. Desweiteren meine Notizen dazu im &lt;a href="http://blogcasts.de/jensha/VSTO Deployment.docx"&gt;Stichwort-Word-Format&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogcasts.de/jensha/VSTO Deployment Mindmap.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="600" alt="VSTO Deployment (small)" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/RessourcenvomBASTAChalkTalk_F2B9/VSTO%20Deployment%20(small)_3.png" width="800" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8966575" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>VSTO 3.0 Add-Ins für alle User installieren</title><link>http://blogs.msdn.com/jensha/archive/2008/05/09/vsto-3-0-add-ins-f-r-alle-user-installieren.aspx</link><pubDate>Fri, 09 May 2008 17:20:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8480299</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/8480299.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=8480299</wfw:commentRss><description>&lt;p&gt;Das Office 2007 Security Modell erlaubt es nicht, unter HKLM registrierte Managed Add-Ins zu verwenden. Was nicht hei&amp;#223;t, dass mit einem Trick das Ganze nicht dennoch erreicht werden kann. &lt;a href="http://blogs.msdn.com/mshneer" mce_href="http://blogs.msdn.com/mshneer"&gt;Misha Shneerson&lt;/a&gt;, Senior Software Design Engineer im Microsoft BizApps Team, hat die notwendigen Aspekte in seinem Blog (&lt;a href="http://blogs.msdn.com/mshneer/archive/2007/09/04/deploying-your-vsto-add-in-to-all-users-part-i.aspx" mce_href="http://blogs.msdn.com/mshneer/archive/2007/09/04/deploying-your-vsto-add-in-to-all-users-part-i.aspx"&gt;Teil 1&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/mshneer/archive/2007/09/05/deploying-your-vsto-add-in-to-all-users-part-ii.aspx" mce_href="http://blogs.msdn.com/mshneer/archive/2007/09/05/deploying-your-vsto-add-in-to-all-users-part-ii.aspx"&gt;Teil 2&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/mshneer/archive/2008/04/24/deploying-your-vsto-add-in-to-all-users-part-iii.aspx" mce_href="http://blogs.msdn.com/mshneer/archive/2008/04/24/deploying-your-vsto-add-in-to-all-users-part-iii.aspx"&gt;Teil 3&lt;/a&gt;) beschrieben. Ich will mir hier die Zeit nehmen und das Ganze etwas erl&amp;#228;utern.&lt;/p&gt;  &lt;p&gt;Die Basis ist ein Registry-Replikations-Mechanismus von Office, durch welchen bestimmte Eintr&amp;#228;ge von HKLM nach HKCU repliziert werden, wenn eine der Office Anwendungen gestartet wird.&lt;/p&gt;  &lt;p&gt;Definiert werden diese Eintr&amp;#228;ge unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings mittels eines &lt;strong&gt;Create&lt;/strong&gt; bzw. &lt;strong&gt;Delete&lt;/strong&gt; Keys. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ein Beispiel:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ein Add-In f&amp;#252;r Excel 2007 wird hier registriert (ich gehe davon aus, dass die Manifests digital signiert wurden und eine Trust Chain auf der Zielmaschine existiert (&lt;a href="http://blogs.msdn.com/jensha/archive/2008/04/22/vsto-3-0-security.aspx" mce_href="http://blogs.msdn.com/jensha/archive/2008/04/22/vsto-3-0-security.aspx"&gt;siehe hier&lt;/a&gt;):&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\MyAddIn&lt;/p&gt;  &lt;p&gt;Die erforderlichen Eintr&amp;#228;ge w&amp;#228;ren:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="643" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="130"&gt;&lt;strong&gt;Name&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="119"&gt;&lt;strong&gt;Type&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="392"&gt;&lt;strong&gt;Value&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="132"&gt;Description &lt;/td&gt;        &lt;td valign="top" width="118"&gt;REG_SZ&lt;/td&gt;        &lt;td valign="top" width="391"&gt;Ein Add-In f&amp;#252;r Excel ...&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="134"&gt;FriendlyName &lt;/td&gt;        &lt;td valign="top" width="118"&gt;REG_SZ&lt;/td&gt;        &lt;td valign="top" width="390"&gt;MyAddIn&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="135"&gt;LoadBehavior&lt;/td&gt;        &lt;td valign="top" width="118"&gt;DWORD&lt;/td&gt;        &lt;td valign="top" width="389"&gt;3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;Manifest&lt;/td&gt;        &lt;td valign="top" width="117"&gt;REG_SZ&lt;/td&gt;        &lt;td valign="top" width="389"&gt;C:\\Program Files\\MyCompany\\MyAddin.vsto|vstolocal&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Um jeden an der Maschine angemeldeten Benutzer in den Genu&amp;#223; des Add-Ins kommen zu lassen, wird dieser Pfad im Prinzip auf die UserSettings von Office 2007 in HKLM &amp;quot;kopiert&amp;quot;. Der gesamte Pfad w&amp;#252;rde dann so aussehen: &lt;/p&gt;  &lt;p&gt;HKEY_LOCAL_MACHINE   &lt;br /&gt;&amp;#160;&amp;#160; SOFTWARE    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Microsoft    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Office    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 12.0    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; User Settings    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;MyCompany_MyAddIn     &lt;br /&gt;&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Create    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Software    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Microsoft    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Office    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Excel    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Addins    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MyAddIn&lt;/p&gt;  &lt;p&gt;Unter MyAddIn stehen dann die in der o.g. Tabelle angegebenen Werte.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Nicht genug&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Das reicht aber noch nicht. Repliziert wird der Pfad nur, wenn eine vorhandene &lt;strong&gt;Count Property&lt;/strong&gt; (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. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0AddInsfralleUserinstallieren_CEAF/OfficeRegReplication_1.png" mce_href="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0AddInsfralleUserinstallieren_CEAF/OfficeRegReplication_1.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="261" alt="OfficeRegReplication" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0AddInsfralleUserinstallieren_CEAF/OfficeRegReplication_thumb_1.png" width="657" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0AddInsfralleUserinstallieren_CEAF/OfficeRegReplication_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Der Wert am Zielort wird unter HKCU\Software\Microsoft\Office\12.0\User Settings\MyAddIn gef&amp;#252;hrt. Das wird getan, um nicht bei jedem Start die Replikation durchzuf&amp;#252;hren, sondern nur bei &amp;#196;nderungen. Deshalb mu&amp;#223; auch diese Count Property nach dem Deinstallieren erhalten bleiben. Am besten. man z&amp;#228;hlt bei jeder &amp;#196;nderung per Custom Action den Wert um eins hoch. Der Wertebereich eines DWords sollte f&amp;#252;r einige Zeit ausreichen.&lt;/p&gt;  &lt;p&gt;Da die Installation mittels MSI stattfinden sollte, m&amp;#252;ssen einige Dinge beachtet werden:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Der unter Manifest angegebene Pfad mu&amp;#223; so aussehen: [TARGETDIR]MyAddin.vsto|vstolocal     &lt;br /&gt;Der MSI setzt den ausgew&amp;#228;hlten Zielpfad automatisch ein. &lt;/li&gt;    &lt;li&gt;Der &lt;strong&gt;Create&lt;/strong&gt; Key mu&amp;#223; mit dem Flag &lt;em&gt;DeleteAtUninstall&lt;/em&gt; versehen sein, damit er wieder entfernt wird. &lt;/li&gt;    &lt;li&gt;Beim Deinstallieren mu&amp;#223; ein Delete Subkey geschrieben werden, der daf&amp;#252;r sorgt, da&amp;#223; beim n&amp;#228;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&amp;#223; beim erneuten Installieren ein evtl. vorhandener Delete Key gel&amp;#246;scht werden. &lt;/li&gt;    &lt;li&gt;Und nat&amp;#252;rlich mu&amp;#223; beim Installieren wie auch beim Deinstallieren die Count Property erzeugt bzw. hochgez&amp;#228;hlt werden.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Im anfangs referenzierten Blog findet sich der Code f&amp;#252;r diese Aktionen. Das klingt kompliziert, aber man mu&amp;#223; sich vor Augen halten, da&amp;#223; hier per User und per Machine Aktionen koodiniert werden m&amp;#252;ssen und der Sicherheitsmechanismus von VSTO der von ClickOnce ist - einer Technologie, die per User funktioniert.&lt;/p&gt;  &lt;p&gt;Nat&amp;#252;rlich kann man das auch auf Basis der Inclusion List tun, Misha Shneerson erkl&amp;#228;rt das in &lt;a href="http://blogs.msdn.com/mshneer/archive/2008/04/24/deploying-your-vsto-add-in-to-all-users-part-iii.aspx" mce_href="http://blogs.msdn.com/mshneer/archive/2008/04/24/deploying-your-vsto-add-in-to-all-users-part-iii.aspx"&gt;Teil 3&lt;/a&gt;. Das sollte aber nur bei nichtverwalteten Netzwerken getan werden, da die zu erwartende Sicherheit geringer ist.&lt;/p&gt;  &lt;p&gt;Bitte beachten: Es handelt sich hierbei um einen internen Office-Mechanismus. Nat&amp;#252;rlich kann man den verwenden. Es ist aber nicht garantiert, da&amp;#223; das Verhalten in Office-Versionen nach Office 2007 genauso ist. Eine Verwendung desselben geschieht demnach auf eigene Gefahr.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8480299" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>VSTO 3.0 Security</title><link>http://blogs.msdn.com/jensha/archive/2008/04/22/vsto-3-0-security.aspx</link><pubDate>Tue, 22 Apr 2008 11:24:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8416240</guid><dc:creator>jensha</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jensha/comments/8416240.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=8416240</wfw:commentRss><description>&lt;p&gt;Im &lt;strong&gt;dotNet Magazin&lt;/strong&gt;, 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&amp;#228;nge des Artikels begrenzt war, hier noch ein paar Gedanken dazu.&lt;/p&gt;  &lt;p&gt;VSTO 3.0 verwendet nach wie vor &lt;strong&gt;Code Access Security&lt;/strong&gt;, wenn es um Add-Ins oder Dokumentzentrische L&amp;#246;sungen f&amp;#252;r &lt;strong&gt;Office 2003&lt;/strong&gt; geht. Zielen wir aber auf &lt;strong&gt;Office 2007&lt;/strong&gt;, so k&amp;#246;nnen wir dieses Modell nicht mehr verwenden. Die verwendeten Manifeste (Application und Deployment Manifest) m&amp;#252;ssen &lt;strong&gt;digital signiert&lt;/strong&gt; werden (ClickOnce Security Modell). Und dazu brauchen wir ein Digitales Zertifikat. Dieses sollte bei professionellen L&amp;#246;sungen von einer vertrauensw&amp;#252;rdigen Internet Zertifikats-Authorit&amp;#228;t stammen (Verisign, Thawte, etc.) oder bei Unternehmensl&amp;#246;sungen von einem im Unternehmen stehenden Zertifikatsserver (der MS Certificate Server ist im Windows Server enthalten).&lt;/p&gt;  &lt;p&gt;Vor dem Deployment der eigentlichen Anwendung mu&amp;#223; dann nur das zum Signieren benutzte Zertifikat auf den Clients bekannt gemacht werden, sprich ein sog. &lt;strong&gt;Trusted Publisher&lt;/strong&gt; eingerichtet werden. Das Zertifikat der &lt;strong&gt;herausgebenden Authorit&amp;#228;t&lt;/strong&gt; mu&amp;#223; dabei im &lt;strong&gt;Root Certificate Store&lt;/strong&gt; zu finden sein, damit eine Trust Chain aufgebaut werden kann. Damit kann eindeutig bestimmt werden, da&amp;#223; die zu installierende Anwendung von einem Herausgeber stammt, dem das System vertraut. Das ist nichts anderes als das, was gr&amp;#246;&amp;#223;ere Unternehmen mit einer intakten PKI (Public Key Infrastructure) heute schon bei der Verteilung von In-Haus-Anwendungen verwenden.&lt;/p&gt;  &lt;p&gt;Doch, &lt;strong&gt;erstens&lt;/strong&gt; kann/will nicht jeder Geld f&amp;#252;r Zertifikate ausgeben, &lt;strong&gt;zweitens&lt;/strong&gt; hat nicht jeder die Infrastruktur f&amp;#252;r einen eigenen Zertifikatsserver und &lt;strong&gt;drittens&lt;/strong&gt; sind die Sicherheitsanforderungen bei Einzel-PCs nicht die gleichen wie bei durch Administratoren verwalteten Netzwerken. Was also tun?&lt;/p&gt;  &lt;p&gt;Die Manifeste von VSTO-Projekten in &lt;strong&gt;Visual Studio 2008&lt;/strong&gt; werden mit Zertifikaten signiert, die mit &lt;strong&gt;MakeCert.exe&lt;/strong&gt; erzeugt werden (self-signed). Das sind universale Code Signing Zertifikate, denen aber ein wichtiger Teil fehlt: Die Manufacturer bzw. Publisher Information. &lt;strong&gt;Damit kann keine Trust Chain aufgebaut werden!&lt;/strong&gt; Also doch ein Zertifikat kaufen?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="468" alt="VS SelfCert" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/VS%20SelfCert_3.png" width="772" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/VS%20SelfCert_3.png" /&gt; &lt;/p&gt;  &lt;p&gt;Hier kommt eine Ausnahme ins Spiel. Die &lt;strong&gt;Inclusion List&lt;/strong&gt;. Wird ein solches VSTO 3.0-Setup (ClickOnce Application) gestartet, fehlt die Trust Chain und ein Trust Prompt teilt dem Anwender mit, da&amp;#223; das verwendete Zertifikat nicht vertrauensw&amp;#252;rdig ist (es wurde entweder ein vollst&amp;#228;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.&lt;/p&gt;  &lt;p&gt;Entscheidet sich der Anwender f&amp;#252;r ein Installieren, so wird neben den bekannten Infos auch ein Eintrag in die Inclusion List gesetzt. Diese Liste (&lt;strong&gt;HKCU\Software\Microsoft\VSTO\Security\Inclusion&lt;/strong&gt;) enth&amp;#228;lt je einen Schl&amp;#252;ssel mit zwei Werten (Public Key der Signatur und die URL zum Deployment Manifest) f&amp;#252;r eine VSTO 3.0 L&amp;#246;sung. Solange sich die Signatur der Anwendung nicht &amp;#228;ndert, wird Ihr (auch nach Updates) vertraut.&lt;/p&gt;  &lt;p&gt;In verwalteten Umgebungen, wo ein Netzwerk-Administrator sich darum k&amp;#252;mmert, wer was darf und warum, ist dieses Verhalten nicht erw&amp;#252;nscht und kann auch abgeschaltet werden. Auch bei Anwendungen, die aus unsicheren Zonen wie dem Internet kommen, k&amp;#246;nnte das ein Problem werden. &lt;/p&gt;  &lt;p&gt;Aus diesem Grund kann das &lt;strong&gt;TrustPrompt-Verhalten&lt;/strong&gt; separat gesteuert werden. Dazu wird in der Registry unter HKLM\SOFTWARE\Microsoft\.NETFramework\Security\TrustManager\ ein Key &lt;i&gt;&lt;strong&gt;PromptingLevel&lt;/strong&gt;&lt;/i&gt; angelegt und f&amp;#252;r die gew&amp;#252;nschte Zone (siehe Tabelle) der Wert auf &lt;strong&gt;&lt;em&gt;Enabled&lt;/em&gt;&lt;/strong&gt;, &lt;i&gt;&lt;strong&gt;AuthenticodeRequired&lt;/strong&gt;&lt;/i&gt; bzw. &lt;i&gt;&lt;strong&gt;Disabled&lt;/strong&gt;&lt;/i&gt; gesetzt werden. (An dieser Stelle war die Erkl&amp;#228;rung im dotNet Magazin etwas zu kurz gekommen)&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Enabled&lt;/strong&gt;&lt;/em&gt; ist klar, TrustPrompts sind erlaubt. &lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;strong&gt;AuthenticodeRequired&lt;/strong&gt;&lt;/i&gt; bedeutet, dass Trust Prompts erlaubt sind, wenn:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ein Zertifikat mit einer &lt;strong&gt;bekannten Identit&amp;#228;t&lt;/strong&gt; (Publisher Informationen) verwendet wird (was ein in Visual Studio mit makecert.exe selbst erzeugtes Zertifikat nicht besitzt) &lt;/li&gt;    &lt;li&gt;dieses Zertifikat &lt;strong&gt;nicht&lt;/strong&gt; im Trusted Publisher Store zu finden ist &lt;/li&gt;    &lt;li&gt;das &lt;strong&gt;Zertifikat des Herausgebers&lt;/strong&gt; (bspw. das des eigenen Zertifikatsservers) &lt;strong&gt;im Trusted Root&lt;/strong&gt; Store liegt&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In diesem Fall spricht man von sog. Friendly Trust Prompts, da sie das Installieren erlauben:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="311" alt="Friendly Trust Prompt" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/Friendly%20Trust%20Prompt_1.png" width="607" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/Friendly%20Trust%20Prompt_1.png" /&gt; &lt;/p&gt;  &lt;p&gt;Ein Klick auf &amp;quot;More Information ...&amp;quot; enth&amp;#252;llt Details:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="542" alt="Friendly Trust Prompt Info" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/Friendly%20Trust%20Prompt%20Info_1.png" width="660" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/Friendly%20Trust%20Prompt%20Info_1.png" /&gt; &lt;/p&gt;  &lt;p&gt;Man kann also schon anhand des Icons im Dialog gewissse R&amp;#252;ckschl&amp;#252;sse ziehen. Die Publisher Informationen sind bei einem Self-Cert (also mit MakeCert erstelltem Zertifikat nicht zu sehen, weil nicht vorhanden.&lt;/p&gt;  &lt;p&gt;Bei &lt;strong&gt;&lt;em&gt;Disabled&lt;/em&gt;&lt;/strong&gt; besteht keine Chance des Umgehens. &lt;strong&gt;Nur vertrauensw&amp;#252;rdige Zertifikate&lt;/strong&gt; (mit vollst&amp;#228;ndiger Trust Chain, also Trusted Publisher und Trusted Root Zertifikate vorhanden und g&amp;#252;ltig) sind erlaubt. Das betrifft auch schon vorhandene Inclusion List Eintr&amp;#228;ge, die in diesem Fall ignoriert werden, da die Zertifikatsauswertung Priorit&amp;#228;t vor der Inclusion List besitzt. &lt;/p&gt;  &lt;p&gt;Sind diese Voraussetzungen nicht gegeben, so erh&amp;#228;lt man ein sog. Unfriendly Trust Prompt, nur um zusagen: Pech gehabt, die L&amp;#246;sung kann nicht installiert werden:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="293" alt="Unfriendly Trust Prompt" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/Unfriendly%20Trust%20Prompt_1.png" width="605" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/Unfriendly%20Trust%20Prompt_1.png" /&gt; &lt;/p&gt;  &lt;p&gt;Auch hier erh&amp;#252;llt ein Klick aud Details die Hintergr&amp;#252;nde:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="133" alt="Unfriendly Trust Prompt Details" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/Unfriendly%20Trust%20Prompt%20Details_1.png" width="535" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/Unfriendly%20Trust%20Prompt%20Details_1.png" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Einen Ausweg stellt die Aufnahme des entsprechenden (Installations-)&lt;strong&gt;Pfades&lt;/strong&gt; in die Liste der &lt;strong&gt;TrustedSites &lt;/strong&gt;sein. Daf&amp;#252;r gibt es einen eigenen PromptingLevel-Eintrag, der i.d.R. auf Enabled gesetzt sein d&amp;#252;rfte. Das funktioniert aber nur, wenn der Pfad nicht unter &lt;strong&gt;UntrustedSites&lt;/strong&gt; gelisted ist.&lt;/p&gt;  &lt;p&gt;Wurde dagegen das PromptingLevel nach der Installation einer mit einem nicht vertrauten Zertifikat signierten L&amp;#246;sung (dabei wurde der TrustPromt positiv best&amp;#228;tigt) von Enabled auf AuthenticodeRequired oder Disabled ge&amp;#228;ndert, so l&amp;#228;uft die L&amp;#246;sung trotzdem, da die Pr&amp;#252;fung w&amp;#228;hrend der ClickOnce Installation abl&amp;#228;uft und nicht beim Start der Anwendung.&lt;/p&gt;  &lt;p&gt;Obwohl der Key PromptingLevel i.d.R. nicht vorhanden ist, sind folgende Werte aktiv:&lt;/p&gt;  &lt;table class="" cellspacing="0" cellpadding="2" width="400" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td class="" valign="top" width="133"&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;&lt;strong&gt;Typ&lt;/strong&gt;&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;&lt;strong&gt;Wert&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="" valign="top" width="133"&gt;Internet&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;REG_SZ&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;AuthenticodeRequired&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="" valign="top" width="133"&gt;LocalIntranet&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;REG_SZ&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;Enabled&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="" valign="top" width="133"&gt;MyComputer&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;REG_SZ&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;Enabled&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="" valign="top" width="133"&gt;TrustedSites&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;REG_SZ&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;Enabled&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="" valign="top" width="133"&gt;UntrustedSites&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;REG_SZ&lt;/td&gt;        &lt;td class="" valign="top" width="133"&gt;Disabled&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Visual Studio 2008 selbst legt &amp;#252;brigens f&amp;#252;r jedes VSTO-Projekt (f&amp;#252;r Office 2007) einen Eintrag in der Inclusion List an. (&lt;strong&gt;Vorsicht also bei Testen&lt;/strong&gt; von ClickOnce Deployment f&amp;#252;r &amp;#214;ffice L&amp;#246;sungen auf der Entwickler-Maschine, es m&amp;#252;ssen nach dem Publish-Prozess zuerst die Add-In Eintr&amp;#228;ge f&amp;#252;r Office und der Eintrag in der Inclusion List entfernt werden!) &lt;/p&gt;  &lt;p&gt;Au&amp;#223;erdem &amp;#252;berpr&amp;#252;ft VS auch, ob eine intakte Trust Chain f&amp;#252;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)&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="159" alt="CertNotTrusted in VS" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/CertNotTrusted%20in%20VS_2.png" width="564" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/VSTO3.0Security_95AD/CertNotTrusted%20in%20VS_2.png" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tools:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;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.&lt;/p&gt;  &lt;p&gt;&amp;#220;brigens, wenn beim Signieren ein TimeStamp (offizieller Zeitstempel einer bekannten Internet Authorit&amp;#228;t, TimeStamp Server) verwendet wird, dann laufen Ihre L&amp;#246;sungen auch noch nach Ablauf des G&amp;#252;ltigkeitsdatums des Zertifikates, da der Zeitpunkt des Signierens innerhalt des G&amp;#252;ltigkeitzeitraums lag und das auch nachgewiesen werden kann (anhand des TimeStamps). Ansonsten m&amp;#252;ssen Zertifikate nach Ablauf erneuert werden. Er handelt sich dabei um kein komplett neues Zertifikat, sondern es enth&amp;#228;lt Informationen des urspr&amp;#252;nglich erstellten. Somit m&amp;#252;ssen bei erneuerten Zertifikate die einmal verteilten L&amp;#246;sungen nicht erneut signiert werden.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Fazit:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In der Regel wird sich der Entwickler nicht um die PKI (Public Key Infrastructure) k&amp;#252;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.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8416240" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>File Extension per ClickOnce mit Anwendung assoziieren</title><link>http://blogs.msdn.com/jensha/archive/2008/04/10/file-extension-per-clickonce-mit-anwendung-assoziieren.aspx</link><pubDate>Thu, 10 Apr 2008 19:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8375411</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/8375411.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=8375411</wfw:commentRss><description>&lt;p&gt;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?&lt;/p&gt; &lt;p&gt;Vorbedingungen für die Anwendung sind:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;FullTrust anfordern  &lt;li&gt;Offline verfügbar sein  &lt;li&gt;als normale Windows Anwendung funktionieren (also keine im Browser laufende WPF App)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Benötigte Tools: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Mage.exe (.NET Framework Manifest Generation Tool)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Auszuführende Schritte:&lt;/p&gt; &lt;p&gt;Nach dem normalen Publish-Prozess öffnen wir das Application Manifest &lt;strong&gt;&lt;em&gt;MyApp.exe.manifest&lt;/em&gt;&lt;/strong&gt; in Visual Studio und fügen vor der PublisherIdentity die Informationen zur zu registrierenden Dateierweiterung ein:&lt;/p&gt; &lt;p&gt;&amp;lt;fileAssociation extension=".abc" description="My Tester App" progid="abc.Document" defaultIcon="Camera.ico" xmlns="urn:schemas-microsoft-com:clickonce.v1" /&amp;gt;  &lt;p&gt;Achten sollte man darauf, dass das angegebene Icon auch mit im Deployment Prozess integriert wurde und dessen Name korrekt ist (case sensitiv).  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="337" alt="AppManifest" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/AppManifest_1.png" width="1042" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/AppManifest_thumb.png"&gt;  &lt;p&gt;Das Ganze wird wieder abgespeichert und muß jetzt erneut signiert werden, da durch die Änderung der Hash nicht mehr stimmt.  &lt;p&gt;Das Application Manifest &lt;strong&gt;&lt;em&gt;MyApp.exe.manifest&lt;/em&gt;&lt;/strong&gt; 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.  &lt;p&gt;Das Deployment Manifest &lt;strong&gt;&lt;em&gt;MyApp.application&lt;/em&gt;&lt;/strong&gt; erfordert einen Eingriff. Nach dem Öffnen in Mage wird unter &lt;em&gt;&lt;strong&gt;Application Reference&lt;/strong&gt;&lt;/em&gt; 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.  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/Mage%20Select%20Manifest.png" mce_href="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/Mage%20Select%20Manifest.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="508" alt="Mage Select Manifest" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/Mage%20Select%20Manifest_thumb.png" width="641" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/Mage%20Select%20Manifest_thumb.png"&gt;&lt;/a&gt;  &lt;p&gt;Wenn jetzt die Anwendung per ClickOnce installiert wird, wird auch die File Extension registriert. Beim Entfernen wird die Verbindung zur Anwnedung wieder entfernt.  &lt;p&gt;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.  &lt;p&gt;Das mehr als eine Anwendung zugeordnet ist, erkennt man auch, wenn per Rechtsklick auf die Datei &lt;strong&gt;Öffnen mit ...&lt;/strong&gt; aufgerufen wird:  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/OpenWith_2.png" mce_href="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/OpenWith_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="371" alt="OpenWith" src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/OpenWith_thumb.png" width="484" border="0" mce_src="http://blogs.msdn.com/blogfiles/jensha/WindowsLiveWriter/FileExtensionperClickOncemitAnwendungass_F6F0/OpenWith_thumb.png"&gt;&lt;/a&gt;  &lt;p&gt;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.  &lt;p&gt;Mit einer ClickOnce-Anwendung können so &lt;strong&gt;bis zu 8 Dateierweiterungen&lt;/strong&gt; registriert werden.  &lt;p&gt;Wie alles bei ClickOnce werden die Änderungen auf einer per-User Basis durchgeführt.  &lt;p&gt;Sollte eine andere Anwendung inzwischen die Zuordnung geändert haben, so erkennt ClickOnce das beim Deinstallieren und beläßt es dabei.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8375411" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>Neue WebCasts zu VSTO 3.0 (Office Integration mit Visual Studio 2008) verfügbar</title><link>http://blogs.msdn.com/jensha/archive/2008/04/07/neue-webcasts-zu-vsto-3-0-office-integration-mit-visual-studio-2008-verf-gbar.aspx</link><pubDate>Mon, 07 Apr 2008 15:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8365206</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/8365206.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=8365206</wfw:commentRss><description>&lt;P&gt;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:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032372950" mce_href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032372950"&gt;Visual Studio Tools for Office (Teil 1 von 4) - Outlook Custom Form Regions mit VSTO 3.0&lt;/A&gt;&lt;BR&gt;Dauer: 51 min&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032372951" mce_href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032372951"&gt;Visual Studio Tools for Office (Teil 2 von 4) - Office Client UI Extensibility&lt;/A&gt;&lt;BR&gt;Dauer: 50 min&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032372952" mce_href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032372952"&gt;Visual Studio Tools for Office (Teil 3 von 4) - Deployment &amp;amp; Security&lt;/A&gt;&lt;BR&gt;Dauer: 54 min&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032372954" mce_href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032372954"&gt;Visual Studio Tools for Office (Teil 4 von 4) - VSTO - VBA Interop: VBA mit VSTO verwenden und erweitern&lt;/A&gt;&lt;BR&gt;Dauer: 37 min &lt;/P&gt;
&lt;P&gt;Haben Sie weitere Ideen bzgl. für Video-Tutorials im Themenbereich VSTO? Ich freue mich über eine Rückmeldung. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8365206" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>Verteilung von VSTO 2005 SE - Lösungen [Teil 5]</title><link>http://blogs.msdn.com/jensha/archive/2008/02/26/verteilung-von-vsto-2005-se-l-sungen-teil-5.aspx</link><pubDate>Tue, 26 Feb 2008 18:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7905613</guid><dc:creator>jensha</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jensha/comments/7905613.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=7905613</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;Build und PostBuild und ein paar Bugs&lt;/STRONG&gt; 
&lt;P&gt;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: &lt;STRONG&gt;Error 2867&lt;/STRONG&gt;. Oder auch &lt;STRONG&gt;Error 2869&lt;/STRONG&gt; und zwar ohne weitere Erklärung. Die Ursache ist der Visual Studio Installer, der einerseits einen Eintrag in der &lt;I&gt;Error Tabl&lt;A class="" title=LastCursor name=LastCursor&gt;&lt;/A&gt;e&lt;/I&gt; vergessen hat und desweiteren eine Verhaltensweise des Windows Installers, der die &lt;I&gt;Custom Actions&lt;/I&gt; im Kontext des angemeldeten Benutzers ausführt. Und zwar unabhängig von einem evtl. erscheinenden Elevation Prompt des &lt;I&gt;User Account Controls &lt;/I&gt;(UAC). Um &lt;I&gt;Code Access Security&lt;/I&gt; 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. 
&lt;P&gt;Im verbose Log des MSI (msiexec /i MyInstaller.msi /L*v Logfile.log) steht dann etwas von „ActionType=1025“. Das setzt sich zusammen aus: &lt;I&gt;msidbCustomActionTypeInScript&lt;/I&gt; (1024) + (bzw. OR) &lt;I&gt;msidbCustomActionTypeDll&lt;/I&gt; + &lt;I&gt;msidbCustomActionTypeBinaryData&lt;/I&gt; (1) und sollte dem Entwickler sagen, dass etwas fehlt. 
&lt;P&gt;Um das Problem zu lösen, muss die Typinformation der &lt;I&gt;Custom Action&lt;/I&gt; um &lt;I&gt;&lt;STRONG&gt;msidbCustomActionTypeNoImpersonate&lt;/STRONG&gt;&lt;/I&gt; (2048) erweitert werden. Daraus ergibt sich Typ 3073. Damit wird der &lt;I&gt;Custom Action&lt;/I&gt; (InstallUtil) Process nicht impersoniert und läuft mit den erforderlichen Rechten. Der Typ kann auch für die &lt;I&gt;UnInstall&lt;/I&gt; &lt;I&gt;Custom Action&lt;/I&gt; verwendet werden. Für die &lt;I&gt;RollBack&lt;/I&gt; &lt;I&gt;Custom Action&lt;/I&gt; kommt noch &lt;I&gt;msidbCustomActionTypeRollback&lt;/I&gt; (256) hinzu, was dann zum Wert 3329 führt. 
&lt;P&gt;Die Änderungen lassen sich leider nicht direkt im Visual Studio Installer durchführen, sondern man muss sich ein Tool aus dem &lt;STRONG&gt;MSI SDK&lt;/STRONG&gt; (Bestandteil des Windows Plattform SDK) namens &lt;STRONG&gt;ORCA&lt;/STRONG&gt; (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 &lt;I&gt;CustomActions Table&lt;/I&gt;). 
&lt;P&gt;Die zweite Änderung betrifft die &lt;I&gt;Error Table&lt;/I&gt;. 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. 
&lt;P&gt;In Visual Studio 2008 sind diese Probleme übrigens behoben. 
&lt;P&gt;&lt;STRONG&gt;Software Life Cycle&lt;/STRONG&gt; 
&lt;P&gt;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. &lt;I&gt;It’s just managed Code&lt;/I&gt;. 
&lt;P&gt;&lt;STRONG&gt;Fazit&lt;/STRONG&gt; 
&lt;P&gt;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. 
&lt;P&gt;&lt;STRONG&gt;Prerequisites für VSTO-Lösungen&lt;/STRONG&gt; 
&lt;P&gt;.NET Framework 2.0 
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&lt;/A&gt; 
&lt;P&gt;&lt;B&gt;VSTO 2005 SE Runtime&lt;/B&gt; (unterstützt ebenfalls VSTO 2.0)&lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F5539A90-DC41-4792-8EF8-F4DE62FF1E81" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F5539A90-DC41-4792-8EF8-F4DE62FF1E81"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=F5539A90-DC41-4792-8EF8-F4DE62FF1E81&lt;/A&gt; 
&lt;P&gt;Office Primary Interop Assemblies (Sind Bestandteil von Office, aber nicht überall installiert, da eine Installation das .NET Framework voraussetzt) 
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513&lt;/A&gt; 
&lt;P&gt;&lt;STRONG&gt;Links &amp;amp; Literatur&lt;/STRONG&gt; 
&lt;P&gt;[1] Deploying Visual Studio 2005 Tools for Office Second Edition Solutions Using Windows Installer&lt;BR&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb332051.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb332051.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb332051.aspx&lt;/A&gt; &lt;BR&gt;&lt;A title=http://msdn2.microsoft.com/de-de/library/bb332051.aspx href="http://msdn2.microsoft.com/de-de/library/bb332051.aspx" mce_href="http://msdn2.microsoft.com/de-de/library/bb332051.aspx"&gt;http://msdn2.microsoft.com/de-de/library/bb332051.aspx&lt;/A&gt; 
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb332052.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb332052.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb332052.aspx&lt;/A&gt; &lt;BR&gt;&lt;A title=http://msdn2.microsoft.com/de-de/library/bb332052.aspx href="http://msdn2.microsoft.com/de-de/library/bb332052.aspx" mce_href="http://msdn2.microsoft.com/de-de/library/bb332052.aspx"&gt;http://msdn2.microsoft.com/de-de/library/bb332052.aspx&lt;/A&gt; 
&lt;P&gt;[2] Deploying Office Solutions&lt;BR&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/hesc2788(VS.80).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/hesc2788(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/hesc2788(VS.80).aspx&lt;/A&gt; 
&lt;P&gt;[3] CasPol.exe&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/cptools/html/cpgrfCodeAccessSecurityPolicyUtilityCaspolexe.asp" mce_href="http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/cptools/html/cpgrfCodeAccessSecurityPolicyUtilityCaspolexe.asp"&gt;http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/cptools/html/cpgrfCodeAccessSecurityPolicyUtilityCaspolexe.asp&lt;/A&gt; 
&lt;P&gt;[4] Deployment Models&lt;BR&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/7b37fkst(VS.80).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/7b37fkst(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/7b37fkst(VS.80).aspx&lt;/A&gt; 
&lt;P&gt;[5] Application Manifest Editor Sample&lt;BR&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms268756(VS.80).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms268756(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms268756(VS.80).aspx&lt;/A&gt; 
&lt;P&gt;[6] Smart Client Offline Application Block&lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=BD864EB5-56B3-43A5-A964-6F23566DF0AB" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=BD864EB5-56B3-43A5-A964-6F23566DF0AB"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=BD864EB5-56B3-43A5-A964-6F23566DF0AB&lt;/A&gt; 
&lt;P&gt;[7] Bootstrapper Manifest Generator&lt;BR&gt;&lt;A href="http://www.codeplex.com/bmg" mce_href="http://www.codeplex.com/bmg"&gt;http://www.codeplex.com/bmg&lt;/A&gt; 
&lt;P&gt;[8] Was darf mein Code? - Das Sicherheitsmodell der Common Language Runtime&lt;BR&gt;&lt;A href="http://www.microsoft.com/germany/msdn/library/security/WasDarfMeinCodeDasSicherheitsmodellDerCommonLanguageRuntime.mspx" mce_href="http://www.microsoft.com/germany/msdn/library/security/WasDarfMeinCodeDasSicherheitsmodellDerCommonLanguageRuntime.mspx"&gt;http://www.microsoft.com/germany/msdn/library/security/WasDarfMeinCodeDasSicherheitsmodellDerCommonLanguageRuntime.mspx&lt;/A&gt; 
&lt;P&gt;[9] Sicherheit in Office-Projektmappen&lt;BR&gt;&lt;A title=http://msdn2.microsoft.com/de-de/library/k64zb6we(VS.80).aspx href="http://msdn2.microsoft.com/de-de/library/k64zb6we(VS.80).aspx" mce_href="http://msdn2.microsoft.com/de-de/library/k64zb6we(VS.80).aspx"&gt;http://msdn2.microsoft.com/de-de/library/k64zb6we(VS.80).aspx&lt;/A&gt; 
&lt;P&gt;+++ Ende der Serie +++&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7905613" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>VSTO 3.0 Runtime zum Download verfügbar</title><link>http://blogs.msdn.com/jensha/archive/2007/11/29/vsto-3-0-runtime-zum-download-verf-gbar.aspx</link><pubDate>Thu, 29 Nov 2007 12:58:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6596061</guid><dc:creator>jensha</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jensha/comments/6596061.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=6596061</wfw:commentRss><description>&lt;p&gt;Die Runtime für Visual Studio Tools for Office, Version 3.0 ist &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=54EB3A5A-0E52-40F9-A2D1-EECD7A092DCB&amp;amp;displaylang=en"&gt;hier&lt;/a&gt; herunterladbar. Vorerst nur in der englischen Version, aber sobald die lokalisierten Versionen von Visual Studio 2008 verfügbar sind, wird es gibt auch unterschiedliche Sprachversionen geben.&lt;/p&gt; &lt;p&gt;Diese Runtime ist notwendig für VSTO-Lösungen, die mit Visual Studio 2008 erstellt worden sind.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6596061" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>VSTO 2005 SE Add-In Deployment / ALLUSERS</title><link>http://blogs.msdn.com/jensha/archive/2007/11/27/vsto-2005-se-add-in-deployment-allusers.aspx</link><pubDate>Tue, 27 Nov 2007 13:43:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6547972</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/6547972.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=6547972</wfw:commentRss><description>&lt;p&gt;Eine wesentliche Limitierung von managed Office 2007 Add-Ins ist die Beschränkung auf eine per-User - Installation. Selbst wenn Sie die erforderlichen Einträge (wie von mir im .NET Magazin / Ausgabe 10.07 beschrieben) auf HKLM umlegen, ignoriert Office 2007 Ihr Add-In.&lt;/p&gt; &lt;p&gt;Misha Shneerson, Entwickler im VSTO-Team, legt nun offen, wie Sie Office 2007 Add-Ins dennoch so installieren können, dass sie von allen Usern einer Maschine genutzt werden können. Es ist ein wenig Magie bei der Geschichte, aber es ist völlig legal und funktioniert.&lt;/p&gt; &lt;p&gt;Hier geht's zu den beiden Artikeln:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/mshneer/archive/2007/09/04/deploying-your-vsto-add-in-to-all-users-part-i.aspx"&gt;Deploying your VSTO Add-In to All Users (Part I)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/mshneer/archive/2007/09/05/deploying-your-vsto-add-in-to-all-users-part-ii.aspx"&gt;Deploying your VSTO Add-In to All Users (Part II)&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6547972" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>Auf die Runtime kommt es an</title><link>http://blogs.msdn.com/jensha/archive/2007/11/13/auf-die-runtime-kommt-es-an.aspx</link><pubDate>Tue, 13 Nov 2007 18:45:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6176193</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/6176193.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=6176193</wfw:commentRss><description>&lt;p&gt;Wer es noch nicht entdeckt hat: es gibt eine aktualisierte Runtime für VSTO 2005 SE, die alle bis dahin (Juli 2007) verfügbaren Fixes enthält.&lt;/p&gt; &lt;p&gt;Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime &lt;/p&gt; &lt;p&gt;(&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4468D8CB-B43E-4B09-82F6-8BA3F7B5E935&amp;amp;displaylang=en"&gt;build 8.0.50272.891&lt;/a&gt;) (x86)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6176193" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>Korrektur des dot.net Magazin-Artikels "Paketschieber"</title><link>http://blogs.msdn.com/jensha/archive/2007/09/04/korrektur-des-dot-net-magazin-artikels-paketschieber.aspx</link><pubDate>Tue, 04 Sep 2007 17:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4742245</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/4742245.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=4742245</wfw:commentRss><description>&lt;P&gt;In der Ausgabe 10.07 des dot.net Magazins wurde leider von den Redakteuren des Verlags ein Teil meines Artikels (&lt;STRONG&gt;Office Lösungen auf der Basis von VSTO 2007 richtig paketieren und ausliefern&lt;/STRONG&gt;)&amp;nbsp;"verschlimmbessert". Da heißt es auf Seite 25 in Spalte 3, der Windows Installer könne die Registry-Einträge automatisch nach HKLM umsetzen, wenn er die Installation für alle Benutzer erkennt. --- Fast. Man muß ihm das nur sagen. &lt;BR&gt;Außerdem ist wohl die Einschränkung bzgl. Add-Ins für alle Benutzer und Office 2007 unter den Tisch gefallen.&lt;/P&gt;
&lt;P&gt;Korrekt sollte es so heißen:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;FONT color=blue&gt;Noch mehr Hilfe kommt bei den Registry-Einträgen für Add-Ins (Abb. 1). Ja, es müssen leider noch welche geschrieben werden, weil Office in guter alter COM-Technologie programmiert worden ist und Erweiterungen auch in eben dieser erwartet. Aber keine Angst, um COM Interop braucht sich dank VSTO niemand mehr zu kümmern. Nur die Kommunikation mit Office, also welches Add-In für welches Programm bereit steht, lesen die Office-Programme aus der Registry – so wie auch ClassID, ProgID usw. Die gesamte Arbeit nimmt einem der automatisch ablaufende Wizard ab. Nun könnte allerdings eine Frage aufkommen: Alle Einträge stehen unter HKCU. Was ist bei einer per Machine Installation? Muß dann alles selbst eingetragen werden? Nein. Man kann den gesamten Registry-Baum von HKCU nach „Machine/User Hive“ verschieben, was dazu führt, daß je nach ALLUSERS Property die Einträge entweder in HKCU oder HKLM geschrieben werden. So einfach ist es aber nicht.&lt;BR&gt;&lt;BR&gt;Während Office 2003 noch systemweite VSTO Add-Ins erlaubt, werden diese von Office 2007 nicht mehr geladen. Office 2007 setzt das Flag für das Ladeverhalten (LoadBehavior) solcher Add-Ins zurück auf 0. Der Grund dafür ist in erhöhten Sicherheitsstandards zu suchen. Da der normale Anwender keinen Schreibzugriff auf HKLM hat, kann er auch das Ladeverhalten des Add-Ins nicht beeinflussen und damit auch nicht wählen, ob er es verwenden will oder nicht. Shared Add-Ins (COM Add-Ins, die direkt gegen IDTExtensibility2 gehen) sind davon nicht betroffen.&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;&lt;BR&gt;Office 2007 arbeitet enger mit VSTO zusammen als alle Versionen vorher und lädt VSTO-Add-Ins schneller, wenn es einen Manifest Key in der Registry findet. VSTO 2.0 hat 2 Keys: ManifestLocation und ManifestName, VSTO 2005 SE nur noch einen: Manifest. So kann Office auch zwischen beiden VSTO-Versionen unterscheiden.&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;Desweiteren sind &lt;STRONG&gt;Launch Conditions&lt;/STRONG&gt; keine &lt;STRONG&gt;Benutzerdefinierten Aktionen&lt;/STRONG&gt; sondern &lt;STRONG&gt;Startbedingungen&lt;/STRONG&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4742245" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>FireFox goes ClickOnce</title><link>http://blogs.msdn.com/jensha/archive/2007/05/31/firefox-goes-clickonce.aspx</link><pubDate>Thu, 31 May 2007 11:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3004038</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/3004038.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=3004038</wfw:commentRss><description>&lt;P&gt;Für alle, die es noch nicht gesehen haben: für FireFox gibt es ein AddOn, mit dem &lt;A class="" href="http://msdn2.microsoft.com/de-de/netframework/aa497348.aspx" mce_href="http://msdn2.microsoft.com/de-de/netframework/aa497348.aspx"&gt;ClickOnce&lt;/A&gt; unterstützt wird. Unterstützte Versionen: FireFox 1.5 .. 2.0. &lt;/P&gt;
&lt;P&gt;&lt;A class="" href="https://addons.mozilla.org/en-US/firefox/addon/1608" target=_blank mce_href="https://addons.mozilla.org/en-US/firefox/addon/1608"&gt;Zum Download&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3004038" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>Deployment von VSTO 2005 SE Lösungen</title><link>http://blogs.msdn.com/jensha/archive/2007/03/20/deployment-von-vsto-2005-se-l-sungen.aspx</link><pubDate>Tue, 20 Mar 2007 17:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1919776</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/1919776.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=1919776</wfw:commentRss><description>&lt;P&gt;Das Deployment der eigenen Anwendung ist mindestens genauso wichtig wie die Anwendung selbst. Zum einen, weil dies den ersten Kontakt Ihres Kunden mit Ihrer Anwendung darstellt und zum anderen, weil sie hier entscheidet, ob Ihre Anwendung überhaupt verwendet werden kann oder schon während des Setups scheitert. Überlassen Sie also die Erstellung eines prfessionellen Setups nicht einem hastig dafür eingestellten Studenten, sondern planen Sie das Setup und Deployment schon während der Arbeit an Ihrem Projekt.&lt;/P&gt;
&lt;P&gt;VSTO bildet da keine Ausnahme und deshalb hast sich&amp;nbsp;ein Teil der VSTO-Produktgruppe um Darryn Lavery die Zeit genommen, das ganze Prozedere in einem Whitepaper nieder zu schreiben. Während &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb332051.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb332051.aspx"&gt;&lt;STRONG&gt;Teil 1&lt;/STRONG&gt;&lt;/A&gt; erklärt, welche Prerequisites erforderlich sind und wie diese in Form von Bootstrapper Packages auf die Zielmaschine kommen, finden Sie in&amp;nbsp;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb332052.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb332052.aspx"&gt;&lt;STRONG&gt;Teil 2&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;zwei WalkTroughs, die zeigen, wie das Ganze Schritt für Schritt durchgeführt wird. So ist ein wichtiger Aspekt ebenfalls vertreten: Wie setzet man die &lt;STRONG&gt;Code Access Security Policy&lt;/STRONG&gt; automatisch während des Setups für die VSTO Solution. Hier wird mit einer Custom Action gearbeitet, die z.T. Daten vom MSI-Paket übernimmt (z.B. die ALLUSERS Property) und dann programmatisch CAS einstellt. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fazit:&lt;/STRONG&gt; Wer VSTO-Lösungen baut, braucht dieses Whitepaper&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Hier eine kurze Inhaltsübersicht:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Deployment Overview for Visual Studio Tools for Office Solutions &lt;BR&gt;Deployment Methods for Visual Studio Tools for Office &lt;BR&gt;Using Windows Installer to Deploy a Solution &lt;BR&gt;Known Issues Deploying Visual Studio 2005 Tools for Office Solutions &lt;BR&gt;Product Codes and Component IDs&lt;/P&gt;
&lt;P&gt;Walkthrough: Enhancing the Outlook Add-in Setup Project &lt;BR&gt;Walkthrough: Creating Windows Installer Packages to Deploy Visual Studio 2005 Tools for Office SE Solutions &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1919776" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/.NET+Dev+mit+Office/default.aspx">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>Visual Studio Installer: Custom Actions in eigener Installer Class</title><link>http://blogs.msdn.com/jensha/archive/2007/01/12/visual-studio-installer-custom-actions-in-eigener-installer-class.aspx</link><pubDate>Fri, 12 Jan 2007 11:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1454463</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/1454463.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=1454463</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;Bin ich doch wieder mal mit meiner eigenen Vergangenheit kollidiert. Wo? Beim Schreiben einer Installationsroutine für ein Outlook Add-In. Welche? MSI.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Wie gesagt, ich hatte vor, ein MSI Package zu erzeugen, welches ein Outlook Add-In [erzeugt mit VSTO 2005 SE] installiert und gleichzeitig auch noch die Trust Relationship [Code Access Security] setzt. Also eine Code Group anlegt und - basierend auf dem Strong Name, mit dem die DLL signiert wurde - FullTrust setzt. Gesagt - getan. Installer Class als neues Item der DLL hinzufügen und Install oder Commit, UnInstall und Rollback überschreiben:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;public override void Install(System.Collections.IDictionary stateSaver)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; base.Install(stateSaver);&lt;BR&gt;&amp;nbsp;&amp;nbsp; CreatePolicy("User", "ContactManager", "CodeGroup for VSTO AddIn for Outlook");&lt;BR&gt;}&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face=Verdana&gt;Dann noch die Custom Actions im Setup mit der DLL verbinden:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogcasts.de/jensha/CustomActions.jpg" border=0 mce_src="http://blogcasts.de/jensha/CustomActions.jpg"&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;... und es sollte funktionieren. So hatte ich mir das gedacht. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Beim Installieren unter Windows Vista bekam ich dann prompt die Quittung: Error 2867. Im Log (msiexec /i &amp;lt;package name&amp;gt; /l*v &amp;lt;Logfile&amp;gt;) stand dann folgendes:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;MSI (s) (9C:20) [17:19:41:665]: Executing op: CustomActionSchedule(Action=_6B611CFE_8C2D_44E5_9087_8802C25060B3.install, ActionType=1025, Source=BinaryData, Target=ManagedInstall, CustomActionData=/installtype=notransaction /action=install /LogFile= /InstallPath="C:\Program Files\..." "C:\Program Files\..." "C:\Users\&amp;lt;username&amp;gt;\AppData\Local\Temp\CFG2322.tmp")&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;MSI (s) (9C:94) [17:19:41:665]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI277A.tmp, Entrypoint: ManagedInstall&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face="Courier New"&gt;MSI (s) (9C!70) [17:19:41:743]: Note: 1: 2262 2: Error 3: -2147287038 &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;MSI (s) (9C!70) [17:19:41:743]: Note: 1: 2262 2: Error 3: -2147287038 &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;MSI (s) (9C!70) [17:19:41:743]: &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;MSI (s) (9C:94) [17:19:41:743]: Leaked MSIHANDLE (12) of type 790531 for thread 5744&lt;/FONT&gt; &lt;BR&gt;&lt;FONT face="Courier New"&gt;MSI (s) (9C:94) [17:19:41:743]: Note: 1: 2769 2: _6B611CFE_8C2D_44E5_9087_8802C25060B3.install 3: 1 &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;MSI (s) (9C:94) [17:19:41:743]: Note: 1: 2262 2: Error 3: -2147287038 &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Error 1001. &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;DEBUG: Error 2769:&amp;nbsp; Custom Action _6B611CFE_8C2D_44E5_9087_8802C25060B3.install did not close 1 MSIHANDLEs.&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face="Courier New"&gt;The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2769. The arguments are: _6B611CFE_8C2D_44E5_9087_8802C25060B3.install, 1,&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Schwach erinnerte ich mich der verschiedenen Typen für Custom Actions und suchte heraus, was 'ActionType=1025' bedeutet.&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;STRONG&gt;msidbCustomActionTypeInScript&lt;/STRONG&gt; (1024)&lt;BR&gt;Queues for execution at scheduled point within script. This flag designates that this is a deferred execution custom action.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;+ (bzw. OR)&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;STRONG&gt;msidbCustomActionTypeDll&lt;/STRONG&gt; + &lt;STRONG&gt;msidbCustomActionTypeBinaryData&lt;/STRONG&gt; (1)&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face=Verdana&gt;Der Process wird von InstallUtil.exe ausgeführt und läuft by default im Security Context des angemeldeten Benutzers. Und hier liegt der Hase im Pfeffer. Beim Start des MSI Pakets kommt der Prompt für elevated Execution. Wenn ich das erlaube, wird das Setup als Admin ausgeführt, nur eben nicht die Custom Action, die weiterhin im User Context läuft. Das ist fatal, wenn sie Admin Rechte benötigt. &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Um das Problem zu lösen, muß die Typinformation um &lt;STRONG&gt;msidbCustomActionTypeNoImpersonate&lt;/STRONG&gt; (2048) erweitert werden. Daraus ergibt sich Typ 3073. Damit wird der CA (InstallUtil) Process nicht impersoniert und läuft als Admin (bzw. im LocalSystem Account). 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.&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face=Verdana&gt;Die Änderungen lassen sich leider nicht direkt im Visual Studio Installer durchführen, sondern man muß sich ein Tool aus dem &lt;STRONG&gt;MSI SDK&lt;/STRONG&gt; (Bestandteil des &lt;STRONG&gt;Windows Plattform SDK&lt;/STRONG&gt;) namens &lt;STRONG&gt;ORCA&lt;/STRONG&gt; holen. Damit kann das fertige MSI Paket geladen und modifiziert werden (in unserem Fall die &lt;STRONG&gt;CustomActions Table&lt;/STRONG&gt;).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Übrigens, wie Code Groups und Trust Relationships programmatisch angelegt werden, finden Sie &lt;A class="" href="http://blogs.msdn.com/jensha/articles/397391.aspx" target=_blank mce_href="http://blogs.msdn.com/jensha/articles/397391.aspx"&gt;hier&lt;/A&gt; bzw. &lt;A class="" href="http://blogs.msdn.com/jensha/articles/397470.aspx" target=_blank mce_href="http://blogs.msdn.com/jensha/articles/397470.aspx"&gt;hier&lt;/A&gt;. Für den Fall, daß eine StrongNameMembershipCondition verwendet werden soll, kann der Public Key so ermittelt werden:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Assembly thisAsm = this.GetType().Assembly;&lt;BR&gt;AssemblyName asmName = thisAsm.GetName();&lt;BR&gt;byte[] asmKey = asmName.GetPublicKey();&lt;BR&gt;StrongNamePublicKeyBlob snPKBlob = new StrongNamePublicKeyBlob(asmKey);&lt;BR&gt;StrongNameMembershipCondition snMemCond = new StrongNameMembershipCondition(snPKBlob, null, null);&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1454463" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>Rechtevergabe für Ordner, Dateien und Registry-Einträge bei der Installation</title><link>http://blogs.msdn.com/jensha/archive/2007/01/09/rechtevergabe-f-r-ordner-dateien-und-registry-eintr-ge-bei-der-installation.aspx</link><pubDate>Tue, 09 Jan 2007 18:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1439521</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/1439521.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=1439521</wfw:commentRss><description>&lt;P&gt;Oftmals ist es notwendig, die Zugriffsrechte für Ordner, Dateien bzw. (auch das soll noch verwendet werden) Registry-Einträge einzuschränken. Vielfach liest man dann Anleitungen, wie dem Windows Installer (MSI) Scripts als Custom Actions untergeschoben werden, um selbiges zu bewerkstelligen. Dabei geht es einfacher und sicherer. &lt;/P&gt;
&lt;P&gt;Mit Hilfe der LockPermissions Table kann das nämlich mit Bordmitteln erledigt werden. Nach einer Anfrage habe ich meine schon etwas angestaubte MSI-Vergangenheit hervorgekramt und will auch nicht versäumen, das Ganze hier für die Nachwelt zu erhalten.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Hier ein Snapshot der LockPermissions Table, in der jeweils ein Registry Key, File bzw. Folder (müssen in den entsprechenden Tabellen des MSI definiert sein) mit verschiedenen Rechten für User bzw. Administratoren versehen werden.&lt;/P&gt;&lt;IMG src="http://blogcasts.de/jensha/LockPermissionsTable.jpg" border=0 mce_src="http://blogcasts.de/jensha/LockPermissionsTable.jpg"&gt; 
&lt;P mce_keep="true"&gt;In der Spalte 'User' wird der entsprechende Username&amp;nbsp;oder besser Gruppenname (engl. Bezeichnung) eingetragen, für die die Einschränkung gelten soll.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Das Aha-Erlebnis kommt allerdings in der Spalte 'Permissions'. Was soll ich dort eintragen? Man muß sich schon etwas (sehr) mit Programmierung beschäftigen, um darauf zu kommen, daß die Konstanten in C++ Header-Dateien zu finden sind. Das sind nämlich dieselben, die ein Entwickler, welcher die Win32 APIs verwendet, bemühen muß. Man findet sie im &lt;A class="" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdkintro/sdkintro/devdoc_platform_software_development_kit_start_page.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdkintro/sdkintro/devdoc_platform_software_development_kit_start_page.asp"&gt;Windows Plattform SDK&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Hier noch ein Beispiel für die Berechnung. Ja, es handelt sich meist um eine Berechnung von Hexadezimalwerten, da sich eine Konstante oftmals aus der bitweisen (OR-) Verknüpfung von anderen Konstanten zusammensetzt.&lt;/P&gt;&lt;IMG src="http://blogcasts.de/jensha/PermissionCalc.jpg" border=0 mce_src="http://blogcasts.de/jensha/PermissionCalc.jpg"&gt; 
&lt;P mce_keep="true"&gt;Natürlich muß das Setup dann mit 'elevated Privileges' ausgeführt werden (z.B. per Group Policy).&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1439521" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item><item><title>ClickOnce &amp; Proxy Authentication</title><link>http://blogs.msdn.com/jensha/archive/2006/07/12/663071.aspx</link><pubDate>Wed, 12 Jul 2006 10:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:663071</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jensha/comments/663071.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jensha/commentrss.aspx?PostID=663071</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Tahoma&gt;&lt;FONT size=2&gt;Wegen verstärkter Nachfrage hier die Info bzgl. ClickOnce Deployment und Proxy Authentication. Es kommt zu einem Fehler beim Download der Dateien. Im Protokoll kann man nachlesen: &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;EM&gt;Der Remoteserver hat einen Fehler zurückgegeben: (407) Proxyauthentifizierung erforderlich. &lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma&gt;&lt;FONT size=2&gt;Es gibt dafür einen &lt;A href="http://support.microsoft.com/kb/917952/en-us" target=new&gt;Hotfix&lt;/A&gt; beim Microsoft Support (bekommt man leider nur über anrufen). Allerdings funktioniert das nur mit den "default credentials", also ohne Paßwort-Eingabe.&lt;/P&gt;
&lt;P&gt;Man kann als Ausweg versuchen, evtl. vorher auf die Webseite zu navigieren, Username und Paßwort einzugeben und die Frage "Remember my password" zu bestätigen, was aber nicht sonderlich zufriedenstellend ist.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms228998.aspx" target=new&gt;Configuration Issues in ClickOnce Deployments&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=663071" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jensha/archive/tags/Setup+_2600_amp_3B00_+Deployment/default.aspx">Setup &amp;amp; Deployment</category></item></channel></rss>