<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/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>#region /* mads&amp;#39;s thoughts */ </title><link>http://weblogs.asp.net/mnissen/default.aspx</link><description>backlog on sharepoint, office and .net development</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Building Web Application Projects with CCNET</title><link>http://weblogs.asp.net/mnissen/archive/2006/06/19/Building-Web-Application-Projects-with-CCNET.aspx</link><pubDate>Mon, 19 Jun 2006 13:53:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:453610</guid><dc:creator>madsn</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=453610</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2006/06/19/Building-Web-Application-Projects-with-CCNET.aspx#comments</comments><description>One of the things about Visual Studio 2005 I disapprove of the most is the way features related to your project are stuffed into the local devmachine environment under Program Files. Among other things the coming GAT (guidance automation toolkits) work...(&lt;a href="http://weblogs.asp.net/mnissen/archive/2006/06/19/Building-Web-Application-Projects-with-CCNET.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=453610" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/.NET+General/default.aspx">.NET General</category><category domain="http://weblogs.asp.net/mnissen/archive/tags/Continous+Integration/default.aspx">Continous Integration</category><category domain="http://weblogs.asp.net/mnissen/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/mnissen/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>More VSTO Deployment - AppCheck and PIACheck compiled</title><link>http://weblogs.asp.net/mnissen/archive/2006/05/03/444927.aspx</link><pubDate>Wed, 03 May 2006 10:46:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:444927</guid><dc:creator>madsn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=444927</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2006/05/03/444927.aspx#comments</comments><description>A while ago Microsoft released a &lt;a href="http://msdn.microsoft.com/office/default.aspx?pull=/library/en-us/odc_vsto2005_ta/html/OfficeVSTOWindowsInstallerOverview.asp"&gt;walkthrough&lt;/a&gt; for VSTO deployment to, as Misha puts it; "&lt;a href="http://blogs.msdn.com/mshneer/archive/2006/01/05/deployment_articles.aspx"&gt;not remove the pain but help controlling it&lt;/a&gt;". The walkthrough covers all my (less structured) instructions, and improves on security aspects.&lt;br /&gt;&lt;br /&gt;However the article does provide you with a fair amount of work. The security part adds strong-name based evidence for assemblies which is absolutely required from a security perspective. However, the samples does not support multi-assembly deployments so you'll need to write this up yourself. I'll look into using Assembly.GetReferencedAssemblies() later on to see if that will solve this problem.&lt;br /&gt;&lt;br /&gt;Furthermore you get native checking utils for common prereqs. These are not compiled however and Aerodrome has posted a &lt;a href="http://www.rationalpath.com/"&gt;compiled version&lt;/a&gt;. Although these exe's (PIACheck.exe and AppCheck.exe) works nicely if you've got the .NET Framework preinstalled, they will fail if not. Probably because they're compiled in managed C++, and not the way instructed in the MSDN article. &lt;a href="http://sharepoint.madsnissen.net/BlogContent/appandpiacheck.rar"&gt;We've made a working set available here&lt;/a&gt; (courtesy of compilation genious Øystein Garshol).&lt;br /&gt;&lt;br /&gt;Finally I have to point out once more the weak design of the prerequisite package structure. The prerequisite definitions are fundamentally a part of any solution and should at least be copied into the solution or setup project filestructure when used to enable inclusion in sourcecontrol and automated builds. I would sure like to know how Microsoft approaches this problem using WiX or other tools.&lt;br /&gt;&lt;br /&gt;And to all of you who haven't deleted my blog from your blogroll: I'm back:-)&lt;br /&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=444927" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>MSCRM 3.0 and the VSTO for MSCRM 3.0 Toolkit</title><link>http://weblogs.asp.net/mnissen/archive/2005/12/03/432216.aspx</link><pubDate>Sat, 03 Dec 2005 13:52:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:432216</guid><dc:creator>madsn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=432216</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/12/03/432216.aspx#comments</comments><description>Read about the upcoming &lt;a href="http://kjellsj.blogspot.com/2005/11/vsto-for-mscrm-30-toolkit-to-be.html"&gt;VSTO Toolkit for MSCRM 3.0&lt;/a&gt; at &lt;a href="http://kjellsj.blogspot.com/"&gt;Kjell-Sverres blog&lt;/a&gt;. Beeing &lt;a href="http://www.objectware.no"&gt;Objectwares&lt;/a&gt; MSCRM guru KSJ also have started writing about &lt;a href="http://kjellsj.blogspot.com/2005/11/mscrm-30-added-fields-row-size.html"&gt;general&lt;/a&gt; 3.0 &lt;a href="http://kjellsj.blogspot.com/2005/11/mscrm-30-in-multi-ad-forest.html"&gt;topics&lt;/a&gt;. Keep watching if you're in the MSCRM space.&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=432216" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/Microsoft+CRM/default.aspx">Microsoft CRM</category></item><item><title>Validating Sharepoint filenames on upload </title><link>http://weblogs.asp.net/mnissen/archive/2005/11/17/430785.aspx</link><pubDate>Thu, 17 Nov 2005 08:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:430785</guid><dc:creator>madsn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=430785</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/11/17/430785.aspx#comments</comments><description>&lt;p&gt;Some characters are legal for FAT or NTFS files but illegal for files in Sharepoint documentlibraries. Using the regular upload UI for Sharepoint you'll encounter a rather unpleasant validation error when uploading a file with funky characters. Using the object model will give you a good ole' exception.&lt;/p&gt; &lt;p&gt;I've seen a lot of approaches to solving this problem, and implemented a couple myself. Last night I noticed a method on the SPEncode static class that enabled a clean approach to the problem (updated for double punctuation mark problem):&lt;/p&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color="#000000"&gt; CleanForUrlAndFileNameUse(&lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color="#000000"&gt; dirtyFileName)&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;char&lt;/span&gt;&lt;font color="#000000"&gt;[] dirtyChars = dirtyFileName.ToCharArray();&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;foreach&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="COLOR: blue"&gt;char&lt;/span&gt;&lt;font color="#000000"&gt; c &lt;/font&gt;&lt;span style="COLOR: blue"&gt;in&lt;/span&gt;&lt;font color="#000000"&gt; dirtyChars)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt;&lt;font color="#000000"&gt; (!&lt;/font&gt;&lt;span style="COLOR: teal"&gt;SPEncode&lt;/span&gt;&lt;font color="#000000"&gt;.IsLegalCharInUrl(c))&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dirtyFileName = dirtyFileName.Replace(c.ToString(), &lt;/font&gt;&lt;span style="COLOR: maroon"&gt;""&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;// Spaces are not appreciated&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dirtyFileName = dirtyFileName.Replace(&lt;/font&gt;&lt;span style="COLOR: maroon"&gt;" "&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="COLOR: maroon"&gt;""&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;// double punctuation marks causes validation error&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;while&lt;/span&gt;&lt;font color="#000000"&gt;(dirtyFileName.IndexOf(&lt;/font&gt;&lt;span style="COLOR: maroon"&gt;".."&lt;/span&gt;&lt;font color="#000000"&gt;) != -1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dirtyFileName = dirtyFileName.Replace(&lt;/font&gt;&lt;span style="COLOR: maroon"&gt;".."&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;span style="COLOR: maroon"&gt;"."&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt;&lt;font color="#000000"&gt; dirtyFileName; &lt;/font&gt;&lt;span style="COLOR: green"&gt;// now clean:-)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=430785" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>Refresh page after edit in InfoPath</title><link>http://weblogs.asp.net/mnissen/archive/2005/11/01/429121.aspx</link><pubDate>Tue, 01 Nov 2005 08:26:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:429121</guid><dc:creator>madsn</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=429121</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/11/01/429121.aspx#comments</comments><description>&lt;p&gt;When using InfoPath for editing data in you webapplications you run into a couple of tricky situations when beeing used to plain webdevelopment. One of these scenarios is when you want your webpage to refresh after having edited a record in some datasource with InfoPath. Typically you've implemented a view webpage and edit with InfoPath.&lt;/p&gt; &lt;p&gt;This sounds pretty uncomplicated, and I guess it is, but still it took me quite a while to figure out. &lt;/p&gt; &lt;p&gt;My first attempt was to use standard web techniques like opening a browser window pointing to the infopath form modally with showModalDialog and refreshing the hostpage on return. No luck. I was thinking about creating a custom hostpage utilizing iframes to open the document much like a lot of people do to handle pdfs, but I really don't like adhoc host'ish pages in my solution.&lt;/p&gt; &lt;p&gt;I also considered going all the way and &lt;a href="http://geekswithblogs.net/drewby/archive/2004/01/15/1322.aspx"&gt;serve my Infopath documents dynamically&lt;/a&gt;, but that would have been to big of a change to my current solution.&lt;/p&gt; &lt;p&gt;I went back and studied how the Sharepoint SDK suggests to solve this problem. Sharepoint makes use of a clientside component (INLAUNCH.DLL) to open InfoPath documents. The control is called &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/tscliOpenXMLDocuments_SV01036616.asp"&gt;OpenXMLDocuments&lt;/a&gt;. From the documentation I adopted the RefreshOnFocus approach from the Create sample&amp;nbsp;and tried to modify the Edit sample with it to get the refresh. Problem was that InfoPath slightly lost focus during load of the XML document which forced a too early refresh of the hostpage when using the EditDocument2 method directly. &lt;/p&gt; &lt;p&gt;Then I read &lt;A href="http://weblogs.asp.net/wkriebel/archive/2004/09/20/231972.aspx"&gt;Westins blog&lt;/a&gt; and got the idea to se exactly what Sharepoint does on the "Edit in Microsoft Office Infopath" button. Westin also describes &lt;A href="http://weblogs.asp.net/wkriebel/archive/2005/08/09/422044.aspx"&gt;how to launch an InfoPath form from a Sharepoint page&lt;/a&gt; but this only includes create which seems to work slightly different from edit.&lt;/p&gt; &lt;p&gt;Adopting the call from the "Edit in Microsoft Office Infopath" button and combining it with the RefreshOnFocus approach lead me to the following working solution for refreshing a webpage after editing in InfoPath. &lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;script&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;language&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;="javascript"&amp;gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;function&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; RefreshOnFocus()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;window.location.href = window.location;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;function&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; showInfopathAndRefreshWhenFinished(url)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;window.onfocus = RefreshOnFocus;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;editDocumentWithProgID2(url,'InfoPath.Document','SharePoint.OpenXMLDocuments');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;script&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Be aware that the clientside control must be present for this to work, but I assume it is installed with InfoPath (anyone care to assert this assumption regarding INLAUNCH.DLL?). The editDocumentWithProgID2 method is defined in the standard Sharepoint script includes.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=429121" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/.NET+General/default.aspx">.NET General</category><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>Complete set of Custom Prerequisites available</title><link>http://weblogs.asp.net/mnissen/archive/2005/10/26/428564.aspx</link><pubDate>Wed, 26 Oct 2005 17:18:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:428564</guid><dc:creator>madsn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=428564</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/10/26/428564.aspx#comments</comments><description>&lt;p&gt;Seems like VSTO Outlook deployment just got easier. I now have Custom Prerequisites for Office 2003 (SP2), Outlook 2003 (SP2),&amp;nbsp;Office 2003&amp;nbsp;PIA and the Visual Studio Tools for Office 2005 Runtime ready.&lt;/p&gt; &lt;p&gt;&lt;img src="http://sharepoint.madsnissen.net/BlogContent/AllCustomPrerequisites.png" border="1" /&gt;&lt;/p&gt; &lt;p&gt;I got some feedback from the community on my &lt;A href="http://weblogs.asp.net/mnissen/archive/2005/10/14/427508.aspx"&gt;previous post&lt;/a&gt; and I've updated my article with my findings and also a download for the prerequisite definitions for Visual Studio 2005.&lt;/p&gt; &lt;p&gt;&lt;a id="viewpost" href="/mnissen/articles/427504.aspx"&gt;&lt;font color="#770000"&gt;VSTO Outlook: the Complete Setup Solution&lt;/font&gt;&lt;/a&gt;&lt;A href="http://weblogs.asp.net/mnissen/articles/427504.aspx"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Please provide feedback on this if you find bugs or points of improvement.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=428564" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/.NET+General/default.aspx">.NET General</category><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>VSTO Outlook: The complete deplyment solution</title><link>http://weblogs.asp.net/mnissen/archive/2005/10/14/427508.aspx</link><pubDate>Fri, 14 Oct 2005 16:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:427508</guid><dc:creator>madsn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=427508</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/10/14/427508.aspx#comments</comments><description>&lt;p&gt;This week has been all about the pain of client deployment of our VSTO solution. I've &lt;A href="http://weblogs.asp.net/mnissen/articles/427504.aspx"&gt;written a summary&lt;/a&gt; which I hope will be the start of the complete solution for idiot-proof installs of Outlook plugins. I'm not quite there yet but I feel I'm pretty close. &lt;/p&gt; &lt;p&gt;&lt;A href="http://weblogs.asp.net/mnissen/articles/427504.aspx"&gt;Read it here!&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Input and feedback is very welcome!&lt;/p&gt; &lt;p&gt;Also check out &lt;a href="http://blog.jausovec.net/index.php?op=ViewArticle&amp;amp;articleId=190&amp;amp;blogId=1"&gt;Peters blog&lt;/a&gt; for VSTO content and the &lt;a href="http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=16"&gt;MSDN VSTO Forums&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=427508" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/.NET+General/default.aspx">.NET General</category><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>Recycle Bin / Undelete for Document Libraries finally solved</title><link>http://weblogs.asp.net/mnissen/archive/2005/10/07/426861.aspx</link><pubDate>Fri, 07 Oct 2005 08:03:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:426861</guid><dc:creator>madsn</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=426861</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/10/07/426861.aspx#comments</comments><description>&lt;p&gt;Last week I met Todd from Mindsharp in Seattle and he told me that he'd just created a purely client side solution to the whole undelete / recycle bin problem with Sharepoint document libraries. Several solutions have been posted to address this issue in the past, amongst others &lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/02/RecycleBinforWSS/default.aspx"&gt;Max and Erics article&lt;/a&gt; in MSDN Mag.&lt;/p&gt; &lt;p&gt;The beauty of Todds solution is it simplicity. Todd has solved everything from the clientside and wrapped it all up in a list template (.stp) file.&lt;/p&gt; &lt;p&gt;In addition to supply undelete features (and even right-shift key integration!!) he also adds the bonus of multitemplate document creation.&lt;/p&gt; &lt;p&gt;Giant kudos to Todd for this excellent piece of Sharepoint/javascript voodoomagic. In my opinion this is the final solution for undelete until WSS v3 arrives.&lt;/p&gt; &lt;p&gt;&lt;a href="http://mindsharpblogs.com/todd/archive/2005/10/06/719.aspx"&gt;Get it here!&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=426861" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>InfoPath DropDown List doesn't match on items in list</title><link>http://weblogs.asp.net/mnissen/archive/2005/10/06/426742.aspx</link><pubDate>Thu, 06 Oct 2005 12:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:426742</guid><dc:creator>madsn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=426742</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/10/06/426742.aspx#comments</comments><description>&lt;p&gt;When populating InfoPath DropDown lists with values and then binding the dropdown to a field in your main datasource you'll sometimes see the bound value instead of its corresponding text value in the dropdown on load. It seems slightly confusing given that the entry containing your bound value is actually in the list, but it doesn't match.&lt;/p&gt; &lt;p&gt;Most likely this is a string casing problem. I've got a dropdown bound to a Sharepoint (WSS) UserGroup service and bind the value to @LoginName. These values are typically DOMAIN\login.name. My main datasource however, lowercases all reference variables to avoid any confusion. Since I don't control the formatting done by the Sharepoint service my best bet is to lowercase the values of the @LoginName attributes in my secondary datasource.&lt;/p&gt; &lt;p&gt;First off I got excited by &lt;a href="http://blogs.msdn.com/infopath/archive/2005/06/17/430347.aspx"&gt;this post on the InfoPath Blog&lt;/a&gt; which feels a bit like calling C# or javascript code from regular XSLT transformations. The blog describes calling code to evaluate conditions, not setting DOM values, and furthermore there are no events you can respond to in order to call the code that will manipulate your secondary datasource values and setting them toLower.&lt;/p&gt; &lt;p&gt;Since I query my UserGroup service on form load, and this occurs before the Load event in script I was able to perform toLower (or more precicely toLowerCase()) in the load event like this:&lt;/p&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;font face="Courier New"&gt;var objXMLNodes = XDocument.GetDOM("UserService").selectNodes(&lt;/font&gt;&lt;a&gt;&lt;font face="Courier New"&gt;//@LoginName&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;);&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;for&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;(i = 0; i &amp;lt; objXMLNodes.length; i++)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objXMLNodes(i).text = objXMLNodes(i).text.toLowerCase();&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=426742" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>WebBrowser control and InvokeScript</title><link>http://weblogs.asp.net/mnissen/archive/2005/09/23/425837.aspx</link><pubDate>Fri, 23 Sep 2005 08:24:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:425837</guid><dc:creator>madsn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=425837</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/09/23/425837.aspx#comments</comments><description>&lt;p&gt;This is a little code nugget I planned to blog about a while ago, but forgot, so my recap and reasoning is not a 100% but hopefully it might be of help to someone struggelig with making the System.Windows.Forms.WebBrowser control execute scripts programatically.&lt;/p&gt; &lt;p&gt;I started out using the WebBrowser.InvokeScript method to force execution of clientside scripts in the page that was loaded in my WebBrowser control:&lt;/p&gt;&lt;font color="#008080" size="2"&gt; &lt;p&gt;&lt;font face="Courier New"&gt;HtmlWindow&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt; win = doc.Window;&lt;br /&gt;doc.InvokeScript(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Update_UI_From_Values();"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;font face="Times New Roman" size="3"&gt;This is where my reasoning is not complete (because i didn't bother to actually reproduce the original problem..), but basically it didn't work as expected. After some Reflector action I figured out that the &lt;font face="Courier New" size="2"&gt;mshtml.IHTMLWindow2.execScript&lt;/font&gt; method wasn't actually directly mapped into the new WebBrowser APIs and I figured I'd give it a go and add a reference to Microsoft.mshtml.dll (COM component Microsoft HTML Object Library):&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt; &lt;p&gt;mshtml.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;IHTMLWindow2&lt;/font&gt;&lt;font size="2"&gt; win = (mshtml.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;IHTMLWindow2&lt;/font&gt;&lt;font size="2"&gt;)propertyEditorWebBrowser.Document.Window.DomWindow;&lt;br /&gt;win.execScript(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Update_UI_From_Values();"&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"javascript"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt; &lt;p&gt;This had the desired effect and the script executed. Too bad the managed option didn't do the job.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=425837" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/.NET+General/default.aspx">.NET General</category></item><item><title>Error using VSTO 2005 Outlook Addin with VS2005 RC1</title><link>http://weblogs.asp.net/mnissen/archive/2005/09/22/425785.aspx</link><pubDate>Thu, 22 Sep 2005 12:29:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:425785</guid><dc:creator>madsn</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=425785</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/09/22/425785.aspx#comments</comments><description>&lt;p&gt;Just installed Visual Studio 2005 RC1 and reinstalled Visual Studio Tools for Office 2005 Outlook on top to continue working on my Outlook Add-in. When trying to cast a MailItem object i recieved the following error:&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;System.InvalidCastException: Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Outlook.MailItem'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063034-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))..&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Seems like something didn't register properly and after performing the following operation from the Visual Studio 2005 Command Prompt (in a folder containing the dll) I was back up and running:&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;regasm Microsoft.Office.Interop.Outlook.dll&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=425785" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/.NET+General/default.aspx">.NET General</category><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>Temporary Release of Outlook Plugin code</title><link>http://weblogs.asp.net/mnissen/archive/2005/08/23/423414.aspx</link><pubDate>Tue, 23 Aug 2005 11:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:423414</guid><dc:creator>madsn</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=423414</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/08/23/423414.aspx#comments</comments><description>&lt;p&gt;This summer I got the opportunity to demo a VSTO Outlook plugin at TechEd in Amsterdam. The demo was done on a prototype made as a proof-of-concept for a customer in the preceeding weeks (not actually the night before the demo:-). The prototype was accepted and development for production was planned to the first weeks of august.&lt;/p&gt; &lt;p align="center"&gt;&lt;img src="http://sharepoint.madsnissen.net/BlogContent/Picture036.jpg" border="1" /&gt;&lt;/p&gt; &lt;p&gt;Unfortunately this has been postponed, so to accomodate those of you out there who wants to check out the code I'm now releasing the prototype codebase.&lt;/p&gt; &lt;p&gt;I would like to stress that this was developed as a proof-of-concept. Documentation is less than poor, code quality is quite frankly very close to embarrassing, but it runs. Use it to get an idea of how it might be done.&lt;/p&gt; &lt;p&gt;The future plan for the plugin has evolved. We're currently looking into creating a very robust "Sharepoint Favorites System" to be able to keep track of favorite sharepoint sites and import such links from both sharepoint lists (online) and possibly internet explorer favorites. We're looking at keeping an offline cache of favorites and also enable offline moving of mail to Sharepoint Favorites including metadatahandling. &lt;/p&gt; &lt;p&gt;As you may well understand, a rewrite is on the way. Hopefully I will be able to publish this solution on GotDotNet or SourceForge, but no timeframe is available at the moment.&lt;/p&gt; &lt;p&gt;The prototype includes code snippets from the &lt;a href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=a4cc28b4-e626-4d0c-beb0-4c94d5bef88b"&gt;SharePad project courtesy of ILG and Microsoft&lt;/a&gt;, specifically for document property handling. &lt;/p&gt; &lt;p&gt;The VS.NET 2005 solution and source code is available &lt;a href="http://sharepoint.madsnissen.net/BlogContent/Objectware.Sharepoint.FileSaver.rar"&gt;here&lt;/a&gt;. Please use for reference and if you have ideas or suggestions please contact me. The more people interested the sooner I'll establish the project publicly.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=423414" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/.NET+General/default.aspx">.NET General</category><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category><category domain="http://weblogs.asp.net/mnissen/archive/tags/TechEd2005/default.aspx">TechEd2005</category></item><item><title>Google Earth once again available for download</title><link>http://weblogs.asp.net/mnissen/archive/2005/07/15/419502.aspx</link><pubDate>Fri, 15 Jul 2005 11:20:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:419502</guid><dc:creator>madsn</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=419502</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/07/15/419502.aspx#comments</comments><description>&lt;p&gt;And wow. Now a lot more info is coming up in the views.&amp;nbsp;All major norwegian roads and names are now rendering. Damn it's cool!&amp;nbsp;I just got stuck another 10 minutes. So. In about a week I leave for my summer vacation. Not going too far this year, spending two weeks at our cabin in Kragerø. Most tourists miss out on the southern coast of Norway in the summer, so if you're going; don't. &lt;/p&gt; &lt;p&gt;Ian Campbell&amp;nbsp;just mailed me about his upcoming &lt;a href="http://www.triplewood.com/triplewood/html/SPUtils.aspx"&gt;SMove for Sharepoint&lt;/a&gt; (move sites around with a nice steady UI), and he asked where I was going this summer. So Ian, I'm going &lt;a href="http://sharepoint.madsnissen.net/BlogContent/TheCabin.kmz"&gt;here&lt;/a&gt; this summer (load the link up in &lt;a href="http://earth.google.com"&gt;http://earth.google.com&lt;/a&gt;).&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=419502" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>Options for Aggregating Sharepoint Sub-site content</title><link>http://weblogs.asp.net/mnissen/archive/2005/07/15/419498.aspx</link><pubDate>Fri, 15 Jul 2005 10:10:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:419498</guid><dc:creator>madsn</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=419498</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/07/15/419498.aspx#comments</comments><description>&lt;p&gt;Creating aggregated views or Sharepoint content is a reoccuring topic. I've blogged about using RSS feeds to create aggregations or Roll-Ups (actually a CorasWorks trademark) &lt;A href="http://weblogs.asp.net/mnissen/archive/2005/02/04/367005.aspx"&gt;before&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;You generally have more options if the content you're aggregating (or rolling up) is located on subsites to a specific site. &lt;/p&gt; &lt;p&gt;The &lt;a href="http://www.u2u.net/software.aspx"&gt;U2U RSS Feed for Microsoft Sharepoint 2003&lt;/a&gt; will enable you to define highly customizable RSS feeds for specific lists or document libraries. Only drawback is that you actually have to define each feed, which pretty much rules out using it when your site count grows on a daily basis. For this scenario the &lt;A href="http://weblogs.asp.net/jan/archive/2004/04/26/120508.aspx"&gt;previous version that Jan created&lt;/a&gt; is more suitable, because it exposes a generic What's New feed for all sites on your server.&lt;/p&gt; &lt;p&gt;RSS enables monitoring of content, but in other scenarios you'd want to work on the aggregated content more like a ListViewWebPart. The first thing you'll run across is the &lt;a href="http://www.corasworks.net/Products/Software/WebParts/7-9rollups.html"&gt;CorasWorks Roll-upTM webparts&lt;/a&gt;. These are general purpose well crafted webparts, but have a couple of drawbacks:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;If you want the different views (TreeView, SpreadSheetView, MyView) you'll need separate licenses which makes it a bit pricy for smaller projects.&lt;/li&gt; &lt;li&gt;Only support for standard lists (Contacts, Events etc)&lt;/li&gt; &lt;li&gt;If you want to add other columns than the default ones you'll need the advanced solution which is even more pricy&lt;/li&gt; &lt;li&gt;The SpreadsheetView is not the DatasheetView. Export to excel is done with IE context menu and is less than intuitive (right clicking a group in the aggregated view will export only that group for some reason)&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;For my current project the excel export of aggregated contacts was crucial so the &lt;a href="http://www.corasworks.net/Products/Software/WebParts/7-9ctra.html"&gt;CorasWorks Contacts Roll-up&lt;/a&gt; was not the best fit.&lt;/p&gt; &lt;p&gt;In order to make the aggregated view &lt;u&gt;work just like a Sharepoint list&lt;/u&gt; it would be a good thing if it actually &lt;u&gt;was&lt;/u&gt; a Sharepoint list. I ran across the &lt;a href="http://www.omnisys.co.il/sales/main.asp?lngCategoryID=2137"&gt;Omnisys Sharepoint List Synchronizer&lt;/a&gt; (SLS) which enables you to sync lists with other lists, lists on subsites and other data sources through ODBC. SLS seemed like a good idea so I decided to install it. &lt;/p&gt; &lt;p&gt;Connecting to Sharepoint list sources produced a couple of unintuitive error messages, but I finally managed to hook up to the lists. I selected the List to Subsite connection type and ran the "synchronization". Apparently it wasn't much of a sync but more of a push from site to subsite lists. Because I was trying to do an aggregation/roll-up, the data was in my subsites, not the rootsite (which was empty) and guess what happened. SLS emptied all Contacts lists in the subsite ("synchronizing" the empty root list). This was not documented.&lt;/p&gt; &lt;p&gt;You might think I'm angry with Omnisys for this? Well, no. Because they've got another solution called the &lt;a href="http://www.omnisys.co.il/sales/main.asp?lngCategoryID=2206"&gt;PowerAggregator&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;There were no installation guide for the PowerAggregator, just an MSI, so I took the chance of installing it to the Staging environment. &lt;strong&gt;Without warning the Omnisys installer ran IISRESET on the server in the installation process&lt;/strong&gt;. This&amp;nbsp;was not documented and is really&amp;nbsp;B-A-D, and I was almost tempted to just go right away and uninstall it.&lt;/p&gt; &lt;p&gt;So now you might think I got pissed off? Well no. I knew this was a webpart and I know what's involved in installing one. I just wish they had taken the trouble to warn me or document the behaviour. Why am I so calm? Because the PowerAggregator is a great webpart. It virtually delivers most of the CorasWorks Roll-up stuff for less than half the price of one rollup. The PowerAggregator is currently $700 per server allowing you to roll up whatever you want and do a nice Excel export (the xml export is rather crappy). The CorasWorks Contacts Roll-up is currently $1500 per server, and gives you one view on only Contacts lists with fixed columns.&lt;/p&gt; &lt;p&gt;Go get it, but do mind the installation procedure and do nag them for better documentation!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=419498" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/Office+System/default.aspx">Office System</category></item><item><title>Oracle watches SQL Server Migration Assistant like hawkes</title><link>http://weblogs.asp.net/mnissen/archive/2005/07/07/418396.aspx</link><pubDate>Thu, 07 Jul 2005 17:22:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:418396</guid><dc:creator>madsn</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/mnissen/rsscomments.aspx?PostID=418396</wfw:commentRss><comments>http://weblogs.asp.net/mnissen/archive/2005/07/07/418396.aspx#comments</comments><description>&lt;p&gt;I am currently attending a session on the SQL Server Migration Assistant for Oracle. Basically a tool to get your database from Oracle to the Microsoft platform.&lt;/p&gt; &lt;p&gt;We've got a guy from Oracle in the audience:&lt;/p&gt; &lt;p&gt;&lt;img src="http://sharepoint.madsnissen.net/BlogContent/oracleguy_after.jpg" border="1" /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=418396" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/mnissen/archive/tags/TechEd2005/default.aspx">TechEd2005</category></item></channel></rss>