Я хочу включить различные dll в установку на основе определенных значений. Таким образом, я пытаюсь загрузить компонент на основе свойства, которое устанавливается с помощью пользовательского действия.WiX не может проверить свойство, которое задано с помощью CustomAction
В WXS файле:
...
<Property Id="PropDllVersion" Value="0" />
...
<CustomAction Id="CheckPropDllVersion" BinaryKey="CustomAction1.dll" DllEntry="GetPropVersion" Return="ignore" Execute="immediate"/>
...
<InstallExecuteSequence>
<Custom Action="CheckPropDllVersion" After="ValidateProductID" />
</InstallExecuteSequence>
...
<Component Id="Test"
Guid="B81F832D-2D96-4169-9BD0-8D77098FEC60">
<Condition><![CDATA[PropDllVersion = "19"]]></Condition>
<File Id="File15"
Name="xyz.dll"
Vital="yes"
KeyPath="yes"
AssemblyManifest="File5"
AssemblyApplication="File5"
Assembly=".net"
DiskId="1"
/>
</Component>
...
Затем в файле пользовательского действия:
[CustomAction]
public static ActionResult GetPropVersion(Session session)
{
session["PropDllVersion"] = "19";
}
можно увидеть в файле журнала Msi, что это свойство изменяется на 19, однако xyz.dll не входит в установку. Похоже, что PropDllVersion не задано на уровне состояния или я что-то не так делаю ... Я попытался упорядочить его во многих других местах, пока он не работает ...
Если я использую глобальное свойство в вместо моей собственности это работает!
Не знаете, почему у меня есть отрицательный рейтинг по этому вопросу. Не то чтобы я не пробовал все остальные решения, представленные здесь. Поблагодарите причину отрицательного рейтинга по этому вопросу ... – Samuel