Добавить команду контекстного меню извлечения в файлы MSI
Если у вас есть пакет MSI, вас может заинтересовать извлечение его содержимого без установки приложения. Это можно быстро сделать без использования сторонних инструментов. Windows уже поставляется со всем необходимым для работы. В этой статье мы увидим, как добавить полезную команду «Извлечь» в контекстное меню файла MSI.
Windows обрабатывает пакеты MSI через приложение msiexec, которое является частью установщика Windows. Это встроенный инструмент, который поддерживает ряд переключателей командной строки. Вы можете узнать о них, выполнив следующую команду.
- Нажмите Победить + р сочетания клавиш на клавиатуре, чтобы открыть диалоговое окно «Выполнить».
- В поле «Выполнить» введите следующее:
msiexec /?
- Установщик Windows отобразит содержимое справки в окне:
Он поддерживает следующие переключатели:
Варианты установки
Устанавливает или настраивает продукт
/ a Административная установка - устанавливает продукт в сети.
/ j [/ t] [/ g]
Рекламирует продукт - m всем пользователям, u текущему пользователю
Удаляет продукт
Показать варианты
/quiet
Тихий режим, без взаимодействия с пользователем
/passive
Автоматический режим - только индикатор выполнения
/q[n|b|r|f]
Устанавливает уровень пользовательского интерфейса
n - Нет интерфейса
б - Базовый интерфейс
r - уменьшенный интерфейс
f - Полный интерфейс (по умолчанию)
/help
Справочная информация
Параметры перезагрузки
/norestart
Не перезагружать после завершения установки
/promptrestart
При необходимости запрашивает у пользователя перезагрузку
/forcerestart
Всегда перезагружайте компьютер после установки
Параметры ведения журнала
/l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*]
i - Статусные сообщения
w - нефатальные предупреждения
e - Все сообщения об ошибках
а - Запуск действий
r - записи, относящиеся к действию
u - запросы пользователей
c - Начальные параметры пользовательского интерфейса
m - информация о нехватке памяти или о фатальном выходе
o - Сообщения о нехватке места на диске
p - Свойства терминала
v - Подробный вывод
x - Дополнительная отладочная информация
+ - Добавить в существующий файл журнала
! - Сбросить каждую строку в журнал
* - Записывать всю информацию, кроме опций v и x
/log
Эквивалент / л *
Параметры обновления
/ update [; Update2.msp]
Применяет обновления
/ uninstall [; Update2.msp] / package Удалить обновления для продукта
Варианты ремонта
/ f [p | e | c | m | s | o | d | a | u | v] Восстанавливает продукт
p - только если файл отсутствует
o - если файл отсутствует или установлена более старая версия (по умолчанию)
e - если файл отсутствует или установлена более ранняя или более ранняя версия
d - если файл отсутствует или установлена другая версия
c - если файл отсутствует или контрольная сумма не соответствует вычисленному значению
a - принудительно переустановить все файлы
u - все необходимые записи реестра для конкретного пользователя (по умолчанию)
m - все необходимые записи реестра для конкретного компьютера (по умолчанию)
s - все существующие ярлыки (по умолчанию)
v - запускается из исходного кода и повторно загружает локальный пакет
Установка общедоступных свойств
[PROPERTY = PropertyValue]
Вариант, касающийся этой ситуации, - / a. Хотя он описан как «Административная установка - устанавливает продукт в сети», его можно использовать для извлечения содержимого одного пакета MSI в отдельные файлы меньшего размера, которые могут обслуживаться пластырь. Можно использовать следующую команду:
msiexec / a "путь \ к \ package.msi" / qb TARGETDIR = "путь \ к \ папке \ назначения \"
TARGETDIR - это свойство, общее для каждого пакета, которое определяет папку назначения для содержимого пакета MSI.
Переключатель «/ qb» указывает установщику Windows показывать основной интерфейс во время процесса. Откроется диалоговое окно с кнопкой «Отмена» и индикатором выполнения.
Например, я могу использовать следующую команду для распаковки установщика MSI FAR Manager:
msiexec / a "C: \ Users \ winaero \ Downloads \ Far30b4774.x64.20160902.msi" / qb TARGETDIR = "C: \ Users \ winaero \ Downloads \ Far"
Если целевая папка не существует, она будет создана автоматически. В моем случае будет создана подпапка Far в папке Download.
Приведенную выше команду можно ввести непосредственно в диалоговом окне «Выполнить».
Добавить команду контекстного меню извлечения в файлы MSI
- Открытым Редактор реестра.
- Перейдите к следующему ключу реестра:
HKEY_CLASSES_ROOT \ MSI. Пакет \ оболочка
Кончик: Как перейти к нужному разделу реестра одним щелчком мыши.
- Создайте здесь новый подключ и назовите его Извлекать.
- Под ключом Extract создайте новый подраздел и назовите его Командование:
- Установите значение по умолчанию для Командование подключ к следующей строке:
msiexec.exe / a "% 1" / qb TARGETDIR = "% 1 Содержание"
См. Следующий снимок экрана:
Как только вы щелкните правой кнопкой мыши пакет MSI в проводнике, вы найдете новый пункт контекстного меню «Извлечь». Если вы его запустите, он создаст новый каталог «package_name.msi Contents» в текущей папке и извлечет туда содержимое пакета. См. Следующий снимок экрана:
Чтобы сэкономить ваше время, я сделал готовые файлы реестра. Вы можете скачать их по ссылке ниже.
Скачать файлы реестра
Файл отмены включен.
Этот трюк работает в Windows 10, Windows 8 и Windows 7.
Обратите внимание, что некоторые пакеты не поддерживают административную установку. Их нельзя извлечь этим методом. Кроме того, когда вы извлекаете пакет MSI таким образом, его административная точка установки (папка, в которую он извлекается) становится обслуживаемой. Патч установщика Windows (MSP) может использоваться для его обновления, поэтому при установке пакета также применяется исправление.