3

I understand from reading Arik Poznanski's blog that the Windows Ribbon UI Framework is a COM object in Windows 7, and the WindowsRibbon wrapper is just a .NET veneer around that, to allow the Ribbon UI to be used in Windows Forms applications.

I've been successful in implementing a Hello World Windows Form app that employs this wrapper:

Windows Ribbon HEllo World

It is running on my development machine, which is Windows7.


Questions:

  • Will this "hello, world" application run on Vista? XP? Do I need to download something onto those machines in order to make that happen?

  • Is there a way to specify the Windows Ribbon UI components as a pre-requisite, in an MSI installer?

Thanks


Browsing around I found the documentation for UIRibbon.dll, which is the DLL on Windows7 that delivers the Ribbon UI. It lists these as minimum supported clients:

Windows 7, Windows Vista with SP2 and Platform Update for Windows Vista

how would I check for that in an MSI ?

Cheeso
  • 189,189
  • 101
  • 473
  • 713

2 Answers2

1

Best I can tell, you are taking on a dependency that won't work on Windows XP. This doesn't seem to be a redistributable component ( although I will admit hacking on a VM trying to see if I could transplant it into an XP machine ).

Since it isn't redistributable, I'm not sure there's any point in doing a search in MSI as you can just rely on checking the OS Major version ( Win7 ).

Christopher Painter
  • 54,556
  • 6
  • 63
  • 100
  • Thanks for the reply. Ok, not available on WinXP. What about Vista? The doc page says it works on Vista with the "platform update." Any ideas on that? How would I check for that? Also - I'm curious. You did some hacking with XP. What happens when you run an app on XP, that depends on UIribbon.dll ? Did you try? – Cheeso Apr 25 '11 at 03:36
  • I only went as far as looking at it in depends and trying to see if I could get the CLSID's registered. If you look in the source code of that CodePlex project you'll find a class file that has the CLSID guid's. For an MSI, you write an AppSearch/RegLocator combination that searches the registry for that CLSID. – Christopher Painter Apr 25 '11 at 12:16
  • 1
    BTW, KB971644 is the platform update for Vista but it's only available through WSUS and Windows Update. However, it has a subcombone of KB960362 (http://support.microsoft.com/kb/960362/) which is available for download ( 4 versions for vista/2008/x86/x64 ) – Christopher Painter Apr 25 '11 at 12:31
1

You are free to use a Ribbon UI wherever you like (subject to the Ribbon license agreement; which basically asks that you don't make a half-assed version).

There are companies that created their own Ribbon controls. Some of those implementations (i.e. Microsoft's Windows Ribbon Framework) only work on Windows 7 or Windows Vista (with a download installed first).


If you want to check that the Windows Ribbon Framework is available on the client machine, try to create a UIRibbonFramework object:

IUIFramework* pFramework = NULL;
HRESULT hr = ::CoCreateInstance(
            CLSID_UIRibbonFramework, 
            NULL,
            CLSCTX_INPROC_SERVER, 
            IID_PPV_ARGS(&pFramework));
if (FAILED(hr))
{
  //Ribbon not available - fallback to something else
  return;
}
Ian Boyd
  • 246,734
  • 253
  • 869
  • 1,219