2010-12-14 50 views
3

Salut Je suis dans une situation où J'ai besoin d'inclure des tas de fichiers conditionnellement au temps de construction.Wix: ajout conditionnel de fichiers au moment de la construction

J'ai besoin de conseils pour utiliser des variables de pré-processeur pour définir un groupe particulier de fichiers à inclure dans le programme d'installation lors de la génération.

J'ai expérimenté avec <? include Group1.wxi ?> tout en définissant comme folloiwng:

<Include> 
    <DirectoryRef Id="PLANTROOT"> 
    <!--Adding Plugins======= Start ==--> 
    <Directory Id="Plugins" Name="Plugins"> 
     <Directory Id="PIW_Plugin" Name="PIW"> 
     <Merge Id='PIWtoIDGNConverter' Language='0' SourceFile='PIWtoIDGNConverter.msm' FileCompression='yes' DiskId='1' /> 
     <Directory Id="Dir_ECFramework" Name="ECFramework" > 
      <Merge Id='ECFrameworkMergeModule' Language='0' SourceFile='ECFrameworkMergeModule.msm' FileCompression='yes' DiskId='1' /> 
    </Directory> 
     </Directory> 
     </Directory> 
    </Directory> 
    <!--Adding Plugins=======Stop==--> 
    </DirectoryRef> 

<FeatureRef Id="PIWMain"> 
    <!--Sub Feature for PIW 2 IDGN Converter Plugin--> 
    <Feature Id="PIW_imodel_OWL_Plugin" AllowAdvertise="no" Description="PIW i-model &amp; OWL" Display="expand" Level="1" Title="PIW i-model &amp; OWL" InstallDefault="followParent"> 
     <MergeRef Id='PIWtoIDGNConverter' /> 
     <MergeRef Id='ECFrameworkMergeModule' /> 
     <MergeRef Id='ECObjectsMergeModule' /> 
     <MergeRef Id='PlatformSdkBinariesMergeModule' /> 
     <!-- <MergeRef Id='ECFW_LicenseClient' /> --> 
     <MergeRef Id='ManagedLogClientMergeModule' /> 
     <MergeRef Id='ECClassEditor' /> 
     <MergeRef Id='ClassEditorRDSPlugin' /> 
     <MergeRef Id='SQLDbECPluginMergeModule' /> 
     <MergeRef Id='SQLDbECCEExtensionMergeModule' /> 
    </Feature> 
    </FeatureRef> 

C'est, faisant référence à l'annuaire et Particuliarité dans le dossier parent. Mais wxi n'accepte pas DirectoryRef et FeatureRef

Toute aide serait grandement appréciée.

Merci et meilleures salutations

Répondre

4

J'éviter Comprend tout à fait dans ce cas. Au lieu de cela, créez vos fichiers et composants et regroupez-les dans ComponentGroups dans des fragments distincts. Puis dans votre (vos) Feature (s) conditionnellement inclure ComponentGroupRefs. Par exemple, disons que vous avez un files.wxs comme (imaginez d'autres fichiers;):

<Fragment> 
    <ComponentGroup Id="Foo"> 
    <Component Directory="DirectoryId"> 
     <File Source="path\to\file.ext"/> 
    </Component> 
    </Component> 
</Fragment> 

Puis, en product.wxs:

<Product ...> 
    <Feature Id="F"> 
    <?ifdef IncludeFiles ?> 
     <ComponentGroupRef Id="Foo" /> 
    <?endif?> 
    </Feature> 
</Product> 
0

Oups, j'ajoutais le fichier à inclure mauvais endroit . A été confondu de Fragments et le fichier a été inclus après où seulement devrait résider avec des références.