3

我们可以有多个 dll 条目,如下例所示:

我有一个二进制条目:

<Binary Id="SqlBrowse" SourceFile="..\SqlBrowse\bin\Debug\SqlBrowse.CA.dll"/>

调用自定义操作

<CustomAction Id="SqlBrowseValidate" BinaryKey="SqlBrowse" 
              DllEntry="SqlValidate" Execute="immediate" Return="asyncWait">
</CustomAction>
<CustomAction Id="SqlBrowseID" BinaryKey="SqlBrowse" 
              DllEntry="CustomAction1" Execute="immediate">
</CustomAction>

我有两个 CA:

 public static ActionResult CustomAction1(Session xiSession)
        {}
 public static ActionResult SqlValidate(Session sqlSession)
        {}
4

1 回答 1

1

是的,你可以这么做。使用添加日志信息session.Log

首先创建您的 .NET 自定义操作:

public class CustomActions
{
  [CustomAction]
  public static ActionResult CustomAction1(Session session)
  {
    session.Log("Executing CustomAction1");
    return ActionResult.Success;
  }

  [CustomAction]
  public static ActionResult CustomAction2(Session session)
  {
    session.Log("Begin CustomAction2");
    return ActionResult.Success;
  }
}

然后安排何时执行。IE:

<Binary Id="SqlBrowse" SourceFile="..\SqlBrowse\bin\Debug\SqlBrowse.CA.dll"/>
<CustomAction Id="CustomAction1" BinaryKey="SqlBrowse" 
              DllEntry="CustomAction1" Execute="immediate"></CustomAction>
<CustomAction Id="CustomAction2" BinaryKey="SqlBrowse" 
              DllEntry="CustomAction2" Execute="immediate"></CustomAction>

<InstallExecuteSequence>
  <Custom Action='CustomAction1' Before='InstallValidate'/>
  <Custom Action='CustomAction2' Before='InstallFinalize'/>
</InstallExecuteSequence>

然后在安装时创建一个日志文件:

msiexec /i "YourInstaller.msi" /l*v "log.txt"

现在您可以验证您的 CA 是否已被调用。

于 2014-07-06T13:22:34.200 回答