2011-09-24 93 views
3

我试图在安装时使用Wix创建事件日志和事件源。安装不会失败或给出任何错误...但我没有看到任何名为MyApp的事件日志被创建。Wix事件日志未创建

 <PropertyRef Id="NETFRAMEWORK40FULLINSTALLROOTDIR"/> 


     <Component Id="EventLog" Guid="AD09F8B9-80A0-46E6-9E36-9618E2023D67"> 
     <util:EventSource Log="MyApp" Name="MyApp" EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll" /> 
     </Component> 

我以前有一个.NET安装程序类,这样做,它没有问题。

我在做什么错?

+0

我认为你有问题。这将适用于32位操作系统 - 而不是64位操作系统。我认为你应该使用64位的NETFRAMEWORK40FULLINSTALLROOTDIR64。你不觉得吗? –

回答

0

您可以发布安装程序日志吗? EventSource元素实际上只是一些合成糖。 WiX将这些转换为简单的注册表项/值,我从来没有见过它在我使用过的任何安装中失败。

+0

它看起来像日志文件不显示,直到第一个事件写入它。如在,我的代码不会写入它,并且事件源存在于注册表中......但它不会显示在事件查看器UI中......是否有任何意义? – Jeff

+0

我从来没有听说过。我会确保你的应用程序没有任何代码来初始化日志。我已经看到开发人员这样做,假设它将以提升的权限运行。我提到的日志文件是运行安装的Windows Installer日志。 –

+0

Oh sure ....这是安装程序日志中的相关行: – Jeff

0

我遇到了问题,这是因为我错过了<CreateFolder />元素;我的代码最终看上去像这样:

<Component Id="CreateEventLog32Bit" Guid="{some-guid}" Permanent="yes"> 
    <Condition><![CDATA[NETFRAMEWORK40FULLINSTALLROOTDIR AND NOT VersionNT64]]></Condition> 
    <CreateFolder /> 
    <util:EventSource Log="Application" Name="MyApp" EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll" /> 
</Component> 
<Component Id="CreateEventLog64Bit" Guid="{some-other-guid}" Permanent="yes"> 
    <Condition><![CDATA[NETFRAMEWORK40FULLINSTALLROOTDIR64 AND VersionNT64]]></Condition> 
    <CreateFolder /> 
    <util:EventSource Log="Application" Name="MyApp" EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR64]EventLogMessages.dll" /> 
</Component> 

(所以它可以处理的.NET 4的32位和64位安装)