2011-09-24 92 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位安裝)