WiX CustomActionData пуст в названной CustomAction - PullRequest
12 голосов
/ 05 марта 2012

еще раз я застрял в проблеме, которую, вероятно, легко решить.
Я хочу расширить настройки, созданные с помощью WiX, чтобы внести изменения в файл конфигурации установленной программы. Для этого я создал CustomAction . Чтобы иметь возможность изменить файл конфигурации, мне нужно знать (установить) его местоположение в моей CustomAction . Поэтому я пытаюсь передать INSTALLLOCATION и Имя файла на мой CustomAction . В этом и заключается проблема: CustomActionData -атрибут всегда пуст, и установка выдает исключение.

My CustomAction - это файл C # DLL: DemoDatumErzeugen.CA.dll. Он содержит метод DatumEintragen, который модифицирует файл конфигурации. Я пытаюсь получить доступ к данным следующим образом:

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

Здесь выдается исключение. Я получил только сообщение об ошибке на немецком языке, но там написано что-то вроде: The supplied key was not found in the dictionary (Der angegebene Schlüssel war nicht im Wörterbuch angegeben.).

Вот как я пытаюсь передать свойства из моего скрипта установки в мое настраиваемое действие:

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

Я видел много примеров, когда это было сделано таким же образом или, по крайней мере, очень похоже. Я пробовал много вещей, но, похоже, ничто не помогает, как изменение значения After в <Custom Action="DemoDatum.SetProperty" After="InstallFiles"/>. CustomActionData всегда равен нулю.
Я проверяю это с помощью: session.CustomActionData.Count
Еще раз я очень благодарен за любую помощь или подсказки, где я сделал что-то не так.

1 Ответ

17 голосов
/ 05 марта 2012

Значение атрибута Property DemoDatum.SetProperty должно быть равно значению атрибута Id отложенного действия.Таким образом, либо измените имя свойства на DemoDatum, либо измените Id отложенного действия на DatumEintragen.

...