Средства для ИТ-специалистов
В первой части обзора «Windows Vista / Windows 7 – вопросы совместимости приложений» мы остановились на том, что создали набор «заплаток», позволяющих решить проблемы совместимости. С точки зрения пользователей, мы просто указали какие-то опции, обеспечившие работоспособность приложения. На самом деле, мы задействовали инфраструктуру обеспечения совместимости приложений – Application Compatibility Infrastructure, которая, как мы знаем из предыдущей части, является частью современных операционных систем семейства Windows.
Результат наших манипуляций с опциями на вкладке «Совместимость» был сохранен в реестре – в ветви HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionAppCompatFlagsLayers. В соответствующей записи в этой ветви реестра будут указаны примененные к приложению системные «заплатки».
Такой подход хорошо работает для исправления приложений, расположенных на одном компьютере (и более того, будет работать для всех версий приложения – пока не изменится название его загрузочного файла), но когда приложение используется в целой организации, выполнение манипуляций с вкладкой «Совместимость» на каждом компьютере слишком затратно и может привести к внесению ошибок. Также не рекомендуется, без лишней надобности, пользоваться утилитой regedit для внесения исправлений в реестр. Для того, чтобы сделать набор «заплаток» отторгаемым от конкретного компьютера следует использовать утилиту Compatibility Administrator, которая входит в состав Microsoft Application Compatibility Toolkit – этот набор утилит для ИТ-специалистов можно бесплатно загрузить с сайта Microsoft по адресу http://www.microsoft.com/downloads/details.aspx?familyid=24da89e9-b581-47b0-b45e-492dd6da2971. С помощью этого набора утилит, а точнее, с помощью входящей в его состав утилиты Compatibility Administrator, мы можем повторить все действия, которые мы выполняли на уровне вкладки «Совместимость», но сохранить результаты не в реестре, а в специальном файле, который называется System Database (.sdb).
Запустим утилиту Compatibility Administrator под учетной записью «администратор» - в древовидном списке в левой части экрана в разделе Per User Compatibility Settings мы увидим настройки, внесенные нами через вкладку «Совместимость».
Давайте используем возможности утилиты Compatibility Administrator для того, чтобы создать набор «заплаток», который будет привязан не только к конкретному пользователю, но и который можно будет распростарить на все компьютеры в организации. В разделе Custom Databases выберем элемент New Database(1) [Untitled_1], нажмем на нем правую кнопку мыши и выберем команду Create New | Application Fix. В диалоговой панели Create new Application Fix укажем название приложения, имя производителя и местоположение исполняемого файла приложения.
Нажмем кнопку Далее и в диалоговой панели Compatibility Modes выберем опцию Microsoft Windows XP (SP2).
Еще раз нажмем кнопку Далее и в панели Compatibility Fixes включим «заплатку» Disable Themes.
После нажатия кнопки Далее в панели Matching Information убедимся в том, что наши «заплатки» относятся только к конкретной версии приложения.
Нажмем кнопку Готово и убедимся в том, что набор «заплаток» для выбранного нами приложения успешно создан.
Воспользуемся кнопкой Save в панели инструментов для сохранения нашего набора «заплаток» в файле – в нашем примере мы назовем этот набор AdobeFix и сохраним его в каталоге C:SDBShare с именем ReaderFix.sdb.
Нажатие правой кнопки в разделе Custom Databases | AdobeFix и выбор команды Install приведет к развертыванию нашего набора «заплаток» на данном компьютере. Если же мы хотим развернуть созданный нами набор «заплаток» на других компьютерах, следует воспользоваться утилитой %windir%system32sdbinst.exe. Синтаксис для нашего примера будет выглядеть так:
C:>sdbinst c:SDBShareReaderFix.sdb
При необходимости такая команда может быть включена в состав логон-скриптов, групповых политик, в состав SMS-пакета или выполнена как часть пакета установки приложения.
Для включения набора «заплаток» в пакет установки приложения можно использовать следующий скритп, который затем разворачивается либо средствами SCCM, либо Active Directory Group Policies:
msidbCustomActionTypeVBScript + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 0x0C06
Для развертывания .SDB-файла средствами Visual Basic Script можно использовать следующий код:
Function Install Dim WshShell Set WshShell = CreateObject("WScript.Shell") WshShell.Run "sdbinst.exe -q " & CHR(34) & "c:sdbsharestockviewerfixes.sdb" & CHR(34), 0, true WshShell.Run "cmd.exe /c " & CHR(34) & "del " & CHR(34) & c:sdbsharestockviewerfixes.sdb " & CHR(34) & CHR(34), 0 WshShell.Run "reg.exe delete HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall {SDB_GUID}.sdb /f", 0 End Function Function UnInstall Dim WshShell Set WshShell = CreateObject("WScript.Shell") WshShell.Run "sdbinst.exe -q -u -g {SDB_GUID}", 0 End Function
Значение SDB_GUID можно получить нажав правую кнопку мыши на соответствующем наборе заплаток в Compatibility Assistant и выбрав команду Properties.
Отметим, что для того, чтобы запретить загрузку и обновление версий продукта, тем самым обеспечив работоспособность текущей версии с примененными «заплатками» можно использовать утилиту AppLocker, появившуюся в Windows 7 или соответствующие настройки политик в Windows Vista.
Утилита Compatibility Administrator позволяет посмотреть, какие приложения установлены на компьютеры и требуют «заплаток» для запуска – для этого используется команда Search | Fixed programs. В диалоговой панели Search for Fixes можно указать, где искать (по умолчанию - C:Program Files*.exe), какие типы исправлений показывать – Entries with Compatibility Fixes (приложения с «заплатками»), Entries with Compatibility Modes (приложения, к которым применены т.н. уровни совместимости) и Entries with AppHelp (приложения, имеющие специальные записи для утилиты AppHelp). По завершении поиска мы получим список приложений с указанием программного компонента, типа исправления и местоположения исправления – в глобальной или локальной базе данных. Двойной щелчок мышью по элементу списка позволяет получить детальную информацию о примененных к приложению исправлениях.
Изучение базы данных, содержащей «заплатки» для различных приложений, позволяет создать список наиболее «популярных» заплаток. На первом месте – заплатки, связанные с версией операционной системы и т.н. уровни совместимости, которые позволяют эмулировать поведение определенной версии операционной системы. Также среди наиболее часто применяемых заплаток встречаются заплатки, связанные с работой с реестром и файловой системой. Далее следуют более специфичные заплатки, воспроизводящие те или иные функции, реализованные в предыдущих версиях операционной системы.
Другие возможности Microsoft Application Compatibility Toolkit
Утилита Compatibility Administrator играет важную роль для создания наборов заплаток для определенных приложений, но помимо нее в состав Microsoft Application Compatibility Toolkit входит ряд других полезных приложений. Среди них:
- Application Compatibility Manager – средство, позволяющее собирать данные о приложениях, установленных в компании и исправлять их работу перед развертыванием новой версии операционной системы. Для работы ACM требуется наличие на компьютере установленной версии SQL Server 2005 или 2008
- Standard User Analyzer – позволяет протестировать приложения на совместимость с технологией User Account Control (UAC), появившейся в Windows Vista и поддерживаемой в Windows 7. Данная утилита предоставляет информацию о потенциальных проблемах с использованием файловой системы, реестра, программных интерфейсов, INI-файлов, привилегий, пространств имен, процессов и т.п. при работе приложения под учетной записью «стандартный пользователь»
- Setup Analysis Tool – данная утилита позволяет определить потенциальные проблемы при установке и конфигурации приложений. Некоторые типы компонентов, такие как драйвера и динамические библиотеки Graphical Identification and Authentication (GINA) устанавливаются в каталоги, отличные от каталогов, в которые устанавливаются сами приложения. Таким образом, если такие компоненты не совместимы с текущей версией операционной системы, сложно определить причину неработоспособности приложения – в этих случаях мониторинг процесса установки позволяет обнаружить потенциальные несовместимости
- Internet Explorer Compatibility Test Tool – собирает информацию в потенциальных проблемах с выполнением страниц в Internet Explorer и загружает собранные данные в ACT Log Processing Services для обработки найденных проблем и определения оптимальных путей их решения.
В этом обзоре мы рассмотрели, как, используя утилиту Compatibility Administrator, создать набор «заплаток» для приложения и, при необходимости, использовать его для исправления работы приложений на всех компьютерах в организации. В следующей части мы приведем основные рекомендации по созданию совместимых приложений для разработчиков.
Продолжение следует...