Как узнать msi код приложения
Мне нужно найти GUID продукта для установленного файла MSI, чтобы выполнить обслуживание, такое как patching , uninstall ( как удалить) и также для auditing purposes .
Укороченная версия
Информация ниже значительно выросла со временем и, возможно, стала слишком сложной. Как быстро получить коды продуктов? (четыре подхода):
1. Use the Powershell "one-liner"
Прокрутите вниз для скриншота и шаг за шагом. Отказ от ответственности также ниже - незначительные или умеренные риски в зависимости от того, кого вы спрашиваете. Работает хорошо для меня. Любой самовосстановление, вызванное этой опцией, как правило, должно быть возможным отменить. Сработавшие проверки целостности пакета добавляют некоторый "шум" журнала событий. Примечание IdentifyingNumber - это ProductCode (особенность WMI).
Быстрый запуск Powershell: удерживайте Windows key , нажмите R , введите "powershell" и нажмите Enter
2. Use VBScript
Описано ниже в разделе " Альтернативные инструменты" (раздел 3). Этот параметр может быть безопаснее, чем Powershell, по причинам, подробно описанным ниже. По сути, он (намного) быстрее и не способен запускать самовосстановление MSI, поскольку он не проходит через WMI (он напрямую обращается к MSI COM API - с невероятной скоростью). Однако он более сложен, чем опция Powershell (несколько строк кода).
3. Registry Lookup
Некоторые ругаются, просматривая вещи в реестре. Не мой рекомендуемый подход - мне нравится проходить через надлежащие API (или другими словами: вызовы функций ОС). Всегда есть странные исключения, учитываемые только внутренностями API-реализации:
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
- HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
- HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
4. Original MSI File/WiX Source
Вам нужен инструмент для просмотра файлов MSI. В нижней части следующего ответа приведен список бесплатных инструментов, которые вы можете загрузить (или см. Быстрый вариант ниже): Как я могу сравнить содержимое двух (или более) файлов MSI?
Orca - это собственный инструмент Microsoft, он устанавливается вместе с Visual Studio и Windows SDK. Попробуйте найти Orca-x86_en-us.msi - в разделе Program Files (x86) и установите MSI, если он найден.
А ниже вы найдете оригинальный ответ, который "органически вырос" во многих деталях.
Возможно, смотрите раздел " Удаление пакетов MSI " ниже, если это задача, которую вам нужно выполнить.
Получить коды продуктов
- Не можете использовать PowerShell? Смотрите раздел "Альтернативные инструменты" ниже.
- Хотите удалить? См. Раздел "Удаление пакетов MSI" ниже.
Запустите Powershell (удерживая нажатой клавишу Windows, нажмите "R", отпустите клавишу Windows, введите "powershell" и нажмите "ОК") и выполните приведенную ниже команду, чтобы получить список установленных кодов продуктов пакета MSI, а также путь к пакету локального кэша и название продукта (разверните окно PowerShell, чтобы избежать усеченных имен).
Перед запуском этой командной строки, пожалуйста, прочитайте выражение об отказе от ответственности ниже (ничего опасного, только некоторые потенциальные неудобства). Раздел 3 в разделе "Альтернативные инструменты" показывает альтернативный способ не-WMI, чтобы получить ту же информацию, используя VBScript. Если вы пытаетесь удалить пакет, есть раздел ниже с некоторыми примерами командных строк msiexec.exe:
Вывод должен быть похож на это:
Заметка! По какой-то странной причине "Код продукта" упоминается как "Идентификационный номер" в WMI. Другими словами, на рисунке выше IdentifyingNumber - код продукта.
Если вам нужно выполнить этот запрос удаленно для большого количества удаленных компьютеров, см. Раздел "Получение кодов продуктов с удаленного компьютера" ниже.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ (важно, пожалуйста, прочитайте перед запуском команды!): Из-за странного дизайна Microsoft любой WMI-вызов Win32_Product (например, команда PowerShell ниже) вызовет проверку состояния пакета. Помимо того, что это довольно медленно, это может в редких случаях вызвать самовосстановление MSI. Это может быть небольшой пакет или что-то огромное - например, Visual Studio. В большинстве случаев этого не происходит, но есть риск. Не запускайте эту команду прямо перед важной встречей - она не опасна (она доступна только для чтения), но в очень редких случаях может привести к длительному ремонту (я думаю, что вы также можете отменить самовосстановление - если это не будет активно предотвращено рассматриваемым пакетом, но он будет перезапущен, если вы снова вызовете Win32_Product, и это будет продолжаться до тех пор, пока вы не дадите завершить самовосстановление - иногда это может продолжаться, даже если вы дадите этому завершиться: как определить причины повторения Самостоятельный ремонт установщика Windows?).
И просто для справки: некоторые люди сообщают о том, что их журналы событий заполняются записями MsiInstaller EventID 1035 (см. Ответ главного кода) - очевидно, это вызвано запросами WMI к классу Win32_Product (лично я никогда не видел этого). Это напрямую не связано с предложенной выше командой Powershell, а в контексте общего использования WIM-класса Win32_Product.
Вы также можете получить вывод в виде списка (вместо таблицы):
В этом случае вывод похож на это:
Получить коды продуктов с удаленного компьютера
Теоретически вы должны просто указать имя удаленного компьютера как часть самой команды. Вот та же команда, что и выше, настроенная для запуска на компьютере "RemoteMachine" (добавлен раздел -ComputerName RemoteMachine ):
Это может работать, если вы работаете с правами администратора домена в соответствующем домене. В среде рабочей группы (небольшой офис/домашняя сеть) вам, вероятно, придется добавить учетные данные пользователя непосредственно в вызовы WMI, чтобы это работало.
Кроме того, на удаленные подключения в WMI влияют (по крайней мере) брандмауэр Windows, параметры DCOM и контроль учетных записей (UAC) (а также любые дополнительные факторы, не относящиеся к Microsoft - например, реальные брандмауэры, сторонние программные брандмауэры, программное обеспечение безопасности различных виды и т.д. ). Будет ли это работать или нет, зависит от ваших точных настроек.
ОБНОВЛЕНИЕ: В этом ответе можно найти подробный раздел об удаленном запуске WMI: Как найти код обновления для установленного файла MSI? , Похоже, правило брандмауэра и подавление запроса UAC с помощью настройки реестра могут заставить работать вещи в сетевой среде рабочей группы. Не рекомендуется вносить изменения в отношении безопасности, но это сработало для меня.
Альтернативные инструменты
Если это так, вы можете попробовать несколько других способов получить коды продуктов. Моя предпочтительная альтернатива - VBScript - он быстрый и гибкий (но также может быть заблокирован на определенных машинах, и сценарии всегда немного более сложны, чем использование инструментов).
Начнем со встроенного средства Windows WMI: wbemtest.exe .
- Запустите wbemtest.exe (удерживая клавишу Windows, нажмите "R", отпустите клавишу Windows, введите "wbemtest.exe" и нажмите "ОК").
- Нажмите " Подключиться", затем нажмите " ОК" (по умолчанию для пространства имен - root\cimv2) и снова нажмите " Подключиться ".
- Нажмите " Запрос " и введите следующую команду WQL (SQL вкус): SELECT IdentifyingNumber,Name,Version FROM Win32_Product и нажмите "Использовать" (или эквивалентный - инструмент будет локализован).
- Пример выходного скриншота (усеченный). Не самое хорошее форматирование, но вы можете получить нужные данные. IdentifyingNumber - это код продукта MSI:
Затем вы можете попробовать пользовательский, более полнофункциональный инструмент WMI, такой как WMIExplorer.exe
- Это не входит в Windows. Однако это очень хороший инструмент. Рекомендуемые.
- Проверьте это по адресу: https://github.com/vinaypamnani/wmie2/releases
- Запустите инструмент, нажмите "Подключить", дважды щелкните "ROOT\CIMV2".
- На вкладке " Запрос " введите следующий запрос SELECT IdentifyingNumber,Name,Version FROM Win32_Product и нажмите "Выполнить".
- Скриншот пропущен, приложение требует слишком много экранного пространства.
Наконец, вы можете попробовать VBScript для доступа к информации через интерфейс автоматизации MSI (основная функция Windows - она не связана с WMI).
- Скопируйте приведенный ниже скрипт и вставьте его в файл *.vbs на рабочем столе и попробуйте запустить его, дважды щелкнув. Ваш рабочий стол должен быть записан для вас, или вы можете использовать любое другое место для записи.
- Это не очень хороший VBScript. Краткость предпочтительнее обработки ошибок и полноты, но она должна выполнять работу с минимальной сложностью.
- Выходной файл создается в папке, из которой вы запускаете скрипт (папка должна быть доступна для записи). Выходной файл называется msiinfo.csv .
- Дважды щелкните файл, чтобы открыть его в приложении для работы с электронными таблицами, выберите запятую в качестве разделителя при импорте - ИЛИ - просто откройте файл в Блокноте или любом средстве просмотра текста.
- Открытие в электронной таблице позволит расширенные функции сортировки.
- Этот скрипт может быть легко адаптирован для отображения значительного количества дополнительной информации об установке MSI. Демонстрацию этого можно найти здесь: как узнать, какие продукты установлены - на более новых продуктах уже установлены окна MSI.
Я не могу придумать какие-либо дополнительные варианты общего назначения для получения кодов продуктов на данный момент, пожалуйста, добавьте, если вы знаете какой-либо из них. Просто отредактируйте, а не добавляйте слишком много комментариев, пожалуйста.
Вы, безусловно, можете получить доступ к этой информации из своего приложения, вызвав интерфейс автоматизации MSI (на основе COM) ИЛИ функции установщика MSI C++ (Win32 API). Или даже используйте запросы WMI из вашего приложения, как вы делали в примерах выше, используя PowerShell , wbemtest.exe или WMIExplorer.exe .
Удалить пакеты MSI
Если вы хотите удалить пакет MSI, для которого вы нашли код продукта, вы можете сделать это следующим образом с помощью командной строки с повышенными привилегиями (найдите cmd.exe, щелкните правой кнопкой мыши и запустите от имени администратора):
Вариант 1. Базовая интерактивная деинсталляция без регистрации (быстро и просто):
Краткое описание параметров:
Вариант 2. Бесшумное удаление с подробным ведением журнала (лучше для пакетных файлов):
Краткое описание параметров:
Здесь есть полный справочник по удалению MSI (различные способы удаления пакетов MSI): Удаление файла MSI из командной строки без использования msiexec. Существует множество различных способов удаления.
Если вы пишете командный файл, пожалуйста, посмотрите раздел 3 в приведенном выше ответе для нескольких распространенных и стандартных вариантов удаления из командной строки.
Получение других свойств/информации MSI (код обновления f.ex)
ОБНОВЛЕНИЕ: пожалуйста, найдите новый ответ о том, как найти код обновления для установленных пакетов вместо того, чтобы вручную искать код в файлах MSI. Для установленных пакетов это гораздо надежнее. Если пакет не установлен, вам все равно нужно найти файл MSI (или исходный файл, использованный для компиляции MSI), чтобы найти код обновления. Оставляя в старом разделе ниже:
Если вы хотите получить UpgradeCode или другие свойства MSI, вы можете открыть кэшированный установочный MSI для продукта из местоположения, указанного в " LocalPackage " на изображении, показанном выше (что-то вроде: C:\WINDOWS\Installer\50c080ae.msi - это шестнадцатеричное имя файла, уникальное для каждой системы). Затем вы просматриваете " Таблицу свойств " для UpgradeCode (возможно, что UpgradeCode может быть переопределен в преобразовании - чтобы быть уверенным, что вы получите правильное значение, необходимое для программного извлечения кода из системы - я предоставлю сценарий для это в ближайшее время. Тем не менее, UpgradeCode, найденный в кэшированном MSI, как правило, является правильным).
Чтобы открыть кэшированные файлы MSI, используйте Orca или другой инструмент для упаковки. Вот обсуждение различных инструментов (любой из них подойдет): Какой установочный продукт использовать? InstallShield, WiX, Wise, Advanced Installer и т. Д. Если у вас не установлен такой инструмент, вам лучше всего попробовать Super Orca (он прост в использовании, но не был тщательно протестирован мной).
ОБНОВЛЕНИЕ: вот новый ответ с информацией о различных бесплатных продуктах, которые вы можете использовать для просмотра файлов MSI: Как я могу сравнить содержимое двух (или более) файлов MSI?
- Вот более полная статья по вопросу удаления MSI: Удаление файла MSI из командной строки без использования msiexec
- Вот аналогичная статья с несколькими дополнительными опциями для извлечения информации MSI с использованием реестра или кэшированной MSI: Найти GUID из файла MSI?
Подобные темы (для справки и легкого доступа - я должен очистить этот список):
Мне нужно найти GUID продукта для установленного файла MSI, чтобы выполнить обслуживание, такое как patching , uninstall ( как удалить) и также для auditing purposes .
Укороченная версия
Информация ниже значительно выросла со временем и, возможно, стала слишком сложной. Как быстро получить коды продуктов? (четыре подхода):
1. Use the Powershell "one-liner"
2. Use VBScript
3. Registry Lookup
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
- HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
- HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
4. Original MSI File/WiX Source
Вам нужен инструмент для просмотра файлов MSI. В нижней части следующего ответа приведен список бесплатных инструментов, которые вы можете загрузить (или см. Быстрый вариант ниже): Как я могу сравнить содержимое двух (или более) файлов MSI?
Получить коды продуктов
Вывод должен быть похож на это:
Вы также можете получить вывод в виде списка (вместо таблицы):
В этом случае вывод похож на это:
Получить коды продуктов с удаленного компьютера
Это может работать, если вы работаете с правами администратора домена в соответствующем домене. В среде рабочей группы (небольшой офис/домашняя сеть) вам, вероятно, придется добавить учетные данные пользователя непосредственно в вызовы WMI, чтобы это работало.
ОБНОВЛЕНИЕ: В этом ответе можно найти подробный раздел об удаленном запуске WMI: Как найти код обновления для установленного файла MSI? , Похоже, правило брандмауэра и подавление запроса UAC с помощью настройки реестра могут заставить работать вещи в сетевой среде рабочей группы. Не рекомендуется вносить изменения в отношении безопасности, но это сработало для меня.
Альтернативные инструменты
Начнем со встроенного средства Windows WMI: wbemtest.exe .
Затем вы можете попробовать пользовательский, более полнофункциональный инструмент WMI, такой как WMIExplorer.exe
Я не могу придумать какие-либо дополнительные варианты общего назначения для получения кодов продуктов на данный момент, пожалуйста, добавьте, если вы знаете какой-либо из них. Просто отредактируйте, а не добавляйте слишком много комментариев, пожалуйста.
Вы, безусловно, можете получить доступ к этой информации из своего приложения, вызвав интерфейс автоматизации MSI (на основе COM) ИЛИ функции установщика MSI C++ (Win32 API). Или даже используйте запросы WMI из вашего приложения, как вы делали в примерах выше, используя PowerShell , wbemtest.exe или WMIExplorer.exe .
Удалить пакеты MSI
Если вы хотите удалить пакет MSI, для которого вы нашли код продукта, вы можете сделать это следующим образом с помощью командной строки с повышенными привилегиями (найдите cmd.exe, щелкните правой кнопкой мыши и запустите от имени администратора):
Вариант 1. Базовая интерактивная деинсталляция без регистрации (быстро и просто):
Краткое описание параметров:
Вариант 2. Бесшумное удаление с подробным ведением журнала (лучше для пакетных файлов):
Краткое описание параметров:
Здесь есть полный справочник по удалению MSI (различные способы удаления пакетов MSI): Удаление файла MSI из командной строки без использования msiexec. Существует множество различных способов удаления.
Если вы пишете командный файл, пожалуйста, посмотрите раздел 3 в приведенном выше ответе для нескольких распространенных и стандартных вариантов удаления из командной строки.
Получение других свойств/информации MSI (код обновления f.ex)
ОБНОВЛЕНИЕ: пожалуйста, найдите новый ответ о том, как найти код обновления для установленных пакетов вместо того, чтобы вручную искать код в файлах MSI. Для установленных пакетов это гораздо надежнее. Если пакет не установлен, вам все равно нужно найти файл MSI (или исходный файл, использованный для компиляции MSI), чтобы найти код обновления. Оставляя в старом разделе ниже:
Чтобы открыть кэшированные файлы MSI, используйте Orca или другой инструмент для упаковки. Вот обсуждение различных инструментов (любой из них подойдет): Какой установочный продукт использовать? InstallShield, WiX, Wise, Advanced Installer и т. Д. Если у вас не установлен такой инструмент, вам лучше всего попробовать Super Orca (он прост в использовании, но не был тщательно протестирован мной).
ОБНОВЛЕНИЕ: вот новый ответ с информацией о различных бесплатных продуктах, которые вы можете использовать для просмотра файлов MSI: Как я могу сравнить содержимое двух (или более) файлов MSI?
- Вот более полная статья по вопросу удаления MSI: Удаление файла MSI из командной строки без использования msiexec
- Вот аналогичная статья с несколькими дополнительными опциями для извлечения информации MSI с использованием реестра или кэшированной MSI: Найти GUID из файла MSI?
Если у вас слишком много инсталляторов, чтобы легко найти то, что вы ищете, вот несколько возможностей, которые предоставляют фильтр и немного сужают его по отображаемому имени.
Предположим, что пару лет назад вы загрузили установочный пакет mwta.msi, но теперь не можете вспомнить, для чего он был предназначен, а непонятное имя файла не дает никакой подсказки. Как узнать имя, производителя и версию программного продукта, содержащегося в пакете, без его установки?
Предположим, что пару лет назад вы загрузили установочный пакет 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 нужно запускать либо от имени учетной записи администратора, либо с повышением привилегий на более высокий уровень. Рассмотрим специфику различных версий 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 Server 2008. Я не использовал систему с Server 2008 для тестирования, но шаги для Windows 7 должны работать и для Server 2008.
Шаг 3
Последний шаг — запуск MSIInfo.js, который нет необходимости запускать от имени администратора. Все, что вам нужно сделать, это перейти в проводнике Windows в папку с нужным файлом .msi, щелкнуть на этом файле правой кнопкой мыши и выбрать в меню пункт Info. При этом запустится MSIInfo.js и выведет все пять свойств на текстовой панели, как показано в примере на экране 2.
В качестве альтернативы можно запускать 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. Несколько щелчков мыши — и все готово.
Беглое знакомство с установщиком 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), так что, возможно, она не установлена на вашем компьютере.
Что такое GUID?
GUID (глобальный уникальный идентификатор) - это термин, используемый Microsoft для числа, которое ее программа генерирует, чтобы создать уникальную идентичность для объекта, такого как документ Word. Идентификаторы GUID широко используются в продуктах Microsoft для идентификации интерфейсов, наборов реплик, записей и других объектов. Разные виды объектов имеют разные виды GUID - например, база данных Microsoft Access использует 16-байтовое поле для создания уникального идентификатора для репликации.
Типы GUID
Существует 5 версий идентификаторов GUID, определенных в RFC 4122 , каждая с разными свойствами. Чтобы определить версию GUID, просто посмотрите на цифру версии, например, GUID версии 4 имеют формат xxxxxxxx-xxxx- 4 xxx- N xxx-xxxxxxxxxxxx, где N - это одно 5 значений 4, 8,9, A или B.
- Версия 1: дата-время и MAC-адрес - Эта версия генерируется с использованием текущего времени и MAC-адреса клиента. Это означает, что если у вас есть GUID версии 1, вы можете выяснить, когда он был создан, проверив значение метки времени.
- Версия 2: DCE Security - Эта версия специально не определена в RFC 4122, поэтому не должна генерироваться совместимыми генераторами. Он аналогичен GUID версии 1, за исключением того, что первые 4 байта метки времени заменяются пользовательским UID или GID POSIX, а старший байт последовательности часов заменяется доменом UID / GID POSIX.
- Версия 3: MD5 хэш и пространство имен - Этот GUID генерируется путем взятия пространства имен (например, полного доменного имени) и заданного имени, преобразования в байты, объединения и хеширования. После указания специальных битов, таких как версия и вариант, полученные байты затем преобразуются в его шестнадцатеричную форму. Особое свойство этой версии заключается в том, что идентификаторы GUID, сгенерированные из одного и того же имени в одном и том же пространстве имен, будут идентичны, даже если они генерируются в разное время.
- Версия 4: случайная - Этот тип GUID создается с использованием случайных чисел - из 128 битов в GUID 6 зарезервированы для специального использования (версия + вариантные биты), что дает нам 122 бита, которые могут быть заполнены случайным образом. Спецификация не определяет, как должны генерироваться случайные числа, они могут быть любыми, от псевдослучайных до криптографически безопасных, поэтому эти GUID, как и все другие GUID, следует использовать только для идентификации, а не для безопасности.
- Версия 5: SHA-1 хэш и пространство имен - Эта версия идентична версии 3 за исключением того, что SHA-1 используется на этапе хеширования вместо MD5.
Разделы реестра, где нужно искать:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\Uninstall
- HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ Microsoft\Windows\CurrentVersion\Uninstall
Как узнать GUID приложения
Пример вызова компонента Windows диспетчер устройств:
shell. ,для запуска необходимо вызвать диалоговое окно «Выполнить» используя клавиши Win + R, прописать данный код и нажать«OK» Все значения хранятся в разделе реестра HKEY_CLASSES_ROOTCLSID. Зайдя в CLSID поиск, лучше всего производить методом перебора значений для правильного определения в значении должен присутствовать подраздел ShellFolder. Для поиска нужного необходимо иметь время и терпение. Итак, всё по порядку.
Как узнать из реестра GUID приложения в Windows -01
Раздел реестра HKEY_CLASSES_ROOTCLSID
Клавишами Win + R открываем диалоговое окно «Выполнить» вводим команду regedit - открыть редактор реестра. Для поиска заходим в раздел реестра HKEY_CLASSES_ROOTCLSID
Пример: нам нужен «Панели управления — Control Panel», методом перебора значений находим нужный, смотрим наличие подраздела ShellFolder.
Как узнать из реестра GUID приложения в Windows -02
Для того, чтобы извлечь и проверить правой клавишей мыши нажимаем на значение, в открывшемся меню выбираем пункт «Экспортировать», и сохраняем с расширением .reg
Как узнать из реестра GUID приложения в Windows -03
Созданный файл реестра лучше всего открыть программой Notepad ++ познакомиться с которой можно в категории сайта «Офис».Если Вам понравился текстовой редактор Notepad ++ и Вы его установили, то правой клавишей мыши нажимаем на созданный файл реестра. В открывшемся меню выбираем «открыть с помощью Notepad ++ таким образом можно ознакомиться со структурой и синтаксисом файла реестра.
Как узнать из реестра GUID приложения в Windows -04
Выделяем значение, с помощью клавиш Ctrl + C копируем, вызываем диалоговое окно «Выполнить» и с помощью клавиш Ctrl + V вставляем, перед фигурными скобками прописываем Shell. и нажимаем«OK».
Как узнать из реестра GUID приложения в Windows -05
Как узнать GUID через PowerShell
Для того, чтобы вы могли быстро извлечь информацию, о GUID ,я могу вам предложить небольшой скрипт:
$UninstallKeys = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"$null = New-PSDrive -Name HKA -PSProvider Registry -Root Registry::HKEY_USERS
$UninstallKeys += Get-ChildItem HKU: -ErrorAction SilentlyContinue | Where-Object < $_.Name -match 'S-\d-\d+-(\d+-)\d+$' > | ForEach-Object < "HKU:\$($_.PSChildName)\Software\Microsoft\Windows\CurrentVersion\Uninstall" >
foreach ($UninstallKey in $UninstallKeys) Get-ChildItem -Path $UninstallKey -ErrorAction SilentlyContinue | Where -([A-Z0-9]-)[A-Z0-9]>$'> | Select-Object @>, @>
>
Еще один вариант воспользоваться вот такой конструкцией:
get - wmiobject Win32_Product | sort - object - property Name | Format - Table IdentifyingNumber , Name , LocalPackage - AutoSizeТут мы еще вывели пути расположения MSI пакетов для удаления приложения и его ремонту.
Как узнать GUID через CMD
Откройте cmd от имени администратора и выполните команду, которая создаст на диске C:\ файл с отчетом
InstallShield
Встретить его можно очень часто в платных продуктах, например:
Как правило такие инсталляторы не вызывают сложностей, достаточно их запустить с ключом “S”, и программа будет установлена в тихом режиме.
Примечание: Если параметр “wait” не отрабатывает, пробуйте использовать ключ “SMS”
Пример:
Start /wait setup.exe /s /sms
Как определить, что использовался Install Shield для упаковки инсталлятора
Открываем свойства файла, на вкладке «Подробно» в пунктах «Описание» и «Исходное имя файла» как правило будет указано значение «setup.exe”, а в «Название продукта»: «InstallShield».
К тому же запустив такой инсталлятор для обычной установки, как правило вы встретите такие слова:
InstallShield Wizard
Вас приветствует программа InstallShield Wizard для xxxxxxx
Программа InstallShield(R) Wizard установит и т.д.
Естественно, это всё может быть написано и по-английски.
Windows Installer Service (*.msi)
Все инсталляторы, запакованные с помощью Windows Installer, имеют расширение “*.msi”.
Примеры программ:
Использование InstallShield расширения *.msi
Автономный установщик обновлений Windows *.msu
Пример:
start c:\updates\kb3456246.msu /quiet /norestart /log:update.log
Inno Setup
Inno Setup не уступает многим системам создания инсталляторов, а некоторые по удобству и возможностям оставляет далеко позади, хотя и является бесплатными по правде говоря, он мне нравиться больше всех перечисленных в этой статье, многократно меня выручавший.
Inno Setup последнее время всё чаще и чаще используют для создания инсталляционных пакетов, не только разработчики бесплатных программ, но и коммерческих продуктов, например:
Хм, что это я расписался, буду о главном.
Inno Setup поддерживает два основных ключа для тихой установки, это «SILENT” и “VERYSILENT”.
Пример:
Start setup.exe /verysilent
Start setup.exe /silent
Иногда возникает небольшая проблемка: вылазит окошко с вопросом хотите ли вы продолжить установку. Чтобы скрыть это окно, используйте ключ “SP-“.
Пример:
Start setup.exe /VERYSILENT /SP-
Как узнать, используется ли Inno Setup для упаковки программы?
Nullsoft Scriptable Install System (NSIS)
Инсталляторы, созданные с помощью бесплатного NSIS, запускаются с ключом “S”.
Пример:
start setup.exe /S
Будьте внимательны, ключ должен быть в верхнем регистре, иначе он может просто не сработать.
Для указания директории установки можно использовать ключ “D”.
Пример:
Start setup.exe /S /D=c:\myprogram
Как определить использование NSIS
У всех инсталляторов, созданных с помощью NSIS очень схожий интерфейс, изучите внимательно процесс установки программы Winamp, и вы сможете без труда определить используется ли NSIS.
WISE Installer
Программа Wise Installation Studio позволит без особых усилий создавать инсталляционные пакеты приложений для операционной системы Windows Vista, 64-битных версий Windows и мобильной платформы Windows Mobile 5. Данный пакет поддерживает формат Windows Installer (MicrosoftI), а также имеет и собственный формат — WiseScript (.EXE).
Пользователи также смогут по достоинству оценить преимущества инновационной технологии Altiris Software Virtualization Solution, внедрённой в Wise Installation Studio, которая позволяет создавать виртуальные архивы приложений (.VSA) и гарантирует полное отсутствие конфликтов между устанавливаемыми продуктами.
Кроме того, новая версия Wise Installation Studio интегрируется с производимым компанией Nalpeiron пакетом PRO-Tector Standard. Это решение позволяет разработчикам создавать испытательные версии программных продуктов и обеспечивает надёжную защиту интеллектуальной собственности от незаконного использования.
Читайте также: