2017-03-24 2 views
1

Hier ist das cakebuild Skript:Wie leere Verzeichnis in WiX zu erhitzen?

WiXHeat(Directory("../Release"), new FilePath("./xxx/Files.wxs"), WiXHarvestType.Dir, new HeatSettings 
    { 
    AutogeneratedGuid = true, 
    ComponentGroupName = "Binaries", 
    Transform = "./Filter.xslt", 
    SuppressCom = true, 
    SuppressFragments = true, 
    SuppressRegistry = true, 
    SuppressRootDirectory = true, 
    PreprocessorVariable = "var.xxx.TargetDir", 
    DirectoryReferenceId = "INSTALLFOLDER", 
    WorkingDirectory = "./xxx_Installer", 
    KeepEmptyDirectories = true, 
    GenerateGuid = true, 
    }); 

Es Argumente verwendet: -ke -ag -GG.

Die Files.wxs wie folgt aussieht:

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="INSTALLFOLDER"> 
      <Directory Id="dir76A8B56EDC1C4DD3CB4177F3704BC91E" Name="data"> 
       <Component Id="cmpE375532277DA492834892BE47B02E5DA" Guid="*" KeyPath="yes"> 
        <CreateFolder /> 
       </Component> 
      </Directory> 
     </DirectoryRef> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="Binaries"> 
      <ComponentRef Id="cmpE375532277DA492834892BE47B02E5DA" /> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 

Dann leuchtet nicht mit Files.wxs arbeiten, hier ist der Fehler:

...\Files.wxs(29) : error LGHT0230 : The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components using a Directory as a KeyPath or containing ODBCDataSource child elements cannot use an automatically generated guid. Make sure your component doesn't have a Directory a s the KeyPath and move any ODBCDataSource child elements to components with explicit component guids. An error occured when executing task 'BuildInstaller'. Error: Light: Process returned an error (exit code 230).

Es scheint, dass für leeres Verzeichnis, es muss eine haben zugewiesene Gilde, nicht "*" nach this article.

Ich mag nicht manuell ersetzen „*“ mit einer GUID, da die Wärme/Lichtverfahren mit Build-Prozess integriert ist und Files.wxs ist in der Quellcodeverwaltung.

Wissen Sie, wie diese Fehler zu beheben?

Antwort

1

Ich habe diesen Schnipsel und WiX Licht funktioniert gut.

<xsl:template match="wix:Directory[@Name='data']/wix:Component/@Guid"> 
    <xsl:attribute name="Guid"> 
     <xsl:value-of select="'E8A26678-FA90-4BFC-846F-4E79AE55D44D'"/> 
    </xsl:attribute> 
    </xsl:template> 

Bitte kommentieren Sie, wenn dies die richtige Lösung ist.

2

Sie verwenden die Wärmeparameter -AG und -GG zugleich.

Entweder habe ich etwas verpasst oder

-ag - Auto generate component guids at compile time, e.g. set Guid="*".

-gg - Generate guids now. All components are given a guid when heat is run.

source http://wixtoolset.org/documentation/manual/v3/overview/heat.html

nicht gleichzeitig erfüllt werden können.

Und weil dein Licht danach während GUID Generation versagt Ich schlage vor, nur -GG ohne -ag auszuprobieren. Das hat mir auch bei leeren Verzeichnissen geholfen.

Verwandte Themen