2010-08-28 20 views
4

我使用WIX爲我的應用程序創建安裝程序。到目前爲止一切正常。但是,我試圖在安裝過程中創建一個新的事件源,並且無法按預期工作。WIX:使用.NET消息文件創建EventSource

我已閱讀並瞭解this question這裏,但我有一個不同的情況,其中給定的解決方案似乎不能正常工作。以下是以不同的方式完成的:

  1. 我使用WixNetFxExtension來確定.NET 3.5是否作爲啓動條件安裝。
  2. 我使用的WixUtilExtension,因爲它是描述here

我想做什麼配置工具和32位/ 64位的構建是:利用32位架構的事件消息文件在進行32位安裝時,請使用64位框架的事件消息文件。

一位在上面鏈接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 ...條件的作用,改變產品 - 和foldernames相應。

代碼上面的某些行我用下面的允許.NET框架檢測:

<PropertyRef Id="NETFRAMEWORK35"/> 
<PropertyRef Id="NETFRAMEWORK20"/> 

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

當我運行安裝程序,一切似乎工作,事件源創建,我也也可以從我的應用程序中使用它,但是,我仍然收到沒有找到事件消息文件的信息。檢查註冊表中我發現,路徑信息文件丟失:

EventMessageFile REG_EXPAND_SZ EventLogMessages.dll 

我期望的路徑,32位/ 64位的框架存在,太多,但它似乎沒有前置。

我在這裏做錯了什麼?

回答

5

我剛碰到這個,你需要PropertyRefNETFRAMEWORK20INSTALLROOTDIRNETFRAMEWORK20INSTALLROOTDIR64(也請確保WinNetFxExtension被引用)。

+0

太棒了!非常感謝。 – 2010-09-28 13:20:12