2010-08-30 12 views
1

J'ai un programme d'installation wix qui va installer un fichier XML, puis le modifier. L'installation fonctionne très bien. Aujourd'hui, j'avais besoin d'ajouter quelques nœuds à ce fichier XML. J'ai donc modifié le fichier original, puis ajouté des instructions supplémentaires à wix pour attribuer ces valeurs aux éléments.Comment forcer wix à mettre à jour un fichier avant de le manipuler lors d'une mise à niveau

Eh bien, j'obtiens une erreur à chaque fois en disant qu'il ne peut pas trouver le nœud. Je regarde et vois quel fichier il a dans le répertoire et il a toujours l'ancien fichier qui n'a pas eu le noeud. Comment puis-je lui dire de remplacer le fichier XML d'abord, puis le modifier? Je ne veux pas utiliser "CreateElement" parce que je ne sais pas comment ne pas créer un élément s'il existe déjà (ne l'ai pas essayé, alors peut-être que ça marcherait). De plus, je veux que mon fichier XML soit la définition de la configuration.

Voici un échantillon de mon XML:

 <Component Id="MyProgExeConfigComponent" Guid="*"> 
    <File 
     Id="MyProgExeConfig" 
     Name="MyProg.exe.config" 
     DiskId="1" 
     Source="../Published/MyProg/MyProg.exe.config" 
     PatchWholeFile="yes" 
     KeyPath="yes"/> 
    <util:XmlFile 
     Id="MyProgExeConfigUser" 
     Action="setValue" 
     Permanent="yes" 
     File="[INSTALLLOCATION]\MyProg.exe.config" 
     ElementPath="/configuration/appSettings/add[\[]@key='UserName'[\]]" 
     Name="value" 
     Value="[USER]"/> 
    <util:XmlFile 
     Id="MyProgExeConfigPassword" 
     Action="setValue" 
     Permanent="yes" 
     File="[INSTALLLOCATION]\MyProg.exe.config" 
     ElementPath="/configuration/appSettings/add[\[]@key='Password'[\]]" 
     Name="value" 
     Value="[PASSWORD]" /> 

Toutes les idées?

Répondre

8

Windows Installer ne remplace probablement pas le fichier car vous avez INSTALLMODE = omus et les dates de création et de modification du XML sont différentes.

Le fichier XML est-il le fichier clé de son propre composant? Si oui, essayez d'utiliser l'attribut File @ DefaultVersion pour faire croire à Windows Installer que le nouveau fichier a une version # (nous l'appelons 'Version Lying' en googling) et donc l'emporte sur le fichier non versionné. vos mises à jour XML peuvent être appliquées à partir de là

+0

doux qui a fonctionné Merci encore, Chris maintenant, dois-je augmenter cette version à chaque fois que je fais une modification au fichier XML? –

+1

Non. Je ne fais que définir la version à la limite supérieure (65535.65535.65535.65535) ou similaire et tout va bien Le vrai fichier déployé n'aura jamais de numéro de version. –