[wix-users] Preserving recursive directory structure during component copy

Edwin Castro egcastr at gmail.com
Mon Dec 30 13:03:16 PST 2019


You need to author the entire directory structure and place the files in
the desired directory:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="MyApp">
      <Directory Id="TestoFolder" Name="testo">
        <Directory Id="FizzFolder" Name="fizz">
          <Directory Id="AbcFolder" Name="abc">
            <Directory Id="DefFolder" Name="def">
              <Directory Id="GhiFolder" Name="ghi" />
            </Directory>
          </Directory>
        </Directory>
      </Directory>
    </Directory>
  </Directory>
</Directory>

<Component Id="FooTxtComponent" Directory="TestoFolder">
  <File Source="testo/foo.txt" />
</Component>

<Component Id="AbbaComponent" Directory="GhiFolder">
  <File Source="testo/fizz/abc/def/ghi/abba.txt" />
</Component>

<Component Id="ExecutableComponent" Directory="INSTALLFOLDER">
  <File Source="my-app.exe" />
</Component>

--
Edwin G. Castro


On Mon, Dec 30, 2019 at 12:28 PM Zac Harvey via wix-users <
wix-users at lists.wixtoolset.org> wrote:

> Wix 3.11.2 and Visual Studio Community 2019 here. My project has the
> following directory structure:
>
> ...\Source\Repos\my-app-setup\
>  my-app-setup\
>  bin\
>  obj\
>  testo\
>  fizz\
>  abc\
>  def\
>  ghi\
>  abba.txt
>  buzz\
>  bar.txt
>  foo.txt
>  my-app.exe
>  my-app-setup.wixproj
>  my-app-setup.wxs
>  my-app-setup.sln
>
>
> Where the *my-app-setup.wxs* file is as follows:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
>  <Product Id="*" Name="MyApp" Language="1033" Version="1.0.0.0"
> Manufacturer="MyCompany" UpgradeCode="1e540666-dda2-4cbe-91b7-ac9525d96c86">
>  <Package Description="MyApp tool" Compressed="yes" />
>
>  <MediaTemplate EmbedCab="yes"/>
>
>  <Directory Id="TARGETDIR" Name="SourceDir">
>  <Directory Id="ProgramFilesFolder">
>  <Directory Id="INSTALLFOLDER" Name="MyApp" />
>  </Directory>
>
>  <Directory Id="DesktopFolder" Name="Desktop">
>  <Component Id="ApplicationShortcutDesktop" Guid="*">
>  <Shortcut Id="ApplicationDesktopShortcut"
>  Name="MyApp"
>  Description="Shortcut for MyApp"
>  Target="[INSTALLFOLDER]my-app.exe"
>  WorkingDirectory="INSTALLFOLDER"/>
>  <RemoveFolder Id="DesktopFolder" On="uninstall"/>
>  <RegistryValue
>  Root="HKCU"
>  Key="Software/MyApp"
>  Name="installed"
>  Type="integer"
>  Value="1"
>  KeyPath="yes"/>
>  </Component>
>  </Directory>
>  </Directory>
>
>  <Component Id="FooTxtComponent" Directory="INSTALLFOLDER">
>  <File Source="testo/foo.txt" />
>  </Component>
>
>  <Component Id="AbbaComponent" Directory="INSTALLFOLDER">
>  <File Source="testo/fizz/abc/def/ghi/abba.txt" />
>  </Component>
>
>  <Component Id="ExecutableComponent" Directory="INSTALLFOLDER">
>  <File Source="my-app.exe" />
>  </Component>
>
>  <Feature Id="MainFeature" Title="MyApp" Level="1">
>  <ComponentRef Id="FooTxtComponent" />
>  <ComponentRef Id="AbbaComponent" />
>  <ComponentRef Id="ExecutableComponent" />
>
>  <ComponentRef Id="ApplicationShortcutDesktop" />
>  </Feature>
>  </Product>
> </Wix>
>
> So it basically just copies a bunch of files from the project into the
> *C:\Program Files (x86)\MyApp* directory and then creates a shortcut (to
> the EXE) on the desktop. Simple stuff.
>
> When I build this and run the MSI the resulting *C:\Program Files
> (x86)\MyApp* directory looks like this:
>
> C:\Program Files (x86)\
>  MyApp\
>  foo.txt
>  abba.txt
>  my-app.exe
>
> So WiX is just plucking the files I specified and dropping them into the
> *MyApp* directory, at the same level as the EXE file. I *don't* want this;
> I want to preserve the same recursive directory structure as what exists in
> my VS project. So instead of the above I would like the WiX MSI to generate:
>
> C:\Program Files (x86)\
>  MyApp\
>  testo\
>  fizz\
>  abc\
>  def\
>  ghi\
>  abba.txt
>  foo.txt
>  my-app.exe
>
> *What is the simplest way to accomplish this?*
>
> Thanks!
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>



More information about the wix-users mailing list