July 2005 - Posts

Google Earth once again available for download
15 July 05 01:20 PM | madsn | 4 comment(s)

And wow. Now a lot more info is coming up in the views. All major norwegian roads and names are now rendering. Damn it's cool! 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.

Ian Campbell just mailed me about his upcoming SMove for Sharepoint (move sites around with a nice steady UI), and he asked where I was going this summer. So Ian, I'm going here this summer (load the link up in http://earth.google.com).

Filed under:
Options for Aggregating Sharepoint Sub-site content
15 July 05 12:10 PM | madsn | 4 comment(s)

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

You generally have more options if the content you're aggregating (or rolling up) is located on subsites to a specific site.

The U2U RSS Feed for Microsoft Sharepoint 2003 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 previous version that Jan created is more suitable, because it exposes a generic What's New feed for all sites on your server.

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 CorasWorks Roll-upTM webparts. These are general purpose well crafted webparts, but have a couple of drawbacks:

  1. If you want the different views (TreeView, SpreadSheetView, MyView) you'll need separate licenses which makes it a bit pricy for smaller projects.
  2. Only support for standard lists (Contacts, Events etc)
  3. If you want to add other columns than the default ones you'll need the advanced solution which is even more pricy
  4. 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)

For my current project the excel export of aggregated contacts was crucial so the CorasWorks Contacts Roll-up was not the best fit.

In order to make the aggregated view work just like a Sharepoint list it would be a good thing if it actually was a Sharepoint list. I ran across the Omnisys Sharepoint List Synchronizer (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.

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.

You might think I'm angry with Omnisys for this? Well, no. Because they've got another solution called the PowerAggregator.

There were no installation guide for the PowerAggregator, just an MSI, so I took the chance of installing it to the Staging environment. Without warning the Omnisys installer ran IISRESET on the server in the installation process. This was not documented and is really B-A-D, and I was almost tempted to just go right away and uninstall it.

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.

Go get it, but do mind the installation procedure and do nag them for better documentation!

Filed under:
Oracle watches SQL Server Migration Assistant like hawkes
07 July 05 07:22 PM | madsn | 13 comment(s)

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.

We've got a guy from Oracle in the audience:

 

 

Filed under:
MVP Awarded
07 July 05 05:18 PM | madsn | 13 comment(s)

Last friday I got the email. I have been given the honor of the Most Valuable Professional title/award/membership. Today my profile was made public on the MVP site, and I attended the MVP lunch where MVP program manager Sean O'Driscoll gave a good overview of the program.

I'm very pleased and excited about beeing in the same crowd as all those other professionals who are contributing all over the world.

It's been a good week:-)

VSTO Demo at TechEd
07 July 05 05:06 PM | madsn | 8 comment(s)

Today I was lucky enough to get the opportunity to do a demo in Mike Fitzmaurices session on Sharepoint/Exchange integration and, later on, at Andrew Whitechapels session on VSTO.

The demo was on the the Visual Studio Tools for Office 2005 Outlook Add-in I've been working on lately. Basically it allows you to store mail in document libraries efficiently including dynamic metadata handling. As I said in the session we've been so fortunate to have the customer (Lorentzen & Stemoco) approve the release of the solution to the general public. There is still some stuff that needs to be resolved, but I will blog about it as soon as it's out. BTW: in some time Microsoft will release a customer evidence video on the solution at Lorentzen & Stemoco.

Feel free to let me know that you're interested. I might ask for advice on how to release the code (sourceforge/gdn/simple download?). I'm also interested in hearing about how you want to use it, or what you might want to add to it.

Off-topic I've been so fortunate to get confirmed that all my friends in London is ok. My sympathies to the ones affected by this tragedy.

 

TechEd '05 Commenced - where are the v-celebs?
05 July 05 08:34 AM | madsn | with no comments

Well, it's 0817 and I'm already registered at Teched and hooked up to the wlan. This rare occasion of early-birdness was not by my free will, but more an upside of the construction-guys powering up the jackhammer outside my hotel window at 0700hrs (anything before eight o'clock is in military time in my world). Anyways I'm good to go!

Last night we went for a boatride with dinner with the norwegian crowd. Speakers Mark Bower and Jessica Gruber of Microsoft UK came along. We had a lot of fun, but covered some serious topics aswell. Most importantly we finally put a name on the phenomenon: What do you call the "geek-celebs"? You know the guys that gets the best ratings at teched, drawing the most people and are pretty close to autographing last years orange bag for the most dedicated of nerds:

v-celebs ('vE dash ce·lebs)
Term derived from "vertical-celebrities" and rewritten in the Microsoft in-house consultant email-style to reflect their status as close to, or inside the mothership.

Finally we can differentiate between "Hey! Look! A celeb" (someone has spotted David Beckam) and "Hey! Look! A v-celeb!" (someone has spotted Don Box)

Happy conferencing!

Filed under:
Make VSTO for Outlook solutions run right off the MSI
01 July 05 06:50 PM | madsn | 9 comment(s)

UPDATE: Installer class with uninstall logic here.

There are a couple of things you've got to do manually to make a Visual Studio Tools for Office 2005 application run straight off the MSI. I'm talking about the Outlook add-in project here, and there is no ClickOnce around.

With the standard setup for Outlook add-in projects in Visual Studio 2005 there are two things missing after you've run the MSI from the included setup project on the client machine:

  • A couple of VSTO and Office related dlls (Should have been loaded from shared but for some reason they need to be in the local dir)
  • Code Access Security settings granting your VSTO for Outlook addin rights to do what it wants

The first one is easy. Simply add a reference to Microsoft.Office.Tools.Common.dll to the Outlook project and it will be included in the setup. Also enable the files Microsoft.Office.Tools.Outlook.dll and Microsoft.VisualStudio.Tools.Applications.Runtime.dll in the Setup project so it is included with the MSI and placed in the target application directory on the client machine.

Then you'll need to handle CAS. You need to create a custom Installer class to do this work. Based on this article I've created the following installer class and added it as a custom action in my Installer.

[RunInstaller(true)]

public class Installer : System.Configuration.Install.Installer

{

    public Installer()

    {

    }

 

    public override void Install(System.Collections.IDictionary stateSaver)

    {

        base.Install(stateSaver);

 

        try

        {

            // Find the machine policy level

            PolicyLevel machinePolicyLevel = null;

            System.Collections.IEnumerator policyHierarchy = SecurityManager.PolicyHierarchy();

 

            while (policyHierarchy.MoveNext())

            {

                PolicyLevel level = (PolicyLevel)policyHierarchy.Current;

                if (level.Label == "Machine")

                {

                    machinePolicyLevel = level;

                    break;

                }

            }

 

            if (machinePolicyLevel == null)

            {

                throw new ApplicationException(

                    "Could not find Machine Policy level. Code Access Security "+

                    "is not configured for this application."

                    );

            }

 

            // Create a new FullTrust permission set

            PermissionSet permissionSet = new NamedPermissionSet("FullTrust");

           

            // Get the install directory of the current installer

            string assemblyPath = this.Context.Parameters["assemblypath"];

            string installDirectory =

                assemblyPath.Substring(0, assemblyPath.LastIndexOf("\\"));

 
            if (!installDirectory.EndsWith(@"\"))
               installDirectory +=
@"\";

            installDirectory += "*";

            IMembershipCondition membershipCondition =

                new UrlMembershipCondition(installDirectory);

 

            // Create the code group

            PolicyStatement policyStatement = new PolicyStatement(permissionSet);

            CodeGroup codeGroup = new UnionCodeGroup(membershipCondition, policyStatement);

            codeGroup.Description = "VSTO Permissions for Objectware AS Plugins";

            codeGroup.Name = "Objectware AS";

 

            // Add the code group

            machinePolicyLevel.RootCodeGroup.AddChild(codeGroup);

 

            // Save changes

            SecurityManager.SavePolicy();

        }

        catch (Exception ex)

        {

            System.Windows.Forms.MessageBox.Show(ex.ToString());

        }

    }

}

 

Filed under:
More Posts

This Blog

Funstuff

Goodies

MSCRM Blogs

My (old) work

Sharepoint

Useful reading

Weblogs

Syndication