Существует ли инструмент или механизм для извлечения доступных общедоступных свойств из файла MSI Windows?
Некоторые поставщики, которые предоставляют MSI-файлы, сами не документируют их, поэтому мне любопытно посмотреть, есть ли способ представить их без исходного кода.
Property
таблицу. Был ли у вас какой-то конкретный рабочий процесс или сценарий использования за пределами MSI?Ответы:
Lessmsi предоставляет командную строку, а также интерактивное приложение для извлечения любого атрибута из .msi.
В интерактивном режиме откройте MSI, затем перейдите к представлению таблицы и выберите или введите «Свойство». Однако, хотя это дает имена свойств, оно не дает действительных значений для указанного свойства (или я не нашел подходящего места для поиска.)
Командная строка для вывода таблицы свойств на консоль (к сожалению, не может быть захвачена простым
> output.csv
перенаправлением)источник
Учитывая, что MSI-файл хранит открытые свойства во внутренней базе данных, вы можете просто запросить их, используя VBScript и SQL.
Вот пример сценария , который вернет все свойства, хранящиеся в файле MSI. Для определения общедоступных свойств принято использовать заглавные буквы, поэтому их обычно можно идентифицировать.
источник
Lessmsi - отличный инструмент, который, безусловно, работает здесь, если вы хотите открыть его графический интерфейс и провести ручное исследование. Тем не менее, я скажу, что следующая команда не может достоверно представить все свойства:
Один из способов (лучше) гарантировать, что вы получите все возможные свойства, - это выполнить установку, восстановить или удалить файл MSI и зарегистрировать процесс. Следующая команда записывает только свойства и ничего больше:
Вышеуказанная команда эквивалентна:
Мой предпочтительный метод, однако, заключается в том, чтобы на самом деле не устанавливать / удалять / восстанавливать (а просто извлекать вместо этого). Преимущества этого метода по сравнению с lessmsi состоят в том, что для него не требуется сторонняя утилита (например, lessmsi ) и не требуется возиться с какими-либо установками. Учитывая, что у вас достаточно дискового пространства для фактической установки программы, вы можете сделать:
Обратите внимание, что
<absolute_path_to_extract_to>
может указывать на несуществующий каталог (команда создаст необходимые каталоги или потерпит неудачу).Если по какой-либо причине вы ненавидите пользовательский интерфейс установки, вы можете добавить
/qr
опцию, которая «уменьшит» и, возможно, исключит пользовательский интерфейс без ущерба для процесса регистрации свойств. Однако, будьте осторожны - если вы пойдете «ниже», чем сокращенный пользовательский интерфейс (то есть./qb
|/passive
Или/qn
|/quiet
),<msi_property_logfile>
возможно , вам не хватает некоторых свойств.источник
Теперь я делаю это с помощью модуля Carbon Powershell. Для установки модуля введите:
Тогда просто
Пример:
источник
Я думаю, что сейчас, вероятно, лучший способ сделать это - использовать powershell. Вот скрипт, который действительно хорошо справляется со своей задачей: https://gallery.technet.microsoft.com/scriptcenter/Get-MsiDatabaseProperties-09d9c87c
источник