Могу ли я использовать Windows Ribbon UI в Windows XP? как?

Читая блог Арика Познанского, я понимаю , что Windows Ribbon UI Framework - это COM-объект в Windows 7, а оболочка WindowsRibbon - это просто оболочка.NET, позволяющая использовать Ribbon UI в приложениях Windows Forms.

Я успешно реализовал приложение Hello World для Windows Form, в котором используется эта оболочка:

Windows Лента HEllo World

Он работает на моей машине разработки, которая является Windows7.


Вопросы:

  • Будет ли это приложение "привет, мир" работать в Vista? XP? Нужно ли что-то загружать на эти машины, чтобы это произошло?

  • Есть ли способ указать компоненты пользовательского интерфейса Windows Ribbon в качестве предварительного условия в программе установки MSI?

Спасибо


Просматривая вокруг, я нашел документацию для UIRibbon.dll, которая является библиотекой DLL в Windows7, которая предоставляет интерфейс ленты. Это перечисляет их как минимально поддерживаемых клиентов:

Windows 7, Windows Vista с пакетом обновления 2 (SP2) и обновление платформы для Windows Vista

Как я могу проверить это в MSI?

2 ответа

Решение

Насколько я могу судить, вы получаете зависимость, которая не будет работать в Windows XP. Похоже, это не распространяемый компонент (хотя я допущу взлом виртуальной машины, пытаясь проверить, смогу ли я перенести ее на компьютер с XP).

Поскольку он не распространяется, я не уверен, что есть смысл выполнять поиск в MSI, поскольку вы можете просто полагаться на проверку основной версии ОС ( Win7).

Вы можете использовать ленточный интерфейс в любом месте (в соответствии с лицензионным соглашением на ленточку; в сущности, вам не нужно делать половинную версию).

Есть компании, которые создали свои собственные элементы управления ленты. Некоторые из этих реализаций (например, Microsoft Windows Ribbon Framework) работают только в Windows 7 или Windows Vista (сначала должна быть установлена ​​загрузка).


Если вы хотите проверить доступность Windows Ribbon Framework на клиентском компьютере, попробуйте создать UIRibbonFramework объект:

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;
}
Другие вопросы по тегам