Wix CustomActionData est vide dans CustomAction appelée

encore une fois je suis coincé à un problème, qui est probablement facile à résoudre.

Je veux étendre un setup, créé avec WiX, pour faire des changements dans le fichier de configuration du programme installé. Pour ce faire j'ai créé un CustomAction . Pour pouvoir modifier le fichier de configuration, j'ai besoin de connaître son emplacement (install-)dans mon CustomAction . J'essaie donc de passer L'installation et nom de fichier de mon CustomAction . Voici le problème: L'attribut CustomActionData - est toujours vide et la configuration lance une exception.

mon CustomAction est un fichier C# DLL: DemoDatumErzeugen.CA.dll . Il contient une méthode DatumEintragen qui modifie le fichier de configuration. J'essaie d'accéder aux données de cette façon:

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

C'est là que l'exception est levée. J'ai seulement eu l' Message d'erreur allemand, mais il dit quelque chose dans le sens: The supplied key was not found in the dictionary ( Der angegebene Schlüssel war nicht im Wörterbuch angegeben. ).

C'est comme ça que j'essaie de passer les propriétés de mon script de configuration à mon action personnalisée:

<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>

j'ai vu beaucoup d'exemples où il a été fait de la même manière ou au moins très similaire. J'ai essayé beaucoup de choses mais rien ne semble aider comme changer la valeur après dans <Custom Action="DemoDatum.SetProperty" After="InstallFiles"/> . CustomActionData est toujours zéro.

Je vérifie avec: session.CustomActionData.Count

Encore une fois, je suis assez reconnaissant pour toute aide ou des conseils où j'ai fait quelque chose de mal.

12
demandé sur Yan Sklyarenko 2012-03-05 13:12:26

1 réponses

la valeur de l'attribut Property de DemoDatum.SetProperty doit être égale à la valeur de l'attribut Id de l'action différée. Ainsi, soit vous changez le nom du bien en DemoDatum , soit vous changez le Id de l'action différée en DatumEintragen .

17
répondu Yan Sklyarenko 2012-03-05 11:25:22