2009-07-29 9 views
5

Nous avons actuellement 4 installateurs pour notre logiciel client:Ecraser force de App.config lors de l'installation

  • ClientSetupTest
  • ClientSetupProduction
  • ClientUpdateTest
  • ClientUpdateProduction

Les seules différences entre eux sont que le programme d'installation contient les fichiers redistribuables Crystal Reports et Update ne NT. Test and Production spécifie uniquement l'environnement dans lequel ils s'exécutent et la seule différence réside dans une ligne du fichier Client.exe.config. Dumb, je sais, c'est pourquoi je les ai tous remplacés par un installateur après avoir supprimé Crystal Reports. Le nouveau programme d'installation écrit l'environnement sélectionné dans setup.config, référencé par l'attribut de fichier (see here).

L'attribut "file" est nouveau dans le fichier de configuration avec ce nouveau programme d'installation. Le problème que je rencontre est que si nous modifions le fichier Client.exe.config sur une ancienne installation, puis exécutez le nouveau programme d'installation, le fichier de configuration n'est jamais mis à jour avec l'attribut "fichier".

Existe-t-il un moyen de forcer la mise à jour d'un fichier? RemovePreviousVersions ne fonctionne pas exactement, car il s'agit d'un programme d'installation différent, à moins que je ne comprenne quelque chose. Mon idée actuelle, qui fonctionnera probablement, est d'ajouter du code dans la méthode OnBeforeInstall pour renommer l'ancien fichier Client.exe.config en un fichier de sauvegarde, donc il écrira toujours le nouveau. On dirait qu'il devrait y avoir une solution plus simple dans l'installateur lui-même, cependant. Des idées?

EDIT: renommer l'ancien fichier de configuration en Client.exe.config.old avant d'appeler base.OnBeforeInstall() ne fonctionnait pas. Il a renommé le fichier, mais n'a jamais écrit le nouveau.

Répondre

4

Windows Installer won't update a modified file.

Nonversioned Les fichiers sont données-utilisateur Si la date de modification est postérieure que la date de création du fichier sur l'ordinateur, ne pas installer le fichier car personnalisations seront supprimés. Si les dates modifiées et Créer sont les mêmes, installez le fichier. Si la date de création est postérieure à la date de modification, le fichier est considéré non modifié, installez le fichier.

Vous avez quelques options:

  • comprennent une action personnalisée qui modifie le fichier en place. Cela peut être un code script ou .NET.

  • faites comme vous le dites - déplacez le fichier existant à l'écart. L'installateur ne s'arrêtera pas dessus. Mais vous devez vous assurer que cela se passe dans l'ordre que vous imaginez. Vous devrez peut-être Orca pour déterminer la commande.

  • inclure une option personnalisée pour définir la date de création comme étant "aujourd'hui". Cela devrait être très simple avec une action personnalisée par script, en utilisant le Scripting.FileSystemObject. Ensuite, le programme d'installation de Windows l'écrasera.

+0

Merci. Je vais donner une chance à l'option personnalisée. Je vais toujours avoir le problème de ne pas transférer leurs paramètres personnalisés, mais s'il a été modifié, je peux le détecter et copier l'ancienne configuration. –

Questions connexes