显示对话框时如何发布 CustomAction

How do I publish a CustomAction when Dialog is showing

我遵循 Fragment 来定义我的 CustomAction(实际上我的 CA 项目中有 2 个方法)

<Fragment>
    <Binary Id="FooAssembly"
            SourceFile="Foo.CA.dll" />
    <CustomAction Id="Action1"
                  BinaryKey="FooAssembly"
                  DllEntry="Action1" />
    <CustomAction Id="Action2"
                  BinaryKey="FooAssembly"
                  DllEntry="Action2" />
</Fragment>

我的 Action1 看起来像这样:

[Microsoft.Deployment.WindowsInstaller.CustomAction]
public static ActionResult Action1(Microsoft.Deployment.WindowsInstaller.Session session)
{
    session["value1"] = "some value";
    session["value2"] = "some value";

    return ActionResult.Success;
}

现在我需要 运行 这个 CustomAction 当我的对话框显示时并将值 value1 绑定到 Edit-control 就像这样:

<Dialog Id="FooDlg">
    <Control Id="FooEdit"
             Type="Edit"
             Text="[value1]"
             Property="value1"
             Disabled="yes" />
</Dialog>

我的 InstallUISequence 看起来像这样

<InstallUISequence>
    <Show Dialog="FooDlg"
          After="CostFinalize" />
</InstallUISequence>

我在这里使用 Edit-control,因为我需要一些边框 - Text 缺失 - 因此我需要填充 Property 属性。

我怎样才能做到这一点?

我已经通过调整我的 InstallUISequence 来解决这个问题

  <InstallUISequence>
    <Custom Action="Action1"
            After="CostFinalize" />
    <Show Dialog="FooDlg"
          After="Action1" />
  </InstallUISequence>