2010-04-17 3 views
5

J'ai un fichier defines.wxi qui contient quelques bonnes définitions utilisées dans tous mes fichiers wxs.WiX: Définir fait dans le fichier inclus n'est pas disponible de wxs-fragment-fichier

Lorsque j'essaie de référencer la valeur définie à partir de l'un des fichiers <Fragment>, j'obtiens Undefined preprocessor variable '$(var.IMAGE_FOLDER)' sur mon visage.

Je pense qu'il y a quelque chose de trivial qui me manque ici ... Des idées?

Édition 19: avril.
Trouvé ce problème se produit uniquement si référence d'un fichier Fragment.
A réécrit l'échantillon pour correspondre à cela.


defines.wxi

<Include> 
    <?define IMAGE_FOLDER="Images" ?> 
</Include> 

certains-Fragment.wxs

<Fragment> 
    <?Include defines.wxi ?> 

    <Component Id='c.Images' Guid=".." Directory='INSTALLDIR.Images' > 
    <File Id='f.sample.jpg' Source='$(var.IMAGE_FOLDER)sample.jpg' Name='sample.jpg' /> 
    </Component> 
+0

Works pour moi ... –

+0

a démontré que les ci-dessus était de simplified.issue ne se produit si référence d'un fichier de Fragment. Re-a écrit l'échantillon pour correspondre à cela. – leiflundgren

Répondre

5

Résolu.

Où dans l'échantillon dit:

<?Include defines.wxi ?> 

il devrait être minuscules ...

<?include defines.wxi ?> 

il fonctionne comme un charme!

/L

0

Dans le texte du message d'erreur que vous avez fourni, il dit « Undefined variable de préprocesseur « $ (var MAGE_FOLDER) '", pas $ (var IMAGE_FOLDER) - le premier 'I' est manquant. Cela m'a fait penser que vous faites référence à la même variable quelque part dans le reste de votre code, mais en la mal orthographiant.

Dans ce cas, le fichier candle.exe a absolument raison - il peut trouver IMAGE_FOLDER, mais ne peut pas trouver MAGE_FOLDER.

J'espère que c'est le cas et que vous le corrigerez rapidement. ;-)

+0

Merci, mais c'était vraiment IMAGE_FOLDER dans le message d'erreur. Le tyop était dans la question. – leiflundgren

1

Ok, un autre essai. Mentionnez-vous quelque chose dans ce <Fragment/> à partir du <Product/> principal? Le contenu du fragment est visible pour le reste du code au cas où vous en référeriez quelque chose. Par exemple, vous pouvez référencer un composant (<ComponentRef/>) ou un groupe de composants (<ComponentGroupRef/>). Une fois que tout est référencé, le fragment entier est inclus.

Espérons que cela aide.

+0

Pourquoi oui. Dans ma fonction principale dans le produit, j'ai un ComponentRef à mon composant c.Images. Cependant, je ne pense pas que nous soyons arrivés aussi loin. Le message d'erreur provient de la bougie du compilateur WiX et non de l'éditeur de liens. WiX pense donc qu'il s'agit d'une erreur de pré-processeur. – leiflundgren

+0

Oui, c'est vrai ... Je n'ai plus d'idées ... Avez-vous essayé de passer à WiX 3.0 RTM si vous ne l'utilisez pas? –

Questions connexes