Как выполнить автоматическую установку и удаление с помощью WiX и MSI?

Как можно создать в WiX тихий установщик, который не отображает никаких диалоговых окон пользовательского интерфейса и устанавливает, обновляет и удаляет с настройками по умолчанию?


person MX4399    schedule 24.05.2010    source источник


Ответы (4)


Просто не включайте элементы UI/UIRef, и тогда пользовательский интерфейс не будет включен :)

person saschabeaumont    schedule 24.05.2010
comment
Это имеет очень ограниченную ценность. Двойной щелчок пользователя по MSI и его установка без какого-либо подтверждения или статуса результатов - очень неоптимальный пользовательский интерфейс IMO. Это нормально, если ваша часть группы MSI изменяется вместе другой программой, обрабатывающей пользовательский интерфейс (например, Visual Studio, SQL Server и т. д.), но если это отдельный MSI, я считаю, что это работа сделана только наполовину. - person Christopher Painter; 31.05.2012
comment
Я согласен, что это определенно имеет ограниченную ценность, но это действительно отвечает ОП. Лучшее (или правильное) решение — использовать параметры msiexec, как описано ниже. - person saschabeaumont; 05.06.2012
comment
Лучше всего использовать msiexec.exe с параметрами командной строки, указывающими тихий режим без пользовательского интерфейса. - person nil; 11.02.2013
comment
@Кристофер Пейнтер. Установка любого приложения в корпоративной среде на сотнях машин требует таких процессов, как использование групповой политики. Наличие пользовательского интерфейса неоптимально, и это пустая трата времени, заставляющая сотрудников идти и нажимать клавиши на КАЖДОЙ машине компании, просто там, где требуется новое приложение. - person midspace; 05.03.2013
comment
Используйте уже упомянутый msiexec.exe /i foo.msi /qn. Таким образом, пользовательский интерфейс поддерживается для отдельных пользователей и администраторов, занимающихся устранением неполадок, и может быть скрыт для развертывания. - person midspace; 05.03.2013
comment
Я использую SCCM для одновременной доставки установщиков на 100 000 машин. Уверяю вас, что никто не собирается нажимать «Далее». Но они могут, если они действительно нуждаются/захотят. - person Christopher Painter; 05.03.2013
comment
Когда я попробовал это, пользовательский интерфейс все еще был включен — небольшой диалог с индикатором выполнения. Мне пришлось использовать 7zip, чтобы создать загрузчик для распаковки и запуска MSI с /qn. - person Ed Bayiates; 28.06.2014

Установщик Windows (MSI) использует следующие аргументы командной строки для отключения звука:

Тихая установка или тихое крупное обновление:

msiexec.exe /i foo.msi /qn

Тихое незначительное обновление:

msiexec.exe /i foo.msi REINSTALL=ALL REINSTALLMODE=vomus /qn

Тихая деинсталляция:

msiexec.exe /x foo.msi /qn

Исполняемый путь:

C:\Windows\system32\msiexec.exe
person Christopher Painter    schedule 24.05.2010
comment
Отличный ответ. Небольшая проблема заключается в том, что если вам нужно авторизовать установку через диалоговое окно UAC, ни один из них не будет представлен с использованием /qn. Однако, если вы используете /qb, у вас есть возможность авторизовать его. - person Steztric; 22.06.2015
comment
То есть функции, как задумано. Автоматическая установка по определению не интерактивна, а запрос UAC — это взаимодействие. Если не нажать кнопку «Да» в течение 30 секунд, установка завершится неудачно. Ваш вызывающий процесс уже должен быть повышен до вызова установки. - person Christopher Painter; 24.12.2015
comment
Я также столкнулся с той же проблемой, когда я попытался запустить MSI в режиме полного пользовательского интерфейса, дважды щелкнув MSI, он предлагает мне UAC (имя программы, издатель: неизвестно, происхождение файла), и мне нужно выбрать «да», чтобы продолжить установка, но мне нужно установить MSI с помощью команды cmd msiexec в неинтерактивном режиме (в основном это должно автоматически принимать yes в UAC), но это не происходит в любом случае (/q /a /qn). Я использую инструмент для развертывания MSI на сотнях серверов, и он внутри создает команду (msiexec /i ‹MSI PATH› /qn), которая приводит к сбою. У кого-нибудь есть решение для этого? - person Vaibhav Jain; 30.08.2017

Установщик .exe, созданный с помощью WiX, можно запустить из командной строки, не требуя ввода пользователя, с помощью одного из следующих параметров командной строки:

  • /quiet - вообще не отображает пользовательский интерфейс
  • /passive — отображает пользовательский интерфейс, но не требует ввода данных пользователем. По сути просто отображает индикатор выполнения установки

Этот ответ основан на WiX 3.9.

person Kevin Kalitowski    schedule 16.07.2015
comment
Как передать путь установки? - person kudlatiger; 01.03.2019

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

person Charles Gargent    schedule 25.05.2010
comment
Элемент обновления WiX задает свойство UpgradeCode и авторизует строку в таблице Upgrade. Технически первый MSI не должен иметь элемент обновления. Он должен иметь только свойство UpgradeCode. Если вы забудете это сделать, есть уловки, которые включают фальшивую запись таблицы обновлений в последующих MSI с пользовательским действием, которое устанавливает свойство действия в ProductCode первого MSI. Хотя постарайтесь этого избежать. :-) - person Christopher Painter; 24.02.2014