Предположим, что пару лет назад вы загрузили установочный пакет mwta.msi, но теперь не можете вспомнить, для чего он был предназначен, а непонятное имя файла не дает никакой подсказки. Как узнать имя, производителя и версию программного продукта, содержащегося в пакете, без его установки?

К сожалению, щелчок правой кнопкой мыши на файле .msi и выбор пункта меню «Свойства» не дают достаточной информации. Если у вас установлена утилита Orca, вы можете щелкнуть правой кнопкой мыши на файле .msi, выбрать пункт меню Edit with Orca, перейти к таблице свойств Properties и просмотреть свойства файла .msi. Однако это занимает много времени. Кроме того, Orca при завершении работы обновляет дату последней модификации файла .msi, даже если вы не внесли никаких изменений. Если вы незнакомы с msi-файлами и Orca, прочтите врезку «Беглое знакомство с установщиком Windows».

Я пришел к выводу, что мне нужно более простое решение, поэтому я создал утилиту MSIInfo, которая работает на Windows 2000 Server и более новых версиях. Она показывает пять свойств msi-файла:

  • Manufacturer («Производитель») — определяет производителя устанавливаемого программного продукта;
  • ProductName («Наименование») — название устанавливаемого программного продукта;
  • ProductVersion («Версия продукта») — версия программного продукта;
  • ProductCode («Код продукта») — определяет глобально уникальный идентификатор (GUID) пакета в формате установщика Windows Installer;
  • UpgradeCode («Код модернизации») — определяет идентификатор GUID, который установщик Windows использует для поиска взаимосвязанных с устанавливаемым программным продуктом новых версий продукта. Все взаимосвязанные продукты имеют один и тот же код модернизации.

Утилита MSIInfo состоит из двух сценариев: MSIInfo.js, отображающего пять свойств пакета, и MSIInfo-Context.js, добавляющего пункт контекстно-зависимого меню в проводнике Windows таким образом, что вы можете просто щелкнуть правой кнопкой мыши на файле .msi для отображения этих свойств. Сценарии не требуют никакой дополнительной настройки, то есть вам не потребуется знать, как читать или редактировать сценарии для их использования. Я покажу, как их запускать, чтобы утилита MSIInfo работала в вашей среде.

Шаг 1

Ознакомьтесь с листингами утилиты MSIInfo (листинги 1 и листинг 2). Разместите MSIInfo.js и MSIInfo-Context.js в одной папке.

Листинг 2(окончание)

Сценарий MSIInfo-Context.js (окончание)

Шаг 2

На следующем шаге нужно добавить пункт контекстно-зависимого меню в проводнике Windows, запустив MSIInfo-Context.js. Откройте проводник Windows и перейдите в папку, в которой сохранили сценарии. Щелкните правой кнопкой на файле MSIInfo-Context.js и выберите пункт «Открыть» (но не пункт «Открыть в командной строке»). MSIInfo-Context.js выведет запрос, показанный на экране 1. Нажмите кнопку Yes. Сценарий добавит к контекстному меню пункт Info, который будет появляться при щелчке правой кнопкой мыши на msi-файле в проводнике Windows. Если вы впоследствии захотите удалить этот пункт, просто запустите MSIInfo-Context.js еще раз. Когда получите запрос на подтверждение удаления пункта меню, нажмите кнопку Yes.

Добавление пункта Info

Заметим, что MSIInfo-Context.js нужно запускать либо от имени учетной записи администратора, либо с повышением привилегий на более высокий уровень. Рассмотрим специфику различных версий Windows.

Windows Server 2003, Windows XP или Windows 2000. Если вы используете Windows Server 2003, Windows XP или Windows 2000, вы должны исполнять MSIInfo-Context.js под учетной записью администратора.

Windows Vista. Если вы работаете с Vista и у вас включен контроль учетных записей User Account Control (UAC), вы должны использовать повышение уровня привилегий, даже если вошли в систему с учетной записью администратора. И вот по какой причине: когда вы входите в систему как администратор и при этом у вас включен контроль учетных записей, Windows отключает маркер локальной группы «Администраторы» при регистрации в систему. Когда вы выполняете действие, требующее повышенного уровня привилегий, операционная система запрашивает у вас подтверждения для включения маркера группы «Администраторы», чтобы предотвратить непреднамеренные изменения в системе. Однако это может усложнить выполнение некоторых административных задач, таких как запуск с повышенными привилегиями сценариев Windows Script Host (то есть файлов типа .js,.vbs или .wsf).

Однако эту проблему можно обойти. Прежде всего, закройте все открытые окна проводника Windows. Далее откройте проводник Windows и выберите пункт «Параметры папки» в меню «Сервис» (если вы не видите пункт меню «Сервис», нажмите клавишу F10). Затем выберите закладку «Вид». Прокрутите список дополнительных параметров и установите флажок «Запускать окна с папками в отдельном процессе», затем нажмите кнопку ОК. Закройте проводник Windows.

Теперь щелкните правой кнопкой мыши на ярлыке проводника Windows (ярлык в разделе «Все программы», «Стандартные» в главном меню системы Vista) и выберите из контекстного меню вариант «Запуск от имени администратора». После подтверждения, что вы хотите запустить проводник Windows от имени администратора, перейдите к папке, содержащей сценарий MSIInfo-Context.js, и запустите его. Поскольку экземпляр проводника Windows работает с разрешениями администратора, сценарий также будет выполнен с повышенным уровнем привилегий.

Windows 7. В Windows 7 нельзя запустить проводник Windows с повышенным уровнем привилегий, если включен контроль учетных записей, что, скорее всего, является ошибкой в системе (social.technet.microsoft.com/Forums/en-US/w7

itprosecurity/thread/1798a1a7‑bd2e-4e42-8e98-0bc715e7f641). Если вы используете Windows 7 с включенным UAC, необходимо запускать MSIInfo-Context.js с повышенным уровнем привилегий в окне командной строки (то есть cmd.exe). Щелкните правой кнопкой мыши на ярлыке окна командной строки (например, в разделе «Все программы», «Стандартные» в главном меню Windows 7) и выберите из меню вариант «Запуск от имени администратора». После подтверждения, что вы действительно хотите запустить cmd.exe от имени администратора, введите полный путь к сценарию, заключая его в двойные кавычки ("), если он содержит пробелы (например, "C:Admin ScriptsMSIInfo-Context.js"), и нажмите клавишу Enter. Когда MSIInfo-Context.js выведет запрос, показанный на экране 1, нажмите Yes.

Windows Server 2008. Я не использовал систему с Server 2008 для тестирования, но шаги для Windows 7 должны работать и для Server 2008.

Шаг 3

Последний шаг — запуск MSIInfo.js, который нет необходимости запускать от имени администратора. Все, что вам нужно сделать, это перейти в проводнике Windows в папку с нужным файлом .msi, щелкнуть на этом файле правой кнопкой мыши и выбрать в меню пункт Info. При этом запустится MSIInfo.js и выведет все пять свойств на текстовой панели, как показано в примере на экране 2.

Пример результатов работы утилиты MSIInfo

В качестве альтернативы можно запускать MSIInfo.js в окне командной строки. Этот сценарий использует следующий синтаксис:

MSIInfo.js msifile [property]

Параметр misfile служит для указания пути к файлу .msi, о котором требуется получить информацию. Если путь к файлу .msi содержит пробелы, необходимо заключить этот параметр в двойные кавычки. Параметр property необязательный и должен принимать значение одного из свойств с учетом регистра: Manufacturer, ProductName, ProductVersion, ProductCode или Upgrade-Code. Если вы опустите параметр property, MSIInfo.js выведет все пять свойств. Если ваш сервер сценариев Windows по умолчанию WScript, то свойства будут выведены на текстовой панели; если ваш сервер сценариев по умолчанию Cscript, то свойства будут выведены в консольном окне.

Когда в следующий раз вы обнаружите непонятный файл .msi или вам понадобится получить информацию о программном пакете, который устанавливается msi-файлом, запустите утилиту MSIInfo. Несколько щелчков мыши — и все готово.

Билл Стюарт (bill.stewart@frenchmortuary.com) — системный и сетевой администратор компании French Mortuary (Нью-Мехико)

Сценарий MSIInfo.js

Сценарий MSIInfo-Context.js

Беглое знакомство с установщиком Windows

Установщик Windows — это предпочтительный с точки зрения Microsoft инструмент для установки, обновления и удаления программных продуктов. Каждый пакет в формате установщика Windows включает файл .msi, который описывает файлы, разделы реестра, ярлыки и другие элементы, необходимые для установки, обновления и удаления программ. Эти файлы обычно используются для распространения устанавливаемых пакетов. Также они применяются для установки программ с помощью объектов групповых политик Group Policy Objects (GPO).

При использовании в объектах групповых политик файлы .msi являются наилучшим средством установки программ на компьютерах в организационном подразделении OU службы каталогов Active Directory. В процессе загрузки компьютера клиентское расширение групповых политик Client-Side Extension (CSE) для установки программ проверяет наличие программных пакетов и автоматически устанавливает или обновляет программу, указанную в объекте групповой политики. Например, я использую групповую политику в сети своей компании для установки или обновления, когда выходят новые версии программы Adobe Flash Player. Пользователи не могут этого делать сами, так как не обладают административными привилегиями.

Файл .msi в действительности является файлом базы данных, поскольку состоит из таблиц. Одной из наиболее информативных таблиц является таблица свойств Property, так как она содержит информацию об устанавливаемых, обновляемых или удаляемых программных продуктах. Вы можете просмотреть таблицу свойств msi-файла (как и прочие таблицы) с помощью утилиты Orca, редактора таблиц базы данных для создания и редактирования пакетов установщика Windows. Заметим, что Orca по умолчанию не устанавливается в системе Windows (она является частью комплекта разработчиков Windows SDK), так что, возможно, она не установлена на вашем компьютере.