【问题标题】:Multiple entry in C# custom action dll in WIXWIX 中的 C# 自定义操作 dll 中的多个条目
【发布时间】:2014-06-27 04:50:50
【问题描述】:

我们可以有多个 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)
        {}

【问题讨论】:

    标签: wix installation windows-installer custom-action wix3.8


    【解决方案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;
      }
    }
    

    然后安排何时执行。即:

    <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 是否已被调用。

    【讨论】:

    • 我试过了,但对我不起作用。你有没有试过,你有一些样品可以分享吗?
    • OP 应该说明“它不起作用”的实际含义以及实际问题是什么。可以有两个 CA 吗?是的。但显然还有一些其他问题没有被描述。您不需要 session.log 来查看是否调用了 CA - 只需使用详细日志运行安装并查看它们是否被调用或调用时是否失败。也许他们被调用了,或者代码失败了。
    猜你喜欢
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多