代码之家  ›  专栏  ›  技术社区  ›  Thorsten Dittmar

WIX:使用.NET消息文件创建EventSource

  •  4
  • Thorsten Dittmar  · 技术社区  · 15 年前

    我已经读过并且理解了 this question 在这里是这样,但我有一个稍微不同的情况下,给定的解决方案似乎不能正常工作。以下操作方式不同:

    1. WixNetFxExtension 以确定是否安装.NET 3.5作为启动条件。
    2. 我用的是 WixUtilExtension 如前所述为32位/64位构建配置内容 here

    上面链接的SO问题中的一个注释建议使用以下命令让系统使用32位框架的事件消息文件:

    <util:EventSource 
        Log="Application" 
        Name="*source name*"
        EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll"/>
    

    <?if $(var.Platform) = x64 ?>
        <util:EventSource Log="..." Name="..." EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR64]EventLogMessages.dll" />
    <?else ?>
        <util:EventSource Log="..." Name="..." EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll" />
    <?endif ?>
    

    <?if ... 条件工作,相应地更改产品和文件夹名称。

    在代码上方的一些行中,我使用以下代码来允许.NET Framework检测:

    <PropertyRef Id="NETFRAMEWORK35"/>
    <PropertyRef Id="NETFRAMEWORK20"/>
    
    <Condition Message="...">
        <![CDATA[Installed OR NETFRAMEWORK35]]>
    </Condition>
    

    当我运行安装程序时,一切似乎都正常,事件源也被创建,我也可以从我的应用程序中使用它,但是,我仍然得到没有找到事件消息文件的信息。检查注册表时发现缺少消息文件的路径:

    EventMessageFile   REG_EXPAND_SZ    EventLogMessages.dll
    

    我希望32位/64位框架的路径也会出现,但它似乎没有预先准备好。

    1 回复  |  直到 9 年前
        1
  •  5
  •   porges    15 年前

    我刚碰到这个,你需要 PropertyRef NETFRAMEWORK20INSTALLROOTDIR NETFRAMEWORK20INSTALLROOTDIR64 (还要确保引用了WinNetFxExtension)。