определить параметры MSI для автоматической установки - PullRequest
11 голосов
/ 02 марта 2010

У меня есть MSI-пакет, в котором есть возможность установить два разных языка, есть ли способ определить параметр, отвечающий за выбор языка, чтобы я мог использовать командную строку для автоматической установки пакета (автоматическая установка)?

Спасибо

Ответы [ 2 ]

7 голосов
/ 02 марта 2010

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

Так что если вы решите, как вы хотите пометить свой язык, укажите для него свойство, а затем вы можете связать установку компонентов или функций внутри MSI с этим флагом / переменной.

Так что, если вы еще не знакомы с понятиями, посмотрите компоненты , , свойства и , свойства MSI. Вы не упоминаете, какой компоновщик MSI вы используете - если вы используете тот, который поставляется с Visual Studio, я не знаю, способен ли он предоставить вам доступ к компонентам и функциям, но есть один или два по низкой цене или бесплатные (то есть Wix) альтернативы, которые делают (если вы используете что-то правильное, такое как Wise или InstallShield, тогда вы имеете полный контроль над всеми этими вещами).

Редактировать: вот ссылка на скрипт, который будет извлекать список общедоступных свойств для вас (щелкните по тексту Получить файл MSI-File properties.vbs чтобы увидеть сценарий). В качестве альтернативы Как узнать, какие общедоступные свойства доступны? и Извлечение свойств из файла MSI без установки может предоставить вам некоторые другие варианты .

Ребята из ServerFault , вероятно, смогут гораздо больше помочь с этим, я знаю, что есть некоторые инструменты администратора Windows, которые позволяют вам разобрать и / или обернуть MSis, но я не могу помните, как они называются.

2 голосов
/ 23 сентября 2018

( Примечание : я опубликовал вариант этого ответа на другом сайте StackExchange для аналогичного вопроса.)

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

Если вы ищете быстрое решение, вы можете попробовать:

lessmsi l -tProperty <msi_name>

К сожалению, вполне вероятно, что приведенная выше команда не выведет свойства, которые вы ищете (sidenote: выходные данные отформатированы в csv).

Один из способов по существу гарантировать, что вы получите все возможные свойства, - это выполнить установку, восстановление или удаление с помощью файла MSI и зарегистрировать процесс. Следующая команда записывает только свойства и ничего больше:

<msi_name> /lp! <msi_property_logfile>

Указанная выше команда эквивалентна:

msiexec /lp! <msi_property_logfile> /i <msi_name>

Мой предпочтительный метод, однако, заключается в том, чтобы не фактически устанавливать / удалять / восстанавливать (и просто вместо этого извлекать). Преимущества этого метода по сравнению с lessmsi заключаются в том, что для него не требуется сторонняя утилита (т. Е. lessmsi ) и не требуется возиться с какими-либо установками. Учитывая, что у вас достаточно дискового пространства для фактической установки программы, вы можете сделать:

msiexec /a <msi_name> /lp! <msi_property_logfile> TARGETDIR=<absolute_path_to_extract_to>

Обратите внимание, что <absolute_path_to_extract_to> может указывать на несуществующий каталог (команда создаст необходимые каталоги или потерпит неудачу).

Если вы по какой-либо причине ненавидите пользовательский интерфейс установки, вы можете добавить опцию /qr, которая «уменьшит» и, возможно, удалит пользовательский интерфейс без ущерба для процесса регистрации свойств. Однако, будьте осторожны - если вы пойдете «ниже», чем сокращенный пользовательский интерфейс (то есть /qb | /passive или /qn | /quiet), в вашем <msi_property_logfile> могут отсутствовать некоторые свойства.

Как только процесс завершится, вы просто откроете файл журнала и отметите строки, начинающиеся с Property(S): / Property(C):. Вообще говоря, параметры / свойства, которые могут быть установлены для установки, регистрируются во ВСЕХ CAPS; например, ALLUSERS можно установить ALLUSERS=1, чтобы установка была для всех пользователей.

Таким образом, для только что приведенного примера установка в автоматическом режиме может выглядеть примерно так:

msiexec /i <msi_name> /passive ALLUSERS=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...