是否可以从WiX自定义操作传回属性?我现在一直试图找出解决方案几个小时,我已经看到很多答案,但它们都不适合我。这是我尝试过的,
C#(自定义操作)
public class CustomActions
{
[CustomAction]
public static ActionResult TestAction(Session session)
{
session["FOO"] = "BAR";
return ActionResult.Success;
}
}
WiX FooDlg.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<Property Id="FOO"/>
<UI>
<Dialog Id="FooDlg" Width="370" Height="270" Title="Foo">
<Control Id="FOO" Type="Edit" Property="FOO" Height="17" Width="45" X="50" Y="150" Text="[FOO]" Indirect="no"/>
<Control Id="FOO" Type="PushButton" X="150" Y="200" Width="56" Height="17" Text="Test FOO">
<Publish Event="DoAction" Value="Testing">1</Publish>
</Control>
</Dialog>
</UI>
<CustomAction Id='FOO' BinaryKey='FooBinary' DllEntry='TestAction' Execute='immediate' Return='check'/>
<Binary Id='FooBinary' SourceFile='FOO.dll'/>
</Fragment>
</Wix>
答案 0 :(得分:2)
是的,您可以从安装程序中的自定义操作传回属性。确保该属性是公共的(其名称中只有大写字母),并且您的自定义操作被安排为立即执行,并在您的共同对话加载之前执行(使用详细日志在执行安装程序期间跟踪属性值,只需搜索对于其中的属性名称。)
答案 1 :(得分:1)
您需要在Publish标记中指定CustomAction的ID:
<Publish Event="DoAction" Value="FOO">1</Publish>