Wix:从C#自定义操作传回属性

时间:2014-04-28 20:53:31

标签: c# windows wix installer windows-installer

是否可以从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>

2 个答案:

答案 0 :(得分:2)

是的,您可以从安装程序中的自定义操作传回属性。确保该属性是公共的(其名称中只有大写字母),并且您的自定义操作被安排为立即执行,并在您的共同对话加载之前执行(使用详细日志在执行安装程序期间跟踪属性值,只需搜索对于其中的属性名称。)

答案 1 :(得分:1)

您需要在Publish标记中指定CustomAction的ID:

<Publish Event="DoAction" Value="FOO">1</Publish>