снова застрял на проблеме, которую, вероятно, легко решить.
Я хочу расширить настройку, созданную с помощью WiX, чтобы внести изменения в файл конфигурации установленной программы. Для этого я создал CustomAction. Чтобы иметь возможность изменить файл конфигурации, мне нужно знать его местоположение (установить) в моем CustomAction. Поэтому я пытаюсь передать INSTALLLOCATION и имя файла моему CustomAction. Вот в чем проблема: атрибут CustomActionData всегда пуст, и установка выдает исключение.
My CustomAction представляет собой DLL-файл C#: DemoDatumErzeugen.CA.dll
.Он содержит метод DatumEintragen
, который изменяет файл конфигурации. Я пытаюсь получить доступ к данным следующим образом:
string path = session.CustomActionData["LOCATION"];
Здесь выдается исключение. Я получил только сообщение об ошибке на немецком языке, но оно говорит что-то вроде: Предоставленный ключ не найден в словаре
(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 в
. CustomActionData всегда равен нулю.
Я проверяю это с помощью: session.CustomActionData.Count
Еще раз я очень благодарен за любую помощь или подсказки, где я сделал что-то не так.