将自定义操作链接到用户界面按钮控件时出错

时间:2017-09-25 14:25:16

标签: wix

我想点击某个按钮触发一些自定义操作。

我得到返回值1,但自定义操作没有运行。

这是我的日志:

Action start 17:09:39: CA1.

MSI (c) (08:00) [17:09:39:220]: Invoking remote custom action. DLL: C:\Users\ARKADY~1\AppData\Local\Temp\MSI87D6.tmp, Entrypoint: CustomAction1

MSI (c) (08:EC) [17:09:39:222]: Cloaking enabled.

MSI (c) (08:EC) [17:09:39:223]: Attempting to enable all disabled privileges before calling Install on Server

MSI (c) (08:EC) [17:09:39:224]: Connected to service for CA interface.
Action ended 17:09:39: CA1. Return value 1.

我的自定义操作是:

    [CustomAction]
    public static ActionResult CustomAction1(Session session)
    {
        session.Log("Begin CustomAction1");

        return ActionResult.Success;
    }

你可以看到没有"开始CustomAction1"在日志中输入。

我的自定义操作配置:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" />
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

从wix代码声明CA:

<Binary Id="CA"  SourceFile="$(var.CustomAction1.TargetDir)$(var.CustomAction1.TargetName).CA.dll" />
<CustomAction Id="CA1" BinaryKey="CA" DllEntry="CustomAction1" Execute="immediate" Return="check"/>

UI绑定:

    <Control Id="ManualUpdateButton" Type="PushButton" X="14" Y="188" Width="95" Height="17" Text="Manual Update">
      <Publish Event="DoAction" Value="CA1" Order="1">1</Publish>
    </Control>

1 个答案:

答案 0 :(得分:3)

自定义操作正在运行,它只是没有记录任何内容。这是MSI的一个限制 - 您无法从UI中DoAction调用的自定义操作写入日志。