2012-03-05 19 views
12

una vez más estoy atascado en un problema, que probablemente sea fácil de resolver.
Quiero extender una configuración, creada con WiX, para realizar cambios en el archivo de configuración del programa instalado. Para hacer esto, he creado CustomAction. Para poder cambiar el archivo de configuración, necesito saber su ubicación (de instalación) dentro de mi CustomAction. Por lo tanto, intento pasar el INSTALLLOCATION y el nombre de archivo a mi CustomAction. Aquí radica el problema: CustomActionData -El atributo siempre está vacío y la configuración arroja una excepción.WiX CustomActionData está vacío en la llamada CustomAction

Mi CustomAction es un archivo DLL de C#: DemoDatumErzeugen.CA.dll. Contiene un método DatumEintragen que modifica el archivo de configuración. Estoy tratando de acceder a los datos de esta manera:

string path = session.CustomActionData["LOCATION"]; 

Aquí es donde se produce la excepción. Solo recibí el mensaje de error alemán, pero dice algo parecido a: The supplied key was not found in the dictionary (Der angegebene Schlüssel war nicht im Wörterbuch angegeben.).

Esta es la forma en que trato de pasar las propiedades de mi configuración-script para mi acción personalizada:

<Binary Id="DemoDatumEinrichtenCA" SourceFile="DemoDatumErzeugen.CA.dll"/> 

<CustomAction Id="DemoDatum.SetProperty" Return="check" Property="DatumEintragen" Value="LOCATION=[INSTALLLOCATION];NAME=StrategieplanConfig.xml;"/> 
<CustomAction Id="DemoDatum" BinaryKey="DemoDatumEinrichtenCA" DllEntry="DatumEintragen" Execute="deferred" Return="check" HideTarget="no"/> 

<InstallExecuteSequence> 
    <Custom Action="DemoDatum.SetProperty" After="InstallFiles"/> 
    <Custom Action="DemoDatum" After="DemoDatum.SetProperty"/> 
</InstallExecuteSequence> 

que he visto muchos ejemplos en los que se realizó de la misma manera o al menos muy similares. He intentado muchas cosas, pero nada parece ayudar como cambiar el valor después en <Custom Action="DemoDatum.SetProperty" After="InstallFiles"/>. CustomActionData siempre es cero.
Lo compruebo con: session.CustomActionData.Count
Una vez más, estoy muy agradecido por cualquier ayuda o sugerencias en las que he hecho algo mal.

Respuesta

17

El valor de atributo Property de DemoDatum.SetProperty debe ser igual al valor de atributo Id de la acción diferida. Por lo tanto, cambie el nombre de la propiedad a DemoDatum, o cambie Id de la acción diferida al DatumEintragen.

+0

¡De hecho! Eso fue todo. Muchas gracias. Es fácil pasar por alto. – Skalli

+0

@Yan Sklyarenko Estoy enfrentando un problema durante la instalación de mi .exe creado usando la aplicación bootstraper. ¿Puede mirar este SO y ayudarme a http://stackoverflow.com/questions/27151665/error-0x80070643-fatal-error -during-installation-wix – user2725407

Cuestiones relacionadas