如何在 Wix 安装程序代码中记录自定义消息?

How to log custom messages in Wix Installer code?

这是我在 .wxs 文件中的 Wix 代码

      <Component Id="MyRootCA.cer" Guid="*" Permanent="yes">
      <File Id="MyRootCAFile.cer" Name="MyRootCA.cer" Source="Assets\Certificates\MyRootCA.cer" />
      <iis:Certificate Id="Certificate.MyRootCA"
                       Name="MyRootCA.cer"
                       Request="no"
                       StoreLocation="localMachine"
                       StoreName="root"
                       Overwrite="no"
                       BinaryKey="MyRootCABinary"/>
     </Component>

安装后证书成功安装到机器上。现在,我如何记录有关此操作的消息?

我正在执行以下命令,它会生成日志文件

  msiexec /i installer.msi /L*vx c:\work\Test2.log /q 

如何向此日志文件添加自定义消息?我想添加一条成功消息以将证书添加到系统

我正在尝试添加 custom action

  <CustomAction Id="CA.LogCertificateInstallation"
                BinaryKey="BI.CA"
                DllEntry="LogCertificateInstallation"
                Execute="deferred"
                Return="check"
                Impersonate="no"/>

我如何 link 此自定义操作到上面 Component

Vital: You can make a setup fail if a vital file is not correctly installed by setting the Vital attribute to yes in WiX in this fashion:

<File Source="MyFile.exe" Vital="yes" />

"If the installation of a file with the msidbFileAttributesVital attribute fails, the installation stops and is rolled back". FileTable - see "Attributes" section.


默认日志记录:我不经常使用IIS / Certificate element ,但如果它不进行任何日志记录,我会感到非常惊讶。我会尝试再次阅读日志。该日志命令应该执行,请检查 (部分:"Interpreting MSI Log Files")。

自定义日志记录This document from Robert Dickau 显示可创建 MSI 自定义操作的任何工具的有效自定义操作代码。他显示VBScriptC++Installscript自定义动作。我没有 C# 的任何示例代码,但 WiX 自定义操作模板有。

WiX CA 项目WiX Quick Start Links (including downloads)。在 Visual Studio 中,转到 "Add new project..." 和 select "C# Custom Action Project for WiX v3"。该条目看起来像这样:

有了自定义操作项目后,日志记录代码如下所示:

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