¿Cómo interactuar instalando silenciosamente msi? (Datos de progreso y cancelarlo)

Por algún motivo, estamos entregando un producto con nuestra propia GUI de instalación, es decir, ejecutaremos la instalación de msi de forma silenciosa.

Al utilizar la API de MSI “MsiInstallProduct”, puedo instalar el producto de forma silenciosa, pero no tengo idea de cómo puedo obtener los datos de progreso de esta instalación y cómo puedo cancelarla.

Alguien tiene algunas ideas?

Aquí hay un proyecto de muestra que parece hacer lo que usted se refiere: http://www.codeproject.com/KB/cs/msiinterop.aspx

ACTUALIZACIÓN en junio de 2018 : aunque la herramienta que se muestra a continuación ya no está disponible para su descarga, la encontré a través de la máquina Wayback. Supongo que está bien y es legal vincularlo, ya que la herramienta era freeware. Enlaces actualizados a continuación.

ACTUALIZACIÓN : esta herramienta de Wise lamentablemente ya no se puede descargar . No estoy seguro si está bien distribuirlo tampoco. Parecía ser una herramienta gratuita distribuida como parte de su suite principal de Wise Package Studio, pero no creo que sea de código abierto. Desearía que lo lanzaran como una herramienta de código abierto.

Los productos de embalaje Wise han sido descontinuados debido a una serie de problemas legales .


Creo que puede obtener el progreso a través de la API de MSI, pero si yo fuera usted, solo mostraría la barra de progreso del MSI después de invocar la instalación a través de msiexec.exe .

MSI admite varios niveles de instalación diferentes (completa, completamente silenciosa, GUI básica, GUI reducida, etc.). En tu caso, parece que quieres una IU básica. Esto produce una barra de progreso donde puede ocultar el botón cancelar y, opcionalmente, mostrar un cuadro de diálogo modal de finalización:

Instalar silenciosamente con la barra de progreso, sin botón de cancelar y sin diálogo modal al final:

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

Para evitar tener que construir estas tontas líneas de comando de msiexec manualmente, use la herramienta de creación de líneas de comando msi de Wise: http://www2.wise.com/filelib/WICLB.exe ( resucitado de la máquina Wayback ).

Ejecute la descarga por virustotal.com para mayor seguridad.

enter image description here


Relacionado :

  • instalación usando msi.exec abre opciones de ayuda cada vez
  • Instalación silenciosa de MSI
  • Cómo instalar un paquete MSI desde un símbolo del sistema
  • ¿Cómo obligo al instalador MSI de Windows a realizar una instalación completa?
  • Instalador silencioso con selección personalizada

Debe especificar un controlador de IU externo utilizando MsiSetExternalUI o MsiSetExternalUIRecord antes de MsiInstallProduct (este último es más agradable, pero tiene un requisito de versión de MSI más alto). Se llamará a la función que especifique para cada mensaje que Windows Installer desee que procese. Esto le dará los datos, y la posibilidad de responder le indicará que cancele. Si necesita MSI 4.5 o posterior, puede usar una DLL de controlador de interfaz de usuario externa incrustada, que no requiere un arranque.