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