with visual tutorial toolset studio msi how create session wix windows-installer custom-action

session - visual - ¿Hay alguna forma alternativa de acceder a los detalles de la sesión en acción personalizada diferida?



wix visual studio 2012 (2)

Detalles adicionales: se pueden pasar varios valores de propiedad utilizando la siguiente sintaxis en un "Tipo de acción personalizada 51" (que básicamente es solo una acción personalizada que establece un valor de propiedad):

PROPERTY1=Value1;PROPERTY2=Value2;PROPERTY3=...

Los valores se pueden recuperar desde dentro de la acción personalizada de esta manera:

string prop1 = session.CustomActionData["PROPERTY1"]; string prop2 = session.CustomActionData["PROPERTY2"];

Aquí hay un ejemplo que establece valores de propiedades para una acción personalizada con ID "MyCustomAction":

<CustomAction Id="SetCustomActionPropertyValues" Property="MyCustomAction" Value="INSTALLDIR=[INSTALLDIR];EXECUTABLE=[#MyExecutableFile]" />

(lea este artículo de MSDN para obtener más detalles sobre la sintaxis formateada que en este ejemplo se usa para recuperar la ubicación de instalación de un archivo con ID "MyExecutableFile")

Tengo una acción personalizada y necesito obtener los valores inferiores para copiar algunas partes de la carpeta de instalación a la carpeta VS2010

  1. Ruta del directorio VS2010DEVENV (propiedad VS2010DEVENV )
  2. INSTALLLOCATION instalación (propiedad INSTALLLOCATION )

Para otorgar suficientes privilegios, he configurado una acción personalizada como Execute=''deferred'' Impersonate=''no'' . Pero cuando ejecuta el instalador, registra el mensaje:

No se puede acceder a los detalles de la sesión desde una acción personalizada no inmediata

Parece que no podemos acceder a una propiedad en una acción personalizada "diferida" (es decir, session["VS2010DEVENV"] )

¿Hay alguna otra manera para que pueda recuperar esos valores según sea necesario?


This debe ser útil. Preste especial atención a la parte inferior de la página, una guía de 2 pasos sobre cómo pasar valores a través de CustomActionData .

Aquí está el extracto:

Para escribir el valor de una propiedad en el script de instalación para usar durante una acción personalizada de ejecución diferida:

  1. Inserte una pequeña acción personalizada en la secuencia de instalación que establece la propiedad de interés para una propiedad que tiene el mismo nombre que la acción personalizada de ejecución diferida. Por ejemplo, si la clave principal para la acción personalizada de ejecución diferida es "MiAcción", establezca una propiedad llamada "MiAcción" en la propiedad X que necesita recuperar. Debe establecer la propiedad "MiAcción" en la secuencia de instalación antes de la acción personalizada "MiAcción". Aunque cualquier tipo de acción personalizada puede establecer los datos de contexto, el método más simple es usar una acción personalizada de asignación de propiedades (por ejemplo, Tipo de acción personalizada 51).
  2. En el momento en que se procesa la secuencia de instalación, el instalador escribirá el valor de la propiedad X en el script de ejecución como el valor de la propiedad CustomActionData.