Все, что мне нужно - это инструмент командной строки, который может извлекать файлы из модуля слияния (.msm) на диск. Иными словами, мне нужна та же функциональность «административной установки», которая возможна для MSI:
msiexec / a myProduct.msi TARGETDIR = "C: \ myInstallation" / qn
Выше работает только на MSI (насколько я могу сказать). Таким образом, чтобы получить тот же эффект для модуля слияния, я пытаюсь msidb.exe и orca.exe Документация для состояний orca:
Многие опции модуля слияния могут быть
указывается из командной строки ...
Извлечение файлов из модуля слияния
Orca поддерживает три разных метода
для извлечения файлов, содержащихся в
модуль слияния. Орка может извлечь
индивидуальный CAB-файл, распакуйте файлы
в дерево модулей и извлечь
файлы в исходное изображение, когда оно имеет
были объединены в целевую базу данных ...
Извлечение файлов
Чтобы извлечь отдельные файлы из
модуль слияния, используйте
... -x ... опция на
командная строка, где находится
желаемый путь к новому каталогу
дерево.
Указанный путь используется как корень
путь для извлеченных файлов. Все
файлы извлекаются из файла CAB
встроен в модуль и помещен в
указанный путь. Каталог
макет для извлеченных файлов
на основе дерева каталогов
модуль слияния.
Звучит так, как мне нужно. Но когда я пытаюсь это сделать, orca просто открывает редактор (с информацией о msm, которую я указал) , а затем ничего не делает . Я пробовал различные командные строки, обычно начинающиеся с этого:
orca -x theDirectory theModule.msm
Я использую "theDirectory" как любую пустую папку, которую я хочу. Как я уже сказал - ничего не получилось.
Затем я попробовал msidb, где пара попыток выглядела так:
msidb -d theModule.msm -w {хранилище}
msidb -d theModule.msm -x MergeModule.CABinet
В первом случае я не знаю, что положить для {хранилища}. Во втором случае оказывается, что необходима буквальная строка «MergeModule.CABinet» (это зарезервированное имя). Однако извлеченный кабинет не сохраняет файловую иерархию или «нормальные» имена файлов; поэтому я не могу использовать его в своих целях.
Может кто-нибудь объяснить, что я делаю неправильно с параметрами командной строки? Есть ли другой инструмент, который может сделать это?