Windows Vista / Windows 7 – вопросы совместимости приложений


Средства для ИТ-специалистов

В первой части обзора «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 укажем название приложения, имя производителя и местоположение исполняемого файла приложения.Создание набора заплаток - шаг 1

Создание набора «заплаток» - шаг 1

Нажмем кнопку Далее и в диалоговой панели Compatibility Modes выберем опцию Microsoft Windows XP (SP2).Создание набора заплаток - шаг 2

Создание набора «заплаток» - шаг 2

Еще раз нажмем кнопку Далее и в панели Compatibility Fixes включим «заплатку» Disable Themes.Создание набора заплаток - шаг 3

Создание набора «заплаток» - шаг 3

После нажатия кнопки Далее в панели Matching Information убедимся в том, что наши «заплатки» относятся только к конкретной версии приложения.Создание набора заплаток - шаг 4

Создание набора «заплаток» - шаг 4

Нажмем кнопку Готово и убедимся в том, что набор «заплаток» для выбранного нами приложения успешно создан.Набор заплаток для выбранного приложения

Набор «заплаток» для выбранного приложения

Воспользуемся кнопкой 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). По завершении поиска мы получим список приложений с указанием программного компонента, типа исправления и местоположения исправления – в глобальной или локальной базе данных. Двойной щелчок мышью по элементу списка позволяет получить детальную информацию о примененных к приложению исправлениях.Панель Search for Fixes и результаты поиска

Панель «Search for Fixes» и результаты поиска

Изучение базы данных, содержащей «заплатки» для различных приложений, позволяет создать список наиболее «популярных» заплаток. На первом месте – заплатки, связанные с версией операционной системы и т.н. уровни совместимости, которые позволяют эмулировать поведение определенной версии операционной системы. Также среди наиболее часто применяемых заплаток встречаются заплатки, связанные с работой с реестром и файловой системой. Далее следуют более специфичные заплатки, воспроизводящие те или иные функции, реализованные в предыдущих версиях операционной системы.

Другие возможности 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, создать набор «заплаток» для приложения и, при необходимости, использовать его для исправления работы приложений на всех компьютерах в организации. В следующей части мы приведем основные рекомендации по созданию совместимых приложений для разработчиков.

Продолжение следует...

14 мая 2009 Г.

Windows Vista / Windows 7 . -.

Windows Vista / Windows 7 –

-

«Windows Vista / Windows 7 » , «», . , - , . , Application Compatibility Infrastructure, , , Windows.

«» HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers. «».

  ,
«»,

, ( , ), , «» . , , 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 , .

   -  1
«» - 1

Compatibility Modes Microsoft Windows XP (SP2).

   -  2
«» - 2

Compatibility Fixes «» Disable Themes.

   -  3
«» - 3

Matching Information , «» .

   -  4
«» - 4

, «» .

«»

Save «» AdobeFix C:\SDBShare\ ReaderFix.sdb.

Custom Databases | AdobeFix Install «» . «» , %windir%\system32\sdbinst.exe. :

C:\>sdbinst c:\SDBShare\ReaderFix.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:\sdbshare\stockviewerfixes.sdb" & CHR(34), 0, true
 WshShell.Run "cmd.exe /c " & CHR(34) & "del " & CHR(34) &
 c:\sdbshare\stockviewerfixes.sdb " & CHR(34) & CHR(34), 0
 WshShell.Run "reg.exe delete
 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
 {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). , . .

 Search for Fixes
«Search for Fixes»

, «» , «» . , .. , . , . , , .

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, «» , , . .

...