2013-08-20 14 views
5

chciałbym zainstalować mój wniosek do następującej struktury katalogów:WIX ComponentGroup podkatalogi

MyCompany/ 
    MyApp/ 
     assembly1.dll 
     assembly2.dll 
     assembly3.dll 
     ... 
     plugins/ 
      plugin1.dll 
      plugin2.dll 

za to, że zdefiniowane następujące foldery:

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
     <Directory Id="CompanyFolder" Name="MyCompanyName"> 
      <Directory Id="INSTALLFOLDER" Name="MyProduct"> 
       <Directory Id="PLUGINS" Name="plugins"> 
        <Directory Id="DATABASE_PLUGINS" Name="db" /> 
       </Directory> 
      </Directory> 
     </Directory> 
    </Directory> 
</Directory> 

Teraz mam zdefiniowane 1 funkcji z odniesienie do grupy składników. Ta grupa składników ma właściwość "Katalog" wskazującą na "INSTALLFOLDER". Ale kiedy teraz zadeklaruję komponent w grupie składników, która ma także "właściwość" katalogu (wskazując na DATABASE_PLUGINS), VS nie pozwoli mi zbudować instalacji.

<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
    <Component Id="DB.Connector.Extension.Plugins.SqlCe" Directory="DATABASE_PLUGINS" Guid="{ae87be28-b0c9-4b3e-915f-2b4bf9965c99}"> 
     <File Source="$(var.DB.Connector.Extension.Plugins.SqlCe.TargetDir)DB.Connector.Extension.Plugins.SqlCe.dll" KeyPath="yes" /> 
    </Component> 
</ComponentGroup> 

W jaki sposób mogę uzyskać, że konfiguracja tworzy podkatalog wewnątrz mojego głównego katalogu instalacyjnego i umieszcza w nim zadeklarowane pliki?

+6

Pójdę w opałach tutaj i powiedzieć trzeba zadeklarować komponentu poza ComponentGroup i za pomocą elementu ComponentRef do dodaj go do grupy – Netfangled

+0

Pracował jak urok. Dziękuję Ci bardzo. =) – Atrotygma

Odpowiedz

4

tutaj jest mój pełny przykład mam nadzieję, że to pomoże dalsze deweloperom

</Product> 
    <Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFiles64Folder"> 
     <Directory Id="GiladDir" Name="Gilad"> 
      <Directory Id="INSTALLFOLDER" Name="App"> 
      <Directory Id="BIN" Name="bin"></Directory> 
      </Directory> 
     </Directory> 
     </Directory> 
     <Directory Id="ProgramMenuFolder" Name="Programs"> 
     <Directory Id="ProgramMenuDir" Name="App"> 
      <Component Id="ProgramMenuDir" Guid="*"> 
      <RemoveFolder Id="ProgramMenuDir" On="uninstall" /> 
      <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" /> 
      </Component> 
     </Directory> 
     </Directory> 
    </Fragment> 
    <Fragment> 
    <ComponentGroup Id="group_tools"> 
     <ComponentRef Id="comp_tool_dll" /> 

    </ComponentGroup> 
    <DirectoryRef Id="INSTALLFOLDER"> 
     <Directory Id="bin" Name="bin"> 
     <Directory Id="Release" Name="Release"> 
      <Directory Id="Plugins" Name="Plugins"> 
      <Component Id="comp_tool_dll" DiskId="1" KeyPath="yes" Guid="*"> 
       <File Id="file_comp_tool_dll" Source="$(var.ReleaseSourcePath)\Plugins\tool.dll" /> 
      </Component>