2014-10-29 37 views
0

我在我的WiX安裝有第三方庫,當我運行Light.exe這是造成以下錯誤:光抱怨一個目錄名正在使用MSI的公共屬性

錯誤LGHT0204:ICE99 :目錄名稱:Time與MSI公共屬性中的一個相同,並且可能導致無法預料的副作用。

我對壓制ICE錯誤,重命名目錄和修改第三方接縫並不是很舒服,就像一個壞主意。還有其他的選擇嗎?

編輯:

解決

萬一別人是有similiar的問題,這是我結束了使用(我是從這個博客:http://installpac.wordpress.com/2012/05/07/conflict-management-in-wix/):在xsl

<?xml version="1.0" ?> 
<xsl:transform version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"> 

    <xsl:template match="@*|*"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*" /> 
     <xsl:apply-templates select="*" /> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="wix:Directory"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*" /> 
     <xsl:attribute name="Id"> 
      <xsl:text>NameOfAThirdPartyLibraryImUsing_directory_</xsl:text> 
      <xsl:value-of select="@Id"/> 
     </xsl:attribute> 
     <xsl:apply-templates select="node()"/> 
    </xsl:copy> 
    </xsl:template> 
</xsl:transform> 

回答

4

只有Id屬性不應與MSI公共屬性相同。這是它所抱怨的。

而不是

<Directory Id="Time"> 

寫這

<Directory Id="Dir_Time" Name="Time"> 

其結果是,在適當命名的文件夾將被創建,並Id屬性的值不會與MSI的公共屬性衝突。你可以看看this thread,它突出了類似的問題。

+0

啊,謝謝!我正在使用熱量,所以我沒有手動命名目錄。猜猜我只需要弄清楚如何重命名它。 – Mohrn 2014-10-30 16:39:32

+0

heat.exe通過'-t'開關接受XSL轉換,這可以簡單得多,就是用'Id'屬性前綴 – 2014-10-30 20:22:45

+0

非常感謝! – Mohrn 2014-11-03 10:24:04