[wix-users] A circular reference of ordering dependencies was detected

Edwin Castro egcastr at gmail.com
Tue Feb 23 16:58:18 PST 2016


I found a configuration that does not fail to compile:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="
http://schemas.microsoft.com/wix/BalExtension">
  <Bundle Name="Bootstrapper1" Version="1.0.0.0"
Manufacturer="Manufacturer"
UpgradeCode="22b20cf0-2de5-4a3d-95f4-0337e7f84846">
    <BootstrapperApplicationRef
Id="WixStandardBootstrapperApplication.Foundation"/>
    <Chain>
      <PackageGroupRef Id="PackageGroup"/>
    </Chain>
  </Bundle>
  <Fragment>
    <PayloadGroup Id="PayloadA.txt">
      <Payload SourceFile="PayloadA.txt"/>
    </PayloadGroup>
  </Fragment>
  <Fragment>
    <PayloadGroup Id="PayloadB.txt">
      <Payload SourceFile="PayloadB.txt"/>
    </PayloadGroup>
  </Fragment>
  <Fragment>
    <PayloadGroup Id="PayloadGroup">
      <PayloadGroupRef Id="PayloadA.txt"/>
      <PayloadGroupRef Id="PayloadB.txt"/>
    </PayloadGroup>
  </Fragment>
  <Fragment>
    <PackageGroup Id="PackageGroup">
      <ExePackage SourceFile="PackageA.exe">
        <PayloadGroupRef Id="PayloadGroup"/>
      </ExePackage>
      <ExePackage SourceFile="PackageB.exe">
        <PayloadGroupRef Id="PayloadGroup"/>
      </ExePackage>
    </PackageGroup>
  </Fragment>
</Wix>

It seems that the dependency occurs as soon as I separate PackageA.exe into
a different package group from PackageB.exe (even within the same Fragment):

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="
http://schemas.microsoft.com/wix/BalExtension">
  <Bundle Name="Bootstrapper1" Version="1.0.0.0"
Manufacturer="Manufacturer"
UpgradeCode="22b20cf0-2de5-4a3d-95f4-0337e7f84846">
    <BootstrapperApplicationRef
Id="WixStandardBootstrapperApplication.Foundation"/>
    <Chain>
      <PackageGroupRef Id="PackageA.exe"/>
      <PackageGroupRef Id="PackageB.exe"/>
    </Chain>
  </Bundle>
  <Fragment>
    <PayloadGroup Id="PayloadA.txt">
      <Payload SourceFile="PayloadA.txt"/>
    </PayloadGroup>
  </Fragment>
  <Fragment>
    <PayloadGroup Id="PayloadB.txt">
      <Payload SourceFile="PayloadB.txt"/>
    </PayloadGroup>
  </Fragment>
  <Fragment>
    <PayloadGroup Id="PayloadGroup">
      <PayloadGroupRef Id="PayloadA.txt"/>
      <PayloadGroupRef Id="PayloadB.txt"/>
    </PayloadGroup>
  </Fragment>
  <Fragment>
    <PackageGroup Id="PackageA.exe">
      <ExePackage SourceFile="PackageA.exe">
        <PayloadGroupRef Id="PayloadGroup"/>
      </ExePackage>
    </PackageGroup>
    <PackageGroup Id="PackageB.exe">
      <ExePackage SourceFile="PackageB.exe">
        <PayloadGroupRef Id="PayloadGroup"/>
      </ExePackage>
    </PackageGroup>
  </Fragment>
</Wix>

It seems to indicate that all packages that share any common payloads MUST
be declared within the same package group! I can't say that I fully
understand this requirement! Could this be a bug?

--
Edwin G. Castro


On Tue, Feb 23, 2016 at 3:42 PM, Edwin Castro <egcastr at gmail.com> wrote:

> I'm trying to understand why there's a circular reference between PayloadA
> and PayloadB in my example source below:
> <?xml version="1.0" encoding="UTF-8"?>
> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
>   <Bundle Name="Bootstrapper1" Version="1.0.0.0"
> Manufacturer="Manufacturer"
> UpgradeCode="22b20cf0-2de5-4a3d-95f4-0337e7f84846">
>     <Chain>
>       <PackageGroupRef Id="PackageA"/>
>       <PackageGroupRef Id="PackageB"/>
>     </Chain>
>   </Bundle>
>   <Fragment>
>     <PayloadGroup Id="PayloadA">
>       <Payload Id="PayloadA" SourceFile="PayloadA.txt"/>
>     </PayloadGroup>
>   </Fragment>
>   <Fragment>
>     <PayloadGroup Id="PayloadB">
>       <Payload Id="PayloadB" SourceFile="PayloadB.txt"/>
>     </PayloadGroup>
>   </Fragment>
>   <Fragment>
>     <PackageGroup Id="PackageA">
>       <ExePackage Id="PackageA" SourceFile="PackageA.exe">
>         <PayloadGroupRef Id="PayloadA"/>
>         <PayloadGroupRef Id="PayloadB"/>
>       </ExePackage>
>     </PackageGroup>
>   </Fragment>
>   <Fragment>
>     <PackageGroup Id="PackageB">
>       <ExePackage Id="PackageB" SourceFile="PackageB.exe">
>         <PayloadGroupRef Id="PayloadA"/>
>         <PayloadGroupRef Id="PayloadB"/>
>       </ExePackage>
>     </PackageGroup>
>   </Fragment>
> </Wix>
>
> The way I'm reading this I see that PackageA depends on PayloadA and
> PayloadB. Likewise PackageB depends on PayloadA and PayloadB.
>
> PayloadA certainly does not directly depend on PayloadB and I don't
> understand how PayloadB could possibly depend on PayloadA with the given
> source above.
>
> This smells like a bug to me. Is this a bug?
>
> --
> Edwin G. Castro
>
>
> On Mon, Feb 8, 2016 at 12:25 PM, Edwin Castro <egcastr at gmail.com> wrote:
>
>> I'm getting an odd "circular reference of ordering dependencies" error
>> that I don't understand.
>>
>> First, the actual error:
>>
>> ------ Rebuild All started: Project: Bootstrapper1, Configuration: Debug
>> x86 ------
>> C:\Program Files (x86)\WiX Toolset v3.9\bin\candle.exe -dDebug
>> -d"DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio
>> 11.0\Common7\IDE\\" -d"SolutionDir=c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\\" -dSolutionExt=.sln
>> -dSolutionFileName=Bootstrapper1.sln -dSolutionName=Bootstrapper1
>> -d"SolutionPath=c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\Bootstrapper1.sln" -dConfiguration=Debug
>> -dOutDir=bin\Debug\ -dPlatform=x86
>> -d"ProjectDir=c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\\" -dProjectExt=.wixproj
>> -dProjectFileName=Bootstrapper1.wixproj -dProjectName=Bootstrapper1
>> -d"ProjectPath=c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\Bootstrapper1.wixproj"
>> -d"TargetDir=c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\bin\Debug\\" -dTargetExt=.exe
>> -dTargetFileName=Bootstrapper1.exe -dTargetName=Bootstrapper1
>> -d"TargetPath=c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\bin\Debug\Bootstrapper1.exe" -out obj\Debug\
>> -arch x86 -ext "C:\Program Files (x86)\WiX Toolset
>> v3.9\bin\\WixBalExtension.dll" Bundle.wxs
>> Windows Installer XML Toolset Compiler version 3.9.1208.0
>> Copyright (c) Outercurve Foundation. All rights reserved.
>> Bundle.wxs
>> C:\Program Files (x86)\WiX Toolset v3.9\bin\Light.exe -out
>> "c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\bin\Debug\Bootstrapper1.exe" -pdbout
>> "c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\bin\Debug\Bootstrapper1.wixpdb" -ext
>> "C:\Program Files (x86)\WiX Toolset v3.9\bin\\WixBalExtension.dll"
>> -contentsfile obj\Debug\Bootstrapper1.wixproj.BindContentsFileList.txt
>> -outputsfile obj\Debug\Bootstrapper1.wixproj.BindOutputsFileList.txt
>> -builtoutputsfile
>> obj\Debug\Bootstrapper1.wixproj.BindBuiltOutputsFileList.txt
>> -wixprojectfile "c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\Bootstrapper1.wixproj" obj\Debug\Bundle.wixobj
>> Windows Installer XML Toolset Linker version 3.9.1208.0
>> Copyright (c) Outercurve Foundation. All rights reserved.
>> c:\users\ecastro\documents\visual studio
>> 2012\Projects\Bootstrapper1\Bundle.wxs(18,0): error LGHT0343: A circular
>> reference of ordering dependencies was detected. The infinite loop
>> includes: Payload:PayloadA -> Payload:PayloadB -> Payload:PayloadA.
>> Ordering dependency references must form a directed acyclic graph.
>> Done building project "Bootstrapper1.wixproj" -- FAILED.
>>
>>
>> And now Bundle.wxs:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
>>   <Bundle Name="Bootstrapper1" Version="1.0.0.0"
>> Manufacturer="Manufacturer"
>> UpgradeCode="22b20cf0-2de5-4a3d-95f4-0337e7f84846">
>>     <Chain>
>>       <PackageGroupRef Id="PackageA"/>
>>       <PackageGroupRef Id="PackageB"/>
>>     </Chain>
>>   </Bundle>
>>   <Fragment>
>>     <PayloadGroup Id="PayloadA">
>>       <Payload Id="PayloadA" SourceFile="PayloadA.txt"/>
>>     </PayloadGroup>
>>   </Fragment>
>>   <Fragment>
>>     <PayloadGroup Id="PayloadB">
>>       <Payload Id="PayloadB" SourceFile="PayloadB.txt"/>
>>     </PayloadGroup>
>>   </Fragment>
>>   <Fragment>
>>     <PackageGroup Id="PackageA">
>>       <ExePackage Id="PackageA" SourceFile="PackageA.exe">
>>         <PayloadGroupRef Id="PayloadA"/>
>>         <PayloadGroupRef Id="PayloadB"/>
>>       </ExePackage>
>>     </PackageGroup>
>>   </Fragment>
>>   <Fragment>
>>     <PackageGroup Id="PackageB">
>>       <ExePackage Id="PackageB" SourceFile="PackageB.exe">
>>         <PayloadGroupRef Id="PayloadA"/>
>>         <PayloadGroupRef Id="PayloadB"/>
>>       </ExePackage>
>>     </PackageGroup>
>>   </Fragment>
>> </Wix>
>>
>> I don't see where the cyclic reference occurs. What am I doing wrong here?
>>
>>
>> --
>> Edwin G. Castro
>>
>>
>


More information about the wix-users mailing list