Welcome to MSDN Blogs Sign in | Join | Help

Send Groove Bugs and Feedback Directly to the Product Team

image
 Download a free trial
You can now submit your bugs or feedback directly to the Groove product team. The Groove team has set up a new Microsoft Connect site to allow you to submit and track your bugs. These bugs go directly into the product team's bug database. The bugs are handled the same as bugs submitted by internal Groove developers and testers.

How to join.

Browse to https://connect.microsoft.com/availableconnections.aspx find “Microsoft Office Groove 2007” on the list and click apply on the right. This will give you access to the site and allow you to submit bugs and feedback.

Feedback

Although finding and fixing bugs is important to the product team. Another equally import area is about collecting feedback. Feedback is super import for setting the direction of current and future features. Let us know what features you like, dislike or want to have in the next version. Just like the bugs the feedback goes directly to the product team and every piece of feedback is considered and evaluated.

Links for more Groove Information

· Learn more about all the Groove products at Microsoft Office Online

· Check out Groove Advisor for IT Professionals, Developers and Users of Groove

· Browse solutions or contact a support professional for help with Groove 2007

· Browse solutions or contact a support professional for help with Groove Server 2007

What happens to my bug after I submit it?

After you submit your bug it is automatically is added to the Groove internal bug database and is handled just like any other bug. You also can monitor the status of your bugs using the dashboard page. The dashboard page shows you information about the bug. You can also add comments and vote for bugs that others have submitted. The dashboard page shows the voting and rating status at the top. Here is a sample bug that I have submitted. This was a bug that a good friend, Ken Getz, asked me about at the ODC 2008 conference.

image

Posted by pstubbs | 1 Comments

VSTO 2005 SE Update: First the Designtime and now the Runtime

The VSTO team has released an update for the VSTO 2005 SE runtime. This fixes some Outlook issues and adds support for Visual Studio 2008. I posted last month that team released an update for the designtime and now they have released the second part; the Runtime update

Posted by pstubbs | 1 Comments

VSTO/OBA Fireside chat from Tech·Ed

Watch Steve Fox and myself discuss Office Business Applications (OBA) and how VSTO and my book VSTO for Mere Mortals helps you create OBAs. We filmed it this summer at Tech·Ed 2007 Orlando in the fish bowl. Virtual Tech·Ed has a bunch of great videos. You get to hear directly from the people who are actually creating the products and technologies you use everyday.

From the Fish Bowl! Click to Play

Visual Studio Tools for Office

Steve Fox and Paul Stubbs, Program Managers in the Visual Studio Tools for Office Group, share thoughts from their talks at Tech·Ed 2007: Breakout Session “Developing Office Business Applications with Microsoft Visual Studio Tools for Office” and the Chalk Talk “Extending Microsoft Visual Basic for Applications with Managed Code Using Visual Studio Tools for Office.” Visit Visual Studio Tools for Office and Paul’s blog for more.

Watch Now

↓ Downloads:

Zune Download ZuneWMV Download WMV
To save, right click and choose 'save target as…'.

Posted by pstubbs | 1 Comments

Office tip: Word Format Painter gets sticky

The Format Painter feature in Office is one on my favorite features. If you are not familiar with this feature it allows you to apply formatting to text based on the format of some other text in your document. I use this feature a lot while writing specs. The spec template that we use is standardized across the team to make a consistent look and feel. But many times you need to cut and paste information from other sources which may not match the spec template's styles. The Format Painter allows you to put the cursor on the source text and click the button then select the target text to apply the format to. This works great for cleaning up your docs and making them consistent. One problem though is that after you apply the format you need to click the Format Painter button again to pick up the format so you can apply it again. It would be nice if you could keep the Format Painter button toggled so that you could apply the format over and over again.

The trick is to double click on the Format Painter button to make it stick, or toggle on. This is not obvious because there are not many (any that I know of) that a single click acts like a button and a double click acts as a toggle button. This works in the new Office Ribbon and in older versions of Office as well. The help docs do mention this but it is always mentioned at the end or as a note that downplays the use of this feature.

image

Posted by pstubbs | 1 Comments
Filed under:

Breath easy with OBAs

There is still time for your company to enter the O2 OBA Challenge contest. Build an Office Business application that uses Microsoft Office system and Oracle. The grand prize is $40,000 donation and $25,000 in tech support.

Here is what you need to get started.
http://www.o2obachallenge.com/howToCompete.aspx 

image

Posted by pstubbs | 1 Comments

VSTO Beta Hands-on Labs are Live on MSDN

If you are new to VSTO the hands-on labs (HOL) are a great way to kick the tires and try out the new features. These are labs that were featured at TechEd 2007 this year in Orlando so if you were waiting to go to PDC and missed it here they are for you to try.

MSDN Virtual Lab: Building Custom Office Applications Using Microsoft Visual Studio Tools for Office Part 1 - Data Binding with Word Content Controls

  • MSDN Virtual Lab: Building Custom Office Applications Using Microsoft Visual Studio Tools for Office Part 2 - Create an Outlook Add-in with a Form Region
  • MSDN Virtual Lab: Building Custom Office Applications Using Microsoft Visual Studio Tools for Office Part 3 - Build an Excel Add-in with Ribbon and Custom Task Pane Integration
  • MSDN Virtual Lab: Building Custom Office Applications Using Microsoft Visual Studio Tools for Office Part 4 - Create a SharePoint Workflow
  • Part 4 is an especially good one to do as a HOL because VSTO Workflow projects require that you run Visual Studio 2008 on a Office SharePoint Server (MOSS). This takes a long time to setup and requires some good hardware to make it tolerable.

    Posted by pstubbs | 4 Comments

    Access 2007 Developer Extensions are now available (and free)

    Yeah!! So I have been asked about this dozens of times over the last year. "Where are the developer extensions for Access 2007?" This has been difficult to find in the past for Access 97 and 2000, because they were always part of something else like the Microsoft Office 2000 Developer Edition sku. Then with the release of Office 2003 the developer extensions were sucked into the VSTO 2005 sku.

    So to end this little walk down memory lane we end at a place were we should have been all along, a simple, easy and free download for our Access developer community.

    Here is the link for the 2007 Access Developer Extensions:

    http://www.microsoft.com/downloads/details.aspx?FamilyId=D96A8358-ECE4-4BEE-A844-F81856DCEB67&displaylang=en

    Here is the link for the 2007 Access Runtime:

    http://www.microsoft.com/downloads/details.aspx?FamilyId=D9AE78D9-9DC6-4B38-9FA6-2C745A175AED&displaylang=en

    Posted by pstubbs | 2 Comments

    OBA Central brings it all together

    OBA Central is a OBA community site that brings together partner information around Office Business Applications (OBA). The site allows you to find OBA partners and solutions and also share your own solutions with others in the community.

    image

    Posted by pstubbs | 1 Comments

    Extending VBA with VSTO 3.0

    Although VBA has been very successful as a customization tool for Office, there are new tools such as VSTO which can take your applications to the next level. But you want to be able to leverage the existing investment that you already have in VBA. Now VSTO 3.0 makes this super easy. Just by setting a single property in your VSTO code you can access the VSTO code from your VBA project with full intellisense support.

    1.Create a new VSTO VB Word or Excel project.

    2.Set the EnableVbaCaller to True. When you flip this to true the VSTO project system does all the work to make this available to the VBA project.

    3. F5 to run the project.

    4. Write your VBA code to call the VSTO code. You can see the VBA helper code, CallVSTOAssembly, which was written by the VSTO project system when you set the EnableVbaCaller to true. You can also see that you now have intellisense support as well.

    That's it. For VB projects that is all you need to do. You can set EnableVbaCallers for any HostItem (ThisWorkbook, Sheet1,Sheet2, etc or ThisDocument for Word). You can also do this using C#, although you must do all of the steps by hand. In addition to passing HostItems, you can pass your own custom types. I will be at TechEd 2007 in Orlando next week and will be doing a talk on VBA Interop (OFC07-TLC, Wednesday, June 06, 2007 2:00 PM-3:15 PM) Stop by and watch me walk through all of these simple and advanced scenarios. And if you don't get a chance to make the talk come by the VSTO booth and talk about the "Sunshine".

    Posted by pstubbs | 1 Comments

    Sync Outlook Appointments with Groove using VSTO

    Both Outlook and Groove contain calendars so which one do you use? Each one has its own strengths but it would be cool to be able to sync your appointments. I have created a small sample using VSTO and the Groove SDK that will allow you to import and export appointments from Outlook to Groove. I started in my last post, Groove'n with VSTO, where I showed you how to connect to Groove using webservices.  Now I will continue with the sample application and add support for importing Calendar items.

    First I created a Ribbon for the Appointment inspector that allows you to choose the account and workspace you want to pull the calendar from.

    Most of this code for the above screens was in the last post so I wont' go over it again, although I did refactor it quite a bit as I went along. The next this is to click "Add from Groove" to select an appointment to import.

    I created the calendar picker to let you select the day with appointments, in bold, and then the entry for that day.

    Click Import to import the Groove appointment into outlook.

    Here is the Groove appointment

    Now imported into Outlook.

    After you get a reference to the Groove workspace you can interate through the tools until you find the calendar tools.

     

            public static List<GrooveTools.Tool> Tools(GrooveSpaces.Space workspace)
            {
                GrooveTools.GrooveTools tools = new GrooveServices.GrooveTools.GrooveTools();
                tools.GrooveRequestHeaderValue = new GrooveServices.GrooveTools.GrooveRequestHeader();
    
                tools.GrooveRequestHeaderValue.GrooveIdentityURL = workspace.IdentityURL;
                tools.GrooveRequestHeaderValue.GrooveRequestKey = RequestKey;
                tools.Url = HostPortAddress + workspace.Tools;
    
                List<GrooveTools.Tool> toolsList = new List<GrooveServices.GrooveTools.Tool>();
                toolsList.AddRange(tools.Read());
    
                return toolsList;
            }
            public static List<GrooveCalendar.GrooveCalendar> Calendars(GrooveSpaces.Space workspace)
            {
                List<GrooveCalendar.GrooveCalendar> calendars = new List<GrooveCalendar.GrooveCalendar>();
                string calendarType = "urn:groove.net:platform.tools.Calendar";
    
                foreach (GrooveTools.Tool tool in Tools(workspace))
                {
                    if (tool.Type == calendarType)
                    {
                        GrooveCalendar.GrooveCalendar calendar = new GrooveServices.GrooveCalendar.GrooveCalendar();
                        calendar.GrooveRequestHeaderValue = new GrooveServices.GrooveCalendar.GrooveRequestHeader();
    
                        calendar.GrooveRequestHeaderValue.GrooveIdentityURL = workspace.IdentityURL;
                        calendar.GrooveRequestHeaderValue.GrooveRequestKey = RequestKey;
                        calendar.Url = HostPortAddress + tool.Data;
    
                        calendars.Add(calendar);
                    }
                }
    
                return calendars;
            }

    Now I just show the calendar picker and populate the outlook appointment. One thing I don't deal with yet in this sample is the fact that you could have mulitple calendar tools in a workspace. But it should be easy enough to just add another drop down to let the user pick the calendar.

                //Show the Calendar entries
                foreach (GrooveServices.GrooveCalendar.GrooveCalendar calendar in
                    GrooveServices.GrooveHelper.Calendars(workspace))
                {
                    GrooveCalendarPicker gcp = new GrooveCalendarPicker(calendar);
                    gcp.ShowDialog();

                    if (gcp.calendarEntriesListBox.SelectedIndex >= 0)
                    {
                        GrooveServices.GrooveCalendar.CalendarEntry calEntry =
                            (GrooveServices.GrooveCalendar.CalendarEntry)gcp.calendarEntriesListBox.SelectedItem;

                        appointment.Subject = calEntry.Description;
                        appointment.Start = calEntry.Start;
                        appointment.End = calEntry.End;
                        appointment.Body = calEntry.Details;
                        appointment.AllDayEvent = calEntry.AllDay;
                    }
                }

    In the next post I hope to show you how to export your Outlook appointment to Groove.

    Also Abbott who is the product manager for Groove pointed out that much of the helper code that I am writing in part of Groove Helpers. This is really cool, once I get down exploring the hard way I would like to go back and port my code to the Groove Helper.

    If your at TechEd 2007 in Orlando next week, stop by the VSTO booth and talk to me about the code in detail.

    Posted by pstubbs | 1 Comments
    Filed under:

    Windows Home Server is Toast

    I have been using the Windows Home Server at home for a few months now and I love it. The reason I love it is because it's just like making toast. What I mean is that when you wake up in the morning and go downstairs to make breakfast, you put the bread in the toaster and push the slider down. That's it. Brilliantly simple. I just want to make toast and the toaster does that one thing perfectly every time. Oh sure I could get the toaster oven which makes toast and bagels and sandwiches and whatever else but that is just too much when all I want is toast. Windows Home Server has been a just making toast experience for me. I installed the software one afternoon after a couple of simple questions like the name of my server and password. After that I haven't touched it. It just sits on the top shelf and runs. No rebooting, no messing with settings, nothing it just works, just like my toaster.

    If you are not familiar with Windows Home Server, it is a new Server SKU that allows you to store files on a central server for your home. What is great is the way the files and drives are handled. You just add a bunch of random hard drives and they all appear as one logical space. You don't need to think about running out of space on the X: drive. You just have space and if it gets low, throw another drive in and now you have more space. The server deals with the magic of how this happens. Also the drives don't need to be the same size or type. So you can buy just enough space now and as drive prices fall you can buy more space later. What happens when you run out of room in the case? No problem you can also attach external USB drives and they just get added to the pool of available space. And if a drive fails just stick in a new one and the server makes sure that no data is lost. The server will also backup your home computers as well and intelligently store the files. You can browse the backups and go back in time and recover individual files from a particular backup. You can also access the server from the Internet to get your files or Terminal Serve in to your home machines from the road.

    Here is a great ad for Windows Home Server with Billg.


    Video: Microsoft Home Server HP Commercial
    Posted by pstubbs | 0 Comments

    Groove'n with VSTO

    Groove is an excellent Office application for team collaboration. You can also take advantage of the Groove platform from other applications like your VSTO add-ins. Let's take a look at how we can integrate Groove into Outlook using VSTO to create powerful Office Business Applications (OBAs). Groove exposes much of its functionality via a web services API. This groove web service is hosted by the Groove client itself. You can also use web services exposed via the Groove server but I'll save that for another post. In this case we will talk directly to the Groove client using VSTO from an Outlook 2007 add-in.

    First start by creating a new C# VSTO Outlook 2007 add-in. The next thing you want to do is create a class library, called GrooveServices, to isolate all of the Groove service code. While this isn't strictly required it will make it easy to reuse Groove services in all of your add-ins.

    Adding the Groove Web References

    You need to add a web reference to the groove services. But since the Groove client is the service host you can't just browse to it like you would with an .asmx service. So you will need to point to the wsdl file. The wsdl files are in the Groove SDK. After you have downloaded and installed the SDK you will find the wsdl files in C:\Program Files\Microsoft Office 2007 Developer Resources\Microsoft Office Groove 2007 SDK\Lib\XMIs\2.0\wsdl\ folder (if you did a default install). You will need to add a web reference to each one. In Visual Studio Orcas .Net FX 3.5 projects you can only add "Service References". In the June CTP this does not work with the Groove wsdl files but you can still add them as a web reference. Right-Click on the Service References node and choose Add Service Reference then at the bottom of the dialog click on the 'Advance' button. This will open another dialog that will allow you to add a web reference (see the image below). This will bring up the old style add web reference dialog.

    Add a web reference to each wsdl file below by pasting in the full path to the wsdl file and rename the service to match the wsdl name without the wsdl extension. For example rename GrooveAccounts.wsdl to GrooveAccounts. This is important because the events helper code in the SDK depends on this naming convention.

    GrooveAccounts.wsdl
    GrooveApplication.wsdl
    GrooveCalendar.wsdl
    GrooveContacts.wsdl
    GrooveEvents.wsdl
    GrooveFilesBase64.wsdl
    GrooveForms2.wsdl
    GrooveLocal.wsdl
    GrooveMembers.wsdl
    GrooveMessages.wsdl
    GrooveProperties.wsdl
    GrooveSpaces.wsdl
    GrooveSubscriptions.wsdl
    GrooveTools.wsdl
    GrooveVCard.wsdl

    The Groove SDK contains a helper file to hook up events using the web services. Add the GrooveEventData.cs file to support events. Located in the C:\Program Files\Microsoft Office 2007 Developer Resources\Microsoft Office Groove 2007 SDK\Lib\DotNet\GrooveEvents folder. OK so now you have all of the Groove services referenced. Add a project reference to the GrooveServices project from your Outlook project and build just to make sure everything is ok before we continue.

    Adding the Groove Code

    There will be lots of common plumbing code to program Groove. Add a class to the GrooveServices library called GrooveHelper. This class will be where we put common code that may be used by all of our add-ins. There are 2 pieces of information we need to call Groove the first is the service key this is a key that is generated by groove and the second is the port that Groove is listening on, which can be dynamic. Add the following 2 static properties to the GrooveHelper class.

     

            public static string RequestKey
            {
                get
                {
                    Microsoft.Win32.RegistryKey grooveWebServicesRegKey =
                        Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
                        "Software\\Microsoft\\Office\\12.0\\Groove\\WebServices");
                    //Request key required for local SOAP access
                    string requestKey = grooveWebServicesRegKey.GetValue("LocalRequestKey").ToString();
                    return requestKey;
                }
            }
    
            public static string HostPortAddress
            {
                get
                {
                    string localPort;
                    string hostPortAddress;
                    //Groove registers a port dynamically, which defaults to 9080, but can change
                    //Local web service clients must check this registry variable to connect to
                    // Groove before each web service call
                    Microsoft.Win32.RegistryKey grooveWebServiceHTTPPortRegKey =
                        Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
                        "Software\\Microsoft\\Office\\12.0\\Groove");
                    // for localo access, do the following
                    localPort = grooveWebServiceHTTPPortRegKey.GetValue("GrooveLocalHTTPPort").ToString();
                    hostPortAddress = "http://localhost:" + localPort;
                    string grooveHost = hostPortAddress;
                    return grooveHost;
                }
            }
    List the Groove Accounts
    Now you are finally ready to call Groove. Let's start with a simple routine to list all of the accounts that Groove knows about. First add a Ribbon called GrooveRibbon. Add a button called Accounts. We just need a button to trigger the Accounts listing. In the event handler for the button add the following code. Be sure to add a reference to System.Web.Services to your Outlook add-in project.
     
    private void AccountsButton_Click(object sender, RibbonControlEventArgs e)
    {
        //list Groove Accounts    GrooveServices.GrooveAccounts.GrooveAccounts accounts = new GrooveServices.GrooveAccounts.GrooveAccounts();
        accounts.GrooveRequestHeaderValue = new GrooveServices.GrooveAccounts.GrooveRequestHeader();

        accounts.GrooveRequestHeaderValue.GrooveRequestKey = GrooveServices.GrooveHelper.RequestKey;
        accounts.Url = GrooveServices.GrooveHelper.HostPortAddress + "/GWS/Groove/2.0/Accounts/";

        //Read the accounts
        GrooveServices.GrooveAccounts.Account2[] theAccounts = accounts.Read2();

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < theAccounts.Length; i++)
        {
            sb.AppendLine("Account " + i);

            GrooveServices.GrooveAccounts.Account2 acct = theAccounts[i];
            string accountName = acct.Name;
            string accountURI = acct.URI;
            string contactsURI = acct.Contacts;
            string messagesURI = acct.Messages;

            sb.AppendLine(accountName + " " + accountURI + " " + contactsURI + " " + messagesURI);

            for (int j = 0; j < acct.Identities.Length; j++)
            {
                GrooveServices.GrooveAccounts.Identity2 ident = acct.Identities[j];
                string identityName = ident.Name;
                string identityURL = ident.URI;
                string spacesURI = ident.Spaces;

                sb.AppendLine("identity " + j + " " + identityName + " " + identityURL + " " +spacesURI);
            }
        }

        System.Windows.Forms.MessageBox.Show(sb.ToString());
    }
    }
     

     Run the project. This will display all of the accounts in a messagebox.

    In upcoming posts we will refactor this code into the GrooveHelper class so that we can use the account information to get to the actual workspaces. Much of this code is taken directly from the SDK help so you should be able to dig around the other parts now that the services are all hooked up. As we continue to build this sample you will see how we can integrate this more tightly with Outlook. But for now you have the basics to begin Groove'n in Outlook.

    Posted by pstubbs | 5 Comments
    Filed under:

    VSTO: My Favorite Feature - ClickOnce Deployment

    One of my favorite features in the latest version of VSTO is ClickOnce Deployment. ClickOnce deployment makes securely deploying my Office add-in and document level solutions easy. VSTO deployment supports, Local, HTTP, UNC, CD/DVD and USB locations. This gives you the flexibility to deploy your application where it makes sense for you.  Deployment also supports offline, automatic updating and rollback. Oh, I know that it was challenging in the past. But now in VSTO Orcas all of that CASPOL messiness is behind us. Still can't believe it, let's walk through a simple deployment scenario.

    1. Create a new VSTO project.

    2. Run the Publish Wizard

    3. Or Set the Publish properties for more control

    4. Install the published Add-in

    5. Allow the add-in to install

    6. Done! It's installed and trusted

    7.Run Office

    You can verify that the add-in is installed and running.

    That's it. Super simple. The next CTP and Beta 2 of Visual Studio Orcas will contain all of the new deployment features of VSTO. 

    Posted by pstubbs | 10 Comments
    Filed under: , ,

    Simple VBA Interop using VB and VSTO

    VSTO provides a simple way for you to call your managed code using VSTO. In this Channel 9 Screencast Eric walks you through a simple example using VBA to VB interop. I will be walking through more complex examples in future posts and will also be presenting VBA interop at TechEd 2007.

     

    Watch Now

    Posted by pstubbs | 0 Comments
    More Posts Next page »
     
    Page view tracker