[wix-users] `File/@Name` doesn't work as expected when nested under `Component/@Directory`

Blair Murri osito at live.com
Sun May 31 15:25:23 PDT 2020

Might break existing clients is a big reason to not consider it for v3. I personally would prefer something similar to what you want to do on v4, and would welcome your contributions. Please, we'd love to have you involved.

Blair Murri

Get Outlook for Android<https://aka.ms/ghei36>

From: wix-users <wix-users-bounces at lists.wixtoolset.org> on behalf of Armen Michaeli via wix-users <wix-users at lists.wixtoolset.org>
Sent: Saturday, May 2, 2020 4:35:22 AM
To: Rob Mensching <rob at firegiant.com>
Cc: Armen Michaeli <armen.michaeli at gmail.com>; WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Subject: Re: [wix-users] `File/@Name` doesn't work as expected when nested under `Component/@Directory`

Hi Rob,

Thank you for the informative and clarifying answer.

Is WiX being actively developed these days -- does it make sense for me to
consider sending a patch / pull request to attempt to rectify this? It
might break existing WiX clients. Or, perhaps, a different design
altogether is planned in WiX 4?

If none of these options are appealing, I think I may want to generate a
.wixobj with a different tool and just feed it to the WiX linker/binder.

The reason I have come upon this problem is that I want to have less
verbose source files for installations I am authoring. I am starting to
think XML being optimized for hierarchical relationships, isn't much for my
tastes as authoring format in this case where different elements of a
package participate in many-to-many relationships. The WiX linker/binder is
as useful as ever, however -- I'll see if I can (like I said) retain it as
a "backend".


On Fri, May 1, 2020 at 6:10 PM Rob Mensching <rob at firegiant.com> wrote:

> Your confusion is understandable. The behavior you are seeing is the
> design although one could absolutely argue for the design you expected. The
> linker will follow references to create the target directory tree but that
> does not affect the build time source location for the files. Build time
> source resolution is passed down only via the immediate XML hierarchy.
> ---
> Short replies here. Complete answers here:
> https://www.firegiant.com/services/
> -----Original Message-----
> From: wix-users <wix-users-bounces at lists.wixtoolset.org> On Behalf Of
> Armen Michaeli via wix-users
> Sent: Friday, May 1, 2020 5:32 AM
> To: wix-users at lists.wixtoolset.org
> Cc: Armen Michaeli <armen.michaeli at gmail.com>
> Subject: Re: [wix-users] `File/@Name` doesn't work as expected when nested
> under `Component/@Directory`
> Apologies, there is a typo in the earlier message: the error message [with
> the second snippet] isn't "LGHT0113", it is LGHT0103: "The system cannot
> find the file 'README.txt'."
> The file can otherwise be accessed just fine with the first snippet, for
> comparison.
> On Fri, May 1, 2020 at 2:23 PM Armen Michaeli <armen.michaeli at gmail.com>
> wrote:
> > From what I understand, per the "How To: Specify source files" page
> > <https://wixtoolset.org/documentation/manual/v3/howtos/general/specify
> > ing_source_files.html> and as briefly touched upon by the "Component
> > Element"
> > <https://wixtoolset.org/documentation/manual/v3/xsd/wix/component.html
> > >
> > and "File Element"
> > <https://wixtoolset.org/documentation/manual/v3/xsd/wix/file.html>
> > pages, when a file is specified using the File/@Name attribute, it is
> > effectively accessed by name relative to the directory of the
> > component the file is part of. The component's directory, in turn, is
> > ideally understood (by me) to be either the directory specified by the
> > nearest ancestor Directory element, *or* by the Component/@Directory
> attribute, if present.
> >
> > Needless to say, the following works as expected:
> >
> > <Directory Id="INSTALLDIR" Name="Foobar" FileSource="!(wix.SOURCEDIR)">
> >     <Component>
> >         <File Name="README.txt" />
> >     </Component>
> > </Directory>
> >
> > The following, however, does not:
> >
> > <Directory Id="INSTALLDIR" Name="Foobar" FileSource="!(wix.SOURCEDIR)"
> > /> <Feature>
> >     <Component Directory="INSTALLDIR">
> >         <File Name="README.txt" />
> >     </Component>
> > </Feature>
> >
> > I am surprised. Is the behaviour intended by design, an omission or
> > something else? The "How To: Specify source files" page
> > <https://wixtoolset.org/documentation/manual/v3/howtos/general/specify
> > ing_source_files.html>
> > says:
> >
> > When you use the File/@Name attribute and don't use the File/@Source
> > attribute, the compiler constructs an implicit path to the file based
> > on the file's parent component directory plus the name you supply.
> >
> > In case of the second snippet above, the component's directory *is
> > specified* (INSTALLDIR), is it not? Why can't the file be found? It
> > seems that WiX only actually wants to use the directory based on
> > element parent-child relationship, not the one created by the
> > Component/@Directory attribute value.
> >
> > I am using candle.exe and light.exe, it is the linker/binder (the
> > latter) that produces the LGHT0113 error.
> >
> > WiX version
> > .NET version 3.1.201 (dotnet --version)
> >
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/

WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/

More information about the wix-users mailing list