2013-08-20 12 views
5

vorrei installare la mia applicazione nella seguente struttura di directory:WIX ComponentGroup sottodirectory

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

Per questo, ho definito le seguenti cartelle:

<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> 

Ora ho definito 1 funzionalità con un riferimento a un gruppo di componenti. Questo gruppo di componenti ha una proprietà "Directory" che punta a "INSTALLFOLDER". Ma quando ora dichiaro un componente nel gruppo di componenti che ha anche una proprietà "Directory" (che punta a DATABASE_PLUGINS), VS non mi permette di costruire l'installazione.

<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> 

Come posso ottenere che il programma di installazione crea una sottodirectory dentro la mia principale directory di installazione e mette dichiarato file in esso?

+6

Vado su un arto qui e dire si deve dichiarare la componente al di fuori del ComponentGroup e utilizzando un elemento ComponentRef a aggiungilo al gruppo – Netfangled

+0

Ha funzionato come un incantesimo. Grazie mille. =) – Atrotygma

risposta

4

qui è il mio esempio completo Spero che questo ulteriore aiuto agli sviluppatori

</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>