3 votes

L'action WIX XmlConfig ne s'exécute pas lors du retour à l'état initial (patch rollback)

J'ai un composant qui exécute un couple d'actions XmlConfig : une à l'installation et une à la désinstallation :

  <Component Id="machine.config.Update" Guid="573DF5B0-438D-498d-8919-C4B96835C1EF">
    <RegistryKey Root="HKLM" Key="[REGISTRYKEY]\Settings\[TITLE]" Action="createAndRemoveOnUninstall">
      <RegistryValue Action="write" Type="integer" Name="MACHINEMEMORYLIMIT" Value="1" KeyPath="yes"/>
    </RegistryKey>
    <util:XmlConfig
      Id="CacheNode.memoryLimit.add"
      File="[WindowsFolder]\Microsoft.NET\[FRAMEWORKDIR]\v2.0.50727\CONFIG\machine.Config"
      Action="create"
      ElementPath="/configuration/system.web/processModel"
      Name="memoryLimit"
      Node="value"
      On="install"
      Value="90" />
    <util:XmlConfig
      Id="CacheNode.memoryLimit.remove"
      File="[WindowsFolder]\Microsoft.NET\[FRAMEWORKDIR]\v2.0.50727\CONFIG\machine.Config"
      Action="delete"
      ElementPath="/configuration/system.web/processModel"
      VerifyPath="/configuration/system.web/processModel"
      Name="memoryLimit"
      Node="value"
      On="uninstall" />
  </Component>

Le composant fait partie d'un correctif que je peux installer et annuler. Le problème est que l'action de désinstallation ne se déclenche pas lorsque je désinstalle le correctif. Ce qui est étrange, c'est que la même action XmlConfig s'exécute si je la modifie pour devenir On="install" . Je vois que la clé de registre est correctement supprimée lors de la désinstallation. Pourquoi l'action XmlConfig ne se déclenche-t-elle pas également ? J'ai vérifié les journaux et je n'ai pas vu d'erreurs ou d'explications sur la raison pour laquelle cela ne s'est pas produit.

Mise à jour : L'action XmlConfig fonctionne lors d'une désinstallation complète. Mais pas lors d'une réinitialisation de patch.

1voto

RandomEngy Points 6937

J'ai obtenu une réponse de la liste de diffusion wix-users.

Rob Mensching : "L'ajout d'actions personnalisées dans les correctifs ne fonctionne pas très bien. Les patchs appliquent essentiellement une transformation à la MSI existante puis réparent la MSI. Dans le cas de la désinstallation d'un patch, la transformation est supprimée et le MSI est réparé. Évidemment, si l'action personnalisée est supprimée avec la transformation, elle n'a aucune chance de s'exécuter.

Le programme d'installation de Windows fait une magie spéciale pour garder la trace de l'état du MSI avant et après la transformation afin de pouvoir supprimer correctement les données."

Ils ont également expliqué qu'une fonctionnalité de MSI 4.5 pourrait vous permettre de le faire, mais que WIX devait rester compatible avec les versions antérieures et qu'il y avait encore des problèmes de stockage de données.

Donc, en résumé, les actions personnalisées sur la désinstallation du patch ne fonctionnent pas dans WIX.

0voto

Yan Sklyarenko Points 16649

J'ai vérifié votre échantillon (presque) tel quel, et il fonctionne bien. Le problème peut être dans votre propriété FRAMEWORKDIR. Assurez-vous qu'elle est correctement définie à l'installation et à la désinstallation.

Il se peut qu'il revienne à sa valeur par défaut pour le flux de désinstallation et que l'attribut soit supprimé, mais dans un autre fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X