Могу ли я использовать Windows Ribbon UI в Windows XP? как?
Читая блог Арика Познанского, я понимаю , что Windows Ribbon UI Framework - это COM-объект в Windows 7, а оболочка WindowsRibbon - это просто оболочка.NET, позволяющая использовать Ribbon UI в приложениях Windows Forms.
Я успешно реализовал приложение Hello World для Windows Form, в котором используется эта оболочка:
Он работает на моей машине разработки, которая является 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;
}