воскресенье, 24 марта 2013 г.

Средства совместимости программ с Windows 7

  Новые операционные системы семейства Windows принято ругать за плохую совместимость со старыми программами. Где-то выудил что каждая новая версия Windows несовместима с 20-30% программ, которые работали на предыдущих версиях этой ОС. В Windows Vista и 7 ситуацию усугубила новая возможность "Контроль учетных записей" он же "User Acces Control" он же UAC. И куча других о которых я пока не знаю.
  Но, о чудо, есть хорошая новость. Добрый Microsoft придумал несколько средств для совместимости новой Windows и старой программы.
  Для Windows 7 это в порядке усложнения:
  1. В свойствах ярлыка вкладка "Совместимость"
  2. Пакет совместимости приложений, ACT
  3. Windows XP mode
  Мне пока известны только эти способы. Может есть что-нибудь еще.

1. Вкладка "Совместимость" в свойствах ярлыка

  Если зайти в свойства ярлыка приложения, то в открывшемся окне нам поможет вкладка "Совместимость". Мы увидим:

Настройка "Режим совместимости"

  Здесь можно выбрать совместимость с предыдущими версиями Windows. Если возникает необходимость в этой вкладке, я обычно ставлю  "Windows XP (пакет обновлений 3)" и этого достаточно т.к. большинство моих программ сейчас идут на Windows XP.
  IT-евангелист Игорь Шаститко на одном из своих семинаров, где я присутствовал, утверждал, что это влияет только на то, какую версию операционной системы сообщают приложению. Имею наглость с ним не согласиться. По поведению программ видно, что как минимум это еще влияет на "Контроль учетных записей",UAC. Допустим если поставить эту настройку в состояние "Windows XP" по некоторым программам видно, что система перестает подставлять вместо папок "Windows" и "Program Files" аналогичные папки из "C:\Users\Имя_Пользователя\appdata\Local\Virtual Store", как описывалось в предыдущей статье посвященной UAC.
  Еще одной приятной особенностью этой настройки является возможность установки на Windows 7 драйверов от Windows Vista. То что я уже описывал в статье о подключении сканера Mustek 1248ub к Windows 7. Вы скачали инсталятор драйверов для Windows Vista и надо установить эти дрова на Windows 7. Если умные программисты предусмотрели в инсталяторе проверку версии операционной системы, то установка этой настройки в "Windows Vista" помогает запуститься этой программе и установить драйвера.

Настройка "Параметры"

  Здесь стоит несколько галочек, которые я никогда не использовал, поэтому ничего о них не скажу.

"Выполнить программу от имени администратора"

  Это большая кнопка внизу данного окна. Она позволяет указать что эту программу надо всегда запускать с полными правами.

 

2. Пакет совместимости приложений 

  Пакет совместимости приложений, он же Application Compatibility Toolkit, он же ACT

Где взять.

  Для скачивания зайти в  Центр загрузки Microsoft и в строке поиска набрать "Application Compatibility Toolkit" и первая же предложенная ссылка будет его. Сейчас доступна версия 5.6 этой программы. Она выпускается только на английском языке. Вместе с программой можно скачать и документацию к ней, также на английском. После установки в системе появляются несколько ярлыков из которых я буду описывать "Compatibility Administrator (32-bit)" и то же 64-бит. Соответственно для 32 и 64-битных программ. С остальными ярлыками я просто пока не работал и ничего про них не скажу. Подозреваю, что там так же прячется много интересного.

Принцип действия как его понимаю я.

  Windows хранит у себя данные о том как именно ядро операционной системы обрабатывает запуск и работу каждого приложения. Есть настройки по умолчанию, которые применяются ко всем запускаемым приложениям. Но для отдельных приложений можно указать другие параметры запуска и работы. На глаз там несколько десятков параметров, если не сотен. Работу облегчает то, что как и в предыдущем параграфе можно указать совместимость с Windows Vista, Windows XP со всеми сервис-паками и далее. До Windows 95. И при выборе нужной операционной системы сразу выставляются нужные параметры.
  Я заметил, что выбор "Windows XP" здесь и "Windows XP" в предыдуем параграфе не равноценны как минимум для Windows 7. Недавно попалась программа, которая не работала когда я выбрал в свойствах ее ярлыка совместимость с "Windows XP Service Pack 3". Но та же программа легко заработала когда я в ACT указал тот же режим совместимости.

Как настраивать

  Когда-то на Techdays.in.ua было видео Игоря Шаститко о средствах совместимости. И в том числе как работать с ACT. Когда украинский сайт Techdays слили с российским я этого видео уже не нашел. Теперь на Techdays.RU есть видео Решение проблем совместимости с Windows 7.
  Запустив "Compatibility Administrator (32-bit)" видим это окно.

  1. Для создания нового исправления кликнуть в самом низу под "Custom databases" на "New Database". И в контекстном меню "Create New" \ "Application Fix".
  2. В новом окне. В поле "Name of the program to be fixed" заносим имя программы, а в "Program File location" - полный путь программы. И если облом его набирать вручную - кнопка "Browse" рядом.
  3. В новом окне в в разделе "Compatibility Mode" можно выбрать готовые режимы совместимости с предыдущими версиями Windows. А если вы разбираетесь в этом еще круче, то ниже в "Additional Compatibility Modes" можно указать еще настройки. Правда в них я еще не разбирался. Тут же есть кнопка "Test Run" для проверочного запуска настраиваемой программы с новыми режимами.
  4. В следующем окне "Compatibility Fixes" можно дополнительно указать еще кучу разных исправлений.
  5. В окне "Matching Information" можно указать дополнительные исполняемые файлы которые будут подпадать под созданный нами режим.
  Но это еще не все. Чтобы созданный нами режим запуска применялся к этой программе надо кликнуть правой кнопкой на имени созданной базы данных. На приведенном фото это "New Database (1)" и выбрать "Install". Тогда в "Installed Databases" появляется наш режим исправления (на фото он зачернен). И он будет автоматически применяться если мы запускаем приложение.
  Также наше исправление можно сохранить в виде sdb-файла.
  Из очень поверхностного чтения документации еще выяснил, что эти исправления можно распространять через политики домена Active Directory.

 

3. Windows XP mode

Где взять

  Представляет собой виртуальную машину. Сделанную на основе продукта Microsoft VirtualPC. Зайдите на страницу страницу Windows XP mode, нажмите "Get Windows XP mode and Windows Virtual PC now". Выберите операционную систему в выпадающем списке "Select system" и язык в "Select language". Вам предложат скачать сам VirtualPC (порядка 20 МБ) и образ Windows XP SP3 (500-600 МБ). Раньше надо было скачать еще одно обновление, но с выходом Service Pack 1 для Windows 7 эта необходимость отпала. 
  Для установки надо поочередно установить сначала VirtualPC. Потом большой образ. Он поставляется в виде *.exe. Потом на экране появляется значок "Windows XP Mode". Первый раз его надо запустить и настроить. Он будет несколько минут сам настраиваться. И единственный вопрос который он задаст при этом - пароль для учетной записи XPMUser. Тут же стоит галочка спрашивать ли пароль каждый раз при старте или запомнить. Потом можно установить все нужные приложения на виртуальную машину. И антивирус тоже.

Принцип действия

  На Techdays.RU есть видео "Windows 7 XP Mode - средство совместимости с унаследованными приложениями". Его стоит посмотреть.
  Windows XP Mode представляет собой виртуальную машину полностью имитирующую среду Windows XP Service Pack 3. Старое приложение надо установить в этой виртуальной машине. Сначала запускается виртуальная машина, а потом в ней запускается старое приложение.

Как настраивать

  Мне известны 2 режима запуска.
  В первом пользователь сам сначала запускает виртуальную машину. И в уже запущенной виртуальной машине опять же сам запускает старое приложение. По окончанию работы пользователь закрывает приложение. И потом сам закрывает виртуальную Windows XP.
  Во втором (прозрачный режим) на рабочий стол основной Windows вынесен ярлык старого приложения (само приложение установлено в виртуальной машине). Как ярлык туда поместить я расскажу потом. Человеку надо только запустить этот ярлык. Основная Windows сама запускает виртуальную машину. При этом на экране висит сообщение.

  Когда виртуальная машина запуститься опять же автоматически внутри этой виртуальной машины запускается старое приложение. При этом самой Windows XP на экране не видно. Видно только окно нашего приложения. При первом запуске это окно висит долго, ведь должна запуститься целая Windows XP. Если вы закроете приложение, то "невидимая" Windows XP еще некоторое время висит в памяти. И если вы повторно запустите старое приложение , то оно уже запуститься гораздо быстрее. Время бездействия (тайм-аут) после которого "невидимая" Windows XP автоматически закрывается мне неизвестно.
  Антивирус, обновления и программы из основной Windows 7 на виртуальную машину не имеют никакого влияния. Поэтому о защите виртуальной Windows XP нужно позаботиться дополнительно.
  При этом есть трюк, о котором я не знал и при первом запуске приложения в прозрачном режиме это вызвало мое удивление. Дело в том, что при запуске старого приложения в прозрачном режиме значки приложений в панели задач возле часиков автоматически появляются возле часиков основной системы. И запуская старое приложение первый раз в прозрачном режиме я был озадачен, когда возле часиков Windows 7 всплыло сообщение центра безопасности в стиле Windows XP о том, что в системе нет антивируса. А рядом красовался наш корпоративный антивирус и сообщал что у него все базы обновлены. Я понял в чем дело и установил на виртуальной машине антивирус. И в следующем запуске старого приложения возле часиков Windows 7 красовалось 2 (два) абсолютно одинаковых антивируса.
  Меню Windows XP Mode в основной системе Windows 7 выглядит так.
  Здесь под "Приложения Windows XP Mode" видны те приложения которые установлены и опубликованы в виртуальной машине. Здесь это Far Manager и выше неизвестное приложение, которое я зачернил.
  Настроить различнае параметры Windows XP mode можно запустив ярлык "Windows Virtual PC". Откроется окно, в котором покажутся установленные в системе виртуальные машины. В нашем случае как минимум там должна быть машина "Windows XP Mode". Кликнув на ней правой кнопкой и выбрав "Параметры", можем изменить параметры виртуальной машины.
  Я обычно добавляю ОЗУ (по умолчанию стоит 512 МБ). Режим выключения я обычно ставлю в "Выключить" (по умолчанию "Гибернация"), хотя теоретически при  гибернации старт и остановка виртуальной машины должна проходить быстрее. И проверяю галочку разрешать публиковать приложения (по умолчанию она и так стоит). На вышепреведенной фотографии опубликованы Far и выше него зачерненное приложение. Кстати публикации посвящена следуюшая глава.

Ярлык виртуального приложения на столе

  Я обещал объяснить как вывести ярлык старого приложения из виртуальной Windows XP на рабочий стол основной Windows.
  Windows XP Mode автоматически публикует, т.е. показывает в меню "Пуск" основной Windows 7 те ярлыки и папки которые находятся общем меню виртуальной Windows XP в папке "C:\Documents and Settings\All Users\Главное меню".
  Быстрее всего туда попасть кликнув правой кнопкой мыши на меню "Пуск" виртуальной Windows XP и выбрав "Открыть общее для всех меню" или "Проводник в общее для всех меню". И кидайте туда все ярлыки которые вам надо опубликовать в основной Windows 7. Так как я не знаю точно сразу ли приложения появляются в основной системе или нет, то выключаю виртуальный Windows XP.
  Далее в основной Windows 7 копируете ярлыки нужных вам приложений из меню "Пуск" на рабочий стол. И просто их оттуда запускаете.