Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未创建Wix事件日志_Wix_Windows Installer_Wix3.5 - Fatal编程技术网

未创建Wix事件日志

未创建Wix事件日志,wix,windows-installer,wix3.5,Wix,Windows Installer,Wix3.5,我正在尝试在安装时使用Wix创建事件日志和事件源。安装没有失败或出现任何错误…但我没有看到任何名为MyApp的事件日志被创建 <PropertyRef Id="NETFRAMEWORK40FULLINSTALLROOTDIR"/> <Component Id="EventLog" Guid="AD09F8B9-80A0-46E6-9E36-9618E2023D67"> <util:EventSource Log="MyAp

我正在尝试在安装时使用Wix创建事件日志和事件源。安装没有失败或出现任何错误…但我没有看到任何名为MyApp的事件日志被创建

      <PropertyRef Id="NETFRAMEWORK40FULLINSTALLROOTDIR"/>


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

我以前有一个.NET安装程序类可以这样做,它可以毫无问题地工作


我做错了什么?

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

我对此有问题,这是因为我缺少一个
元素;我的代码最终如下所示:

<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>


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

日志文件似乎在第一个事件写入之前不会显示。就像在中一样,我的代码没有写入失败,并且事件源存在于注册表中……但它没有显示在事件查看器UI中……这有什么意义吗?我从来没有听说过。我会确保你的应用程序中没有任何初始化日志的代码。我见过开发人员这样做,他们认为这将以提升的权限运行。我提到的日志文件是运行install.writeRegistryValue的Windows安装程序日志:Key:\SYSTEM\CurrentControlSet\Services\EventLog\AppCo\App,名称:EventMessageFile,值:#%C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll查看用于执行此任务的代码,我在注册表中没有看到关于该dll的任何信息…它有一个指向注册表中列出的evt文件的绝对文件路径…如果不看到实际的dll和安装,很难给出更多建议。NET开发人员要求我创建的事件日志使用为category和eventmessage参数提供的.NET bcl dll运行良好。您可能在代码中做了一些更高级的工作,需要更具体的参数。我认为您有一个问题。这将适用于32位操作系统,而不是64位操作系统。我认为您应该将NETFRAMEWORK40FULLINSTALLROOTDIR64用于64位。你不觉得吗?