Как преобразовать файл MSM в файл MSI в командной строке?Делать это с помощью установщика Windows SDK или COM - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть файл MSM от стороннего инструмента.Мы настраиваем MSM с помощью небольшого сценария, и этот инструмент интегрирован в наш установщик и работает нормально.Все изменения выполняются с использованием VBscript с использованием COM и «WindowsInstaller.Installer»

Но иногда нашей поддержке требуется только этот инструмент в качестве автономного установочного пакета.

Существует ли простой способ преобразования файла MSM ва полный пакет MSI установщика в командной строке?

Использование VBscript или COM-модуля с «WindowsInstaller.Installer» в порядке.Зная, как его преобразовать, я бы также написал небольшую программу на C ++, выполняющую изменения и устанавливающую соответствующую информацию и преобразование.

Мне нужна командная строка, чтобы интегрировать преобразование MSM в нашу сборкуprocess.

То, что я искал и нашел:

В SDK я видел некоторые инструменты, такие как ORCA и другие инструменты MSI, но ни один из них не делает то, что мне нужно.ORCA может сохранить MSM в виде файла MSI, но я не вижу параметров, делающих это в командной строке.

Примечание. Я нашел старый инструмент msm2msi, но он не работает с моим файлом MSM и вылетает.и источник недоступен.

Редактировать Об изменениях, которые мы применяем:

Причины этого изменения просты.Модуль третьей стороны имеет «так называемый режим сервера», обычно он используется только на 1 машине, но MSM включает его для каждой машины.Поэтому мы решили отключить его при изменении свойства.И еще некоторые изменения.

Так что это больше о первичной установке.Когда приходит обновление, эти настройки никогда не затрагиваются.

Также MSM устанавливает свой собственный пользовательский интерфейс, который нам не нужен и не нужен.Все управление осуществляется с помощью нашего программного обеспечения ... Итак, мы устанавливаем компоненты, но удаляем эти пункты меню в папке «Пуск».

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Transforms & msiexec.exe : С вашей обновленной информацией я бы сказал, что вы можете решить все это, используя преобразование или, возможно, даже установив свойство через установку командная строка.

Преобразования позволяют вам изменять «что-нибудь» в MSI / MSM (это небольшие фрагменты базы данных, применяемые во время выполнения для изменения MSI / MSM), установка ПУБЛИЧНОЙ СОБСТВЕННОСТИ (всегда в верхнем регистре) позволяет вам влиять на то, для чего предназначено это свойство влиять. Таким образом, последняя представляет собой «легковесную» настройку MSI / MSM, добавленную и поддерживаемую поставщиком, что прекрасно, когда доступно, но по моему опыту редко бывает достаточно (типичное использование - добавить лицензионный ключ или IP-адрес или URL-адрес сервера или установить только часть MSI - несколько функций - такие простые вещи).

Описание использования transforms или командной строки msiexec.exe для настройки установки MSI можно найти здесь:


GUI : Я действительно не понимаю, что вы имеете в виду, когда MSM "устанавливает в своем собственном GUI"? Надеюсь, это просто ярлык для запуска исполняемого файла из меню «Пуск»? Если это так, вы можете легко удалить его с помощью преобразования.


Создать преобразование : Вы можете создавать преобразования, используя Orca (инструмент MS SDK) или любой другой MSI Deployment Tool , или вы можете создать его программно, используя MSI API ( Win32, COM, .NET ).

  • COM Automation : Microsoft MSI SDK содержит VBScript с именем WiGenXfm.vbs . Он будет установлен, если вы установили Visual Studio. Вы также можете найти его на github.com (но для уверенности получите его со своего собственного диска).

  • DTF / .NET - это компонент WiX, который позволяет получить доступ к API MSI через управляемый код. Взаимодействие сделано для вас. Пример здесь .

  • C ++ / Win32 : И непревзойденный Win32 (не принимайте замену - слои пропали :-)).


Примечание : DTF устанавливается как часть WiX toolkit . Набор инструментов с открытым исходным кодом, способный создавать файлы MSI ( предложения по быстрому запуску ). После установки найдите dll в папке установки WiX под %ProgramFiles (x86)%. Подпапка " bin ". Описание файлов здесь . И я закончу кратким примером DTF в действии , получающим некоторые свойства из файла MSI.

0 голосов
/ 18 сентября 2018

Любой MSI Tool может использовать файл MSM и скомпилировать MSI из него с любыми дополнительными конструкциями, которые вы хотите - возможнотакже изменения, которые вы вносите в MSM?

Бесплатный и открытый исходный код WiX Toolkit , безусловно, сможет компилировать MSI из MSI через командную строку,и это бесплатно и с открытым исходным кодом. Рекомендации по быстрому запуску WiX .

Однако есть основания для беспокойства в отношении изменений, которые вы намереваетесь внести в MSM .Это действительно очень плохие новости, поскольку файлы MSM специально созданы для того, чтобы их не могли изменить конечные пользователи.Было бы очень хорошо, если бы вы могли найти альтернативный способ внесения необходимых изменений, например, настраиваемые действия внутри файла MSI , который вы компилируете.

Хотя WiX иногда довольно сложен для решенияс, слияние и MSM не может быть проще:

<DirectoryRef Id="TARGETDIR">
    <Merge Id="VCRedist" SourceFile="MySourceFiles\Microsoft_VC80_CRT_x86.msm" DiskId="1" Language="0"/>
</DirectoryRef>

<Feature Id="VCRedist" Title="Visual C++ 8.0 Runtime" AllowAdvertise="no" Display="hidden" Level="1">
    <MergeRef Id="VCRedist"/>
</Feature>

Полный пример здесь: Как: установить распространяемый Visual C ++ с вашим установщиком .И документация: Элемент слияния .

Почему вы хотите объединять МСМ каждый раз?Это постоянно обновляется?Если да, может ли поставщик изменить его так, чтобы вам не нужно было публиковать его?Если он не обновляется, вы можете просто изменить самого MSM?Не очень приятно - на самом деле довольно ужасно - но это может быть менее подвержено ошибкам, чем постоянное переключение с его настройками.

...