Как сжать модуль слияния?

У меня есть несколько модулей слияния (файлы MSM) от стороннего производителя. К сожалению, я думаю, что дроны, которые сделали MSM, просто щелкнули через InstallShield и не создали красивый компактный MSM. Я открыл MSM и удалил некоторые настраиваемые действия InstallShield, которые были абсолютно не нужны - они открывали окно консоли и сильно раздували мою установку.

Эти двоичные файлы настраиваемых действий InstallShield хранились в папке Двоичная таблица. Я удалил эти записи с помощью Orca и сохранил MSM. В результате мой скомпилированный файл MSI значительно уменьшился. (Я использую WiX для компиляции).

К сожалению, файлы MSM не уменьшились в размере после удаления строк двоичной таблицы в Orca. Я попытался использовать «Сохранить как» и сохранить в файл MSM, но результат составил всего 36 КБ - это также устранило фактические файлы, необходимые для MSM! Изучение файлов MSM до и после в 7-Zip (для просмотра внутреннего структурированного хранилища OLE, которое использует MSI) показывает, что нарушающие потоки данных действительно были удалены, но файл в целом не сжался.

Я подозреваю, что мне нужно как-то сжать файл MSM, чтобы освободить место, необходимое для удаленных пользовательских действий. Как мне это сделать?

(Почему я спрашиваю? Хотелось бы, чтобы об этом позаботились, прежде чем вносить что-либо в распределенную систему управления версиями.)


person James Johnston    schedule 28.11.2011    source источник


Ответы (1)


Редактировать файлы модулей слияния непросто, тем более что они содержат CAB-архив со своими файлами. Я не думаю, что Орки достаточно.

Самый простой и безопасный подход - использовать инструмент создания настроек для их импорта, изменения их настроек и содержимого, а затем создания новых файлов MSM.

Что касается настраиваемых действий, обратите внимание, что инструменты разработки установки (включая InstallShield) редко добавляют настраиваемые действия автоматически. Так что я уверен, что эти настраиваемые действия были добавлены с определенной целью.

Перед удалением информации убедитесь, что они вам действительно не нужны.

person cosmin    schedule 28.11.2011
comment
Чтобы пойти дальше, я собираюсь полностью отказаться от MSM и просто поместить файлы в каталог своего приложения. Они только помещают некоторые библиотеки DLL в общий каталог, а затем помещают этот каталог в PATH. Проблема в том, что у этой компании не выяснена ситуация с развертыванием: если у клиента уже есть более старая версия своего инструментария в PATH, то наше программное обеспечение ломается. - person James Johnston; 29.11.2011