¿Puedo de alguna manera obtener valores ingresados ​​en la interfaz de usuario en mi código de clase de instalador de acciones personalizadas?

Esto parece que debería ser bastante simple. Tengo un proyecto de instalador de Windows. Dentro de la interfaz de usuario, agregué un cuadro de diálogo con 2 botones de opción. El instalador tiene una acción personalizada en 'Instalar' que usa una clase de instalación de la salida principal de uno de mis proyectos. ¿Es posible obtener el valor del botón de radio seleccionado desde dentro del Install método en la clase del instalador?

preguntado el 03 de mayo de 12 a las 21:05

3 Respuestas

Para obtener/establecer una propiedad, necesita un identificador MSI que, por lo que sé, no puede obtener de una acción personalizada de la clase .NET Installer.

Lo que podría hacer es configurar la acción personalizada para aceptar nuevos parámetros y asignar el valor de su propiedad a esos parámetros al configurar la acción personalizada.

contestado el 04 de mayo de 12 a las 09:05

Si se trata de un proyecto de instalación de Visual Studio, y parece serlo, la ventana de propiedades del cuadro de diálogo RadioButtons agregado le indica que el nombre de la propiedad es BOTÓN2, de modo que eso es lo que pasa a su clase de instalación de acción personalizada con el estándar /mybutton=[BUTTON2 ] tipo de sintaxis para que obtenga el valor usando la clave mybutton de la colección Context.Parameters en la clase del instalador.

El comportamiento del diálogo se describe aquí:

https://msdn.microsoft.com/en-us/library/vstudio/9x23561f(v=vs.100).aspx

y terminaría con un valor de 1 o 2 en su código, dependiendo de cuál se seleccionó. Con las clases de instalación, Visual Studio proporciona esa infraestructura en torno a la llamada, incluido el manejo de CustomActionData.

Me gusta:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/279e0aea-077c-4150-89ae-55d8494def1b/installer-class-passing-parameters

http://blog.billsdon.com/2011/05/passing-parameters-collected-dialog-custom-action-msi-c/

Respondido el 04 de junio de 15 a las 18:06

Si utiliza Fundación de herramientas de implementación de WiX (DTF) para desarrollar su acción personalizada, puede acceder a las propiedades:

  • para ejecución inmediata a través de session[property name] (Es cierto que no estoy muy familiarizado con este método, por lo que es posible que deba experimentar un poco) Ver esta pregunta de stackoverflow para más detalles
  • de ejecución diferida a través de CustomActionData
    • puedes poblar CustomActionData con los valores de sus propiedades en otra parte de su instalador y leer como session.CustomActionData[property name]

Un truco con CustomActionData es que el nombre de su propiedad debe coincidir con el nombre de su acción personalizada y usted proporciona los valores como una lista delimitada por punto y coma de pares de nombre = valor, por ejemplo Name1=value1;Name2=value2 etc.

También deberá ejecutar su ensamblaje a través de MakeSfxCA.exe para que su acción esté disponible para el instalador. Puede hacerlo como un evento posterior a la compilación en Visual Studio.

Las acciones personalizadas de .Net basadas en DTF se pueden usar en los instaladores WiX o InstallShield (probablemente cualquier herramienta que produzca instaladores MSI).

contestado el 23 de mayo de 17 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.