2009-06-22 12 views
1

J'utilise WiX (3.0.3815.0) sur un projet assez important. Je veux faire une génération de code qui générera des éléments d'erreur à partir d'un type de source (but: les AC compilées en C et les MSI doivent voir les chaînes d'erreur et connaître les ID). Je produis quelque chose comme ceci:WiX dépose des fragments avec seulement des éléments d'erreur sinon référence par des actions personnalisées

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
    <UI> 
     <Error Id="28002"><![CDATA[bla bla bla]]></Error> 
     <Error Id="28003"><![CDATA[bli bli bli]]></Error> 
(Lots more...) 
    </UI> 
    </Fragment> 
</Wix> 

Au cours de la construction, je l'utilise comme j'utiliser mes autres fichiers .wxs: appeler candle.exe et obtenir gen.wixobj, puis passer à light.exe en même temps que mon autre wixobjs.

Problème: WiX n'inclut pas les lignes d'erreur dans la table d'erreurs MSI résultante (validée avec Orca). Solution de contournement laide: Ajoutez une action personnalisée avec Error = "28002" - puis le fichier entier est inclus dans le fichier MSI.

Quelqu'un connaît-il cela? Une solution moins moche?

Répondre

2

L'élément UIRef a été ajouté pour ce genre de chose. Ajoutez un attribut UI/@ Id et ajoutez un élément UIRef avec correspondance @Id dans le fragment qui inclut votre définition CustomAction.