2009-11-02 11 views
5

Por algún motivo, estamos entregando un producto con nuestra propia GUI de instalación, es decir, ejecutaremos la instalación de msi en segundo plano de forma silenciosa.¿Cómo interactuar instalando silenciosamente msi? (Datos de progreso y cancelarlo)

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?

Respuesta

6

ACTUALIZACIÓN: Esta herramienta de Wise, lamentablemente no se puede descargar más. 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 se han descontinuado debido a un número de legal issues.


Creo que se puede conseguir el progreso a través de la API de MSI, pero si yo fuera usted me acaba de mostrar la barra de progreso de la propia MSI después de invocar la instalación a través de msiexec.exe.

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

instalar de forma silenciosa con la barra de progreso, ningún botón y no hay diálogo modal cancelar 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 msi del generador de líneas de comando de Wise: http://www2.wise.com/filelib/WICLB.exe (ya no está disponible).

enter image description here

+0

le conseguiré un voto pero no para mi respuesta. No estamos usando la GUI de msi porque no se ajusta al estilo de nuestro producto, por lo que le proporcionamos una barra de progreso más fresca, todo lo que necesito son los datos de progreso para establecer nuestra barra. La GUI básica del msi no es aceptable. Y todavía no puedo cancelarlo de la API pura ¿verdad? – redjackwong

+1

Aquí hay una muestra de cómo trabajar con las vallas publicitarias de MSI y la barra de progreso: http://sourceforge.net/projects/msiprogramming/. Si esto no es lo que necesita, tal vez consulte los recursos en: http: //www.installsite.org –

+0

Recuerde hacer clic en el botón "ver todos los archivos" (de lo contrario, solo obtendrá una demostración). –

3

es necesario especificar un controlador de interfaz de usuario externo mediante MsiSetExternalUI o MsiSetExternalUIRecord antes MsiInstallProduct (este último es más agradable, pero tiene un mayor requerimiento versión MSI). 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.

+0

Gracias, MsiSetExternalUI funciona para este caso ~ – redjackwong