with visual tutorial toolset studio prime how create wix windows-installer msiexec

wix - visual - Instalar instancias múltiples de un MSI con nombre de instancia dinámico



wix toolset visual studio (2)

Nuestro producto tiene un instalador MSI (escrito en WiX) que básicamente copia algunos archivos en una carpeta c: / ourproduct e instala un servicio de Windows "ourwindowsservice".

Nos gustaría agregar soporte para varias instancias del servicio, y debería ser posible instalarlas / desinstalarlas de manera independiente. Similar, por ejemplo, a SQL Server, cada instancia debe tener un nombre que se pueda pasar al MSI como un parámetro de línea de comando.

Ejemplo: instancia "A" => copiar archivos a "c: / ourproductA", instalar el servicio como "ourwindowsserviceA" instancia "B" => copiar archivos a "c: / ourproductB", instalar el servicio como "ourwindowsserviceB" ...

¿Alguna idea?

La transformación de instancias parece requerir un conjunto de instancias predefinidas y nombradas previamente.

Gracias


La columna de nombre de la tabla ServiceInstall es el tipo con formato. Esto significa que puede usar propiedades en tiempo de ejecución para conducir el nombre.

Hace unos años, escribí un artículo de blog sobre instaladores de instancias múltiples. En los comentarios, alguien preguntó sobre un número dinámico de instancias y hablo sobre lo que se debe hacer. Básicamente, tendría que escribir un bootstrapper.exe que tuviera una IU y podría impulsar la creación de transformadas con propiedades únicas. Usar C # y WiX / DTF para su Interoperabilidad de MSI es bastante posible. Simplemente nunca sentí la necesidad de hacerlo realmente. He sido perfectamente feliz con Producto, Producto-1 ... Producto-15 y listo. Los métodos abreviados tienen que hacerse mediante una acción personalizada porque no son compatibles con el tipo de formato, pero INSTALLDIR se puede modificar y ServiceNames admite el formato.


Lamentablemente, el artículo que mencionó es correcto, Windows Installer no admite instancias dinámicas. Incluso las herramientas comerciales que admiten instancias múltiples requieren definir las instancias desde el principio. Entonces, en su caso, necesitaría definir las instancias A, B, C, etc., manualmente antes de generar el instalador.

Esto se debe a que un producto está identificado por su ProductCode (entre otras cosas), por lo que debe aplicar una transformación a su MSI que cambie la identidad. Es bastante difícil generar transformaciones sobre la marcha porque necesita herramientas especiales o la API de Windows Installer que generalmente no se encuentra en una máquina de usuario.

Sin embargo, como mencionó Christopher, puede intentar simular una instancia dinámica utilizando las propiedades del instalador. Estas propiedades se pueden establecer a través de la interfaz de usuario de instalación o mediante un bootstrapper personalizado.