Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

MSI не хочет устанавливать программу на вашу OC? Orcas поправит это!

Напечатать страницу
31.05.2006 23:40 | Raiker

Если вы являетесь тестером Vista или на вашей машине установлена серверная ОС типа Windows Server 2003 или Longhorn server, тогда вы можете столкнуться с проблемой при установке некоторых программ...

Вы запускаете файл установки MSI, а в ответ видите странное сообщение, например:



Сообщение от Cisco вообще удивительно, т.к программе установки, требуется, чтобы на машине одновременно были загружены «как минимум Windows 2000 Service Pack 3 И Windows XP Service Pack 1» («Windows 2000 Service Pack 3 or greater AND Windows XP Service Pack 1 or greater»). Это полный абсурд! Что же это за программа, для работы которой требуется одновременная работа двух ОС?

Если бы мы использовали псевдокод, то отразили бы это условие следующим образом:
If ((OS is Win2000) AND (SP Level is >= SP3)) AND ((OS is WinXP) AND (SP Level is >= SP1)) THEN INSTALL.

Очевидно, что человек, который писал установщик MSI для данной программы, допустил логическую ошибку. Теперь кто бы ни пытался установить это программное обеспечение, увидит окно, описанное выше, при этом программа никогда не установится.
Что же делать? – спросите вы. Отвечу: эту ошибку можно исправить с помощью утилиты «Orca»!

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

Получить утилиту можно здесь: http://support.microsoft.com/kb/255905/EN-US/
После того, как утилита Orca установлена, мы сможем вручную отредактировать желаемый файл установки необходимой нам программы.

Иногда файл MSI упакован внутри огромного файла типа «setup.exe» или «install.exe». Поэтому, если нужная нам программа поставляется в виде такого файла, сначала нужно распаковать его во временную директорию. После распаковки, во временной директории среди прочих будет и файл MSI.
Теперь откроем файл MSI с помощью Orca. Для примера, возьмем файл MSI программы VistaUpgradeAdvisor.



Из приведенного рисунка видно, что слева в списке «Tables» есть элемент «LaunchCondition» («Условия запуска установки»). Выберем этот элемент.

На правой панели в колонке «Condition» отобразятся условия, выполнение которых необходимо для запуска установки программы VistaUpgradeAdvisor, а в колонке «Description» содержится сообщение, которое программа установки должна выдать пользователю в случае невыполнения условий. В данном примере, условиями для установки являются: «VersionNT=501 OR VersionNT>502». Так как «VersionNT=501» подразумевает ни что иное, как Windows XP, а «VersionNT=502» - это Windows Server 2003, следовательно условия установки нашей программы таковы: если на компьютере установлена Windows XP или версия Windows более новая, чем Windows Server 2003 (а это ничто иное, как Vista), тогда начать установку программы, в противном случае прекратить установку и выдать сообщение «Sorry. You must run setup on Windows XP or Windows Vista».

Предположим, нам нужно установить VistaUpgradeAdvisor на машину с ОС Windows Server 2003. Для этого изменим условия начала установки, следующим образом: «VersionNT>=501» и нажмем кнопку «Save»



Теперь наш MSI не будет противиться установке программы VistaUpgradeAdvisor под Windows Server 2003.
Конечно, не совсем понятно, почему в Orca используется нумерация версий Windows 501, 502, а не 51 и 52 и т.д. Ведь если посмотреть на официальную нумерацию, то можно увидеть, что номер версии Windows XP - 5.1.2600, Windows Server 2003 - 5.2.3790, а Windows Vista Beta 2 - 6.0.5384.
Рассмотрим теперь, как выглядит изнутри MSI для новой версии программы Cisco IP Communication (выше я продемонстрировал, что старая версия желает одновременного запуска Windows 2000 и Windows XP).



Как видно, требования для начала установки здесь включают не только проверку установленной версии Windows, но и требования к оборудованию. Так, например, для начала установки необходимо наличие процессора не ниже Pentium 3 (строка «Intel>=6») и не менее 120 Мб RAM (строка «PhysicalMemory>=120»). Но это так, к слову.

Нас же будет интересовать следующая строка условий: (VersionNT=501 And WindowsBuild>=2264 And ServicePackLevel >=1) OR (VersionNT=500 And WindowsBuild=2195 And ServicePackLevel>=3).

Понятно, что у человека, который писал это, с логикой все в порядке.
Ясно, что программа начнет установку, если на машине инсталлирована Windows XP (включая Windows XP Beta) с SP1 или SP2 (или SP3, если он выйдет в будущем).
Также установка начнется и в случае, если на компьютере установлена Windows 2000 (VersionNT=500 And WindowsBuild=2195 And ServicePackLevel>=3).

Если вас мучает вопрос, откуда мы узнали, что MSI будет устанавливать Cisco IP Communication под Windows XP Beta SP1(или SP2, или SP3…), то поясню: в строке условий указано - (VersionNT=501 And WindowsBuild>=2264 And ServicePackLevel >=1)…
Понятно, что VersionNT=501 – это Windows XP, а вот следующий параметр WindowsBuild>=2264, указывает на то, что номер сборки может быть и менее, чем 2600 (напомним, что у релиза XP номер сборки 2600). Поэтому условие WindowsBuild>=2264, охватывает и Beta – версии XP, начиная со сборки XP под номером 2264.

Если мы хотим, чтобы MSI устанавливала программу Cisco IP Communication и под Vista, тогда к строке условий, которую мы только что подробно разбирали, нужно просто добавить «OR (VersionNT=600)», тогда получим: (VersionNT=501 And WindowsBuild>=2264 And ServicePackLevel >=1) OR (VersionNT=500 And WindowsBuild=2195 And ServicePackLevel>=3) OR (VersionNT=600). С другой стороны, можно просто проигнорировать все условия, связанные с сервис – паками и номерами сборок и заменить всю эту громоздкую строку на такую: «VersionNT >= 500». Теперь программа установки запустится под всеми версиями Windows, не ниже Windows 2000, включая и Vista.

Итак, я рассказал, каким образом можно снять блокировку MSI. Это может пригодиться, например, тестерам Vista, позволяя установить программы, написанные для XP. Однако, не следует думать, что любая программа будет корректно работать после модификации файла MSI. Конечно, мы можем снять блокировку на процесс установки программы, и установка может пройти успешно. А вот будет ли сама установленная программа корректно работать с DLL или драйверами той платформы, на которую ее установили – это большой вопрос.

Источник: http://windowsconnected.com/
Перевод: iLizar

Комментарии

Не в сети

Очень хорошая утилитка! Малость глючная и тормозная, но юзать можно и нужно. ;)

Однако, просто так она недоступна, идёт только вместе с Platform SDK. Поэтому, для тех, кому не хочется тратить трафик на весь PSDK (а он, сволочь, тяжёленький), вот прямая ссылка:
http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/msisdk-common.3.0.cab

Выкачиваете, распаковываете, находите в нём Orca_Msi.FD66E721_5AA0_41BC_AA26_1EC8F7FA1175, переименовываете в orca.msi -- и ставите как обычно.

01.06.06 01:17
0
Не в сети

Спасибо за статью! С помощью данной утилиты мне удалось установить в Висте модуль рпспознавания русского рукописного текста, который требовал для своей установки наличия Windows XP Tablet PC Edition 2005!

01.06.06 01:54
0
Не в сети

Спасибо! Полезная утилита!

01.06.06 12:40
0
elk 0
Не в сети

таких прог достаточно много уже...

01.06.06 17:59
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.076 секунд (Общее время SQL: 0.06 секунд - SQL запросов: 61 - Среднее время SQL: 0.00099 секунд))
Top.Mail.Ru