user3093755
user3093755

Reputation: 65

Wix Toolset: How to create multiple folders?

I'm a beginner in WIX. I want to create multiple folders inside the main folder, but ending with just one folder. Can someone help me on how to create multiple folders?

    <!-- Step 1: Define the directory structure -->
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="APPLICATIONROOTDIRECTORY" Name="TEST">
                <Directory Id="HTML" Name="HTML" />             
            </Directory>
        </Directory>
    </Directory>

    <!-- Step 2: Add files to your installer package -->
    <DirectoryRef Id="APPLICATIONROOTDIRECTORY">
        <Component Id="NewSHU_TM.exe" Guid="3977B09E-B696-471A-9C29-419301EDF6A0">
            <File Id="NewSHU_TM.exe" Source="C:\Program Files\Debug\NewSHU_TM.exe" KeyPath="yes" Checksum="yes"/>
        </Component>
    </DirectoryRef>

    <DirectoryRef Id="HTML">
        <Component Id="exec.html" Guid="61D58D90-F9A3-4649-9113-6AD7B1249DE8">
            <File Id="exec.html" Source="C:\Program Files\Debug\HTML\exec.html" KeyPath="yes" Checksum="yes"/>
            <File Id="exec_001.html" Source="C:\Program Files\Debug\HTML\exec_001.html" KeyPath="no" Checksum="yes"/>
        </Component>
    </DirectoryRef>

    <!-- Step 3: Tell WiX to install the files -->
    <Feature Id="MainApplication" Title="Main Application" Level="1">
        <ComponentRef Id="NewSHU_TM.exe" />
        <ComponentRef Id="exec.html"/>
        <!--<ComponentRef Id="documentation.html" />-->
    </Feature>
</Product>

Upvotes: 4

Views: 5813

Answers (2)

Brian Hathaway
Brian Hathaway

Reputation: 11

You need to close each "Directory" element. Please notice the endding "/>" in the "TEST" and "HTML" folder below.

The following will create (given you are adding files to these directories) the two folders at the same level under the "Example" folder: c:\Program Files (x86)\Example\TEST and c:\Program Files (x86)\Example\HTML

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLDIR" Name="Example">
            <Directory Id="ChildFolder1" Name="TEST" /> 
            <Directory Id="ChildFolder2" Name="HTML" /> 
        </Directory>
    </Directory>

Upvotes: 1

Stein &#197;smul
Stein &#197;smul

Reputation: 42276

You need to nest the directories you want to install to within TARGETDIR:

 <Directory Id="TARGETDIR" Name="SourceDir">
     <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLDIR" Name="Example">
           <Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222">
              <File Id="ApplicationFile1" Source="example.exe"/>
           </Component>
        </Directory>
     </Directory>
  </Directory>

See the source for this sample here:

Upvotes: 3

Related Questions