Как взаимодействовать с бесшумной установкой msi? (Данные прогресса и отменить его)

По какой-то причине мы поставляем продукт с нашим собственным графическим интерфейсом для установки, а это значит, что мы будем запускать беспроволочный фон msi.

Используя MSI API «MsiInstallProduct», я могу установить продукт тихо, но я не знаю, как я могу получить данные о ходе выполнения этой установки и как я могу ее отменить.

У кого-нибудь есть идеи?

Вот пример проекта, который, похоже, делает то, что вы имеете в виду: http://www.codeproject.com/KB/cs/msiinterop.aspx

UPDATE June 2018 : Хотя инструмент, показанный ниже, больше не доступен для загрузки, я нашел его через Wayback. Я предполагаю, что это нормально и законно ссылаться на него, поскольку инструмент был бесплатным. Обновленные ссылки ниже.

UPDATE : этот инструмент от Wise, к сожалению, больше не загружается . Я не уверен, нормально ли распространять его. Казалось, что это бесплатный инструмент, распространяемый как часть их основного пакета Wise Package Studio, но я не думаю, что он является открытым исходным кодом. Мне жаль, что они не выпустят его как инструмент с открытым исходным кодом.

Продукты Wise упакованы из-за ряда юридических проблем .


Я считаю, что вы можете добиться прогресса через MSI API, но если бы я был вами, я бы просто показал индикатор выполнения из самой MSI после вызова установки через msiexec.exe .

MSI поддерживает несколько разных уровней установки (полный, полностью бесшумный, базовый графический интерфейс, уменьшенный графический интерфейс и т. Д.). В вашем случае это звучит так, как будто вы хотите использовать базовый интерфейс. Это дает индикатор выполнения, в котором вы можете скрыть кнопку отмены и, при желании, показать диалог завершения завершения:

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

msiexec.exe /I "Test.msi" /QB-! 

Чтобы избежать необходимости строить эти глупые командные строки msiexec вручную, используйте средство построения командной строки msi из Wise: http://www2.wise.com/filelib/WICLB.exe ( воскрешено с машины Wayback ).

Пожалуйста, запустите загрузку virustotal.com для обеспечения безопасности.

введите описание изображения здесь


Связанные :

  • установка с помощью msi.exec открывать параметры справки каждый раз
  • Тихая установка MSI
  • Как установить пакет MSI из командной строки
  • Как заставить установщик MSI выполнить полную установку?
  • Silent Installer с пользовательским выбором

Вам нужно указать внешний обработчик пользовательского интерфейса, используя MsiSetExternalUI или MsiSetExternalUIRecord перед MsiInstallProduct (последнее лучше, но имеет более высокое требование к версии MSI). Указанная функция будет вызываться для каждого сообщения, которое установщик Windows хочет обработать. Это даст вам данные и возможность ответить, чтобы отменить его. Если вам требуется MSI 4.5 или более поздняя версия, вы можете использовать встроенную внешнюю DLL-обработчик пользовательского интерфейса, которая не требует загрузки.

Давайте будем гением компьютера.