J'ai deux modes de travail dans mon installateur:Comment puis-je remplacer conditionnellement fichier lors de l'installation Wix?
- utilisent des fichiers de configuration à gauche de l'installation précédente
- supprimer tous les configs et mis configs par défaut à la place
existantes Le mode est déterminé par la case à cocher dans l'interface utilisateur WPF de l'installateur. Si le deuxième mode est sélectionné, puis CustomAction est exécuté, qui supprime le dossier configs à partir du disque manuellement:
<InstallExecuteSequence>
<Custom Action="RemoveConfigsFolder" After="RemoveFolders" Overridable="yes">NOT Installed AND DELETESETTINGS=1</Custom>
</InstallExecuteSequence>
J'utilise l'attribut NeverOverwrite:
<ComponentGroup Id="Configs" Directory="INSTALLDIR" >
<Component Id="Configs" Permanent="yes" NeverOverwrite="yes">
<File Id="main.config" Name="main.config" Source=".\Configs\main.config" KeyPath="yes" />
</Component>
</ComponentGroup>
Le premier mode fonctionne très bien dans ce cas, mais lorsque je tente d'utiliser second mode, il échoue et toutes les configs sont tout simplement supprimés et jamais créé à nouveau lors de l'installation.
Au cours de mes recherches sur la question, je pense que j'ai trouvé la raison pour laquelle cela se produit: https://community.flexerasoftware.com/showthread.php?96157-The-truth-the-whole-truth-about-quot-Never-overwrite-quot-and-quot-Permanent-quot-files&p=156826#post156826
En fait, cela est un problème Windows Installer. Si vous vous connectez la désinstallation vous remarquerez que très tôt dans l'installation le programme d'installation décide que le composant contenant ce fichier ne sera pas installé car il est marqué "Ne jamais écraser" et une copie de ce fichier déjà existe sur la cible machine. La désinstallation se passe après ce qui supprime le fichier existant. En effet, le programme d'installation décide ce lorsque l'action « CostFinalize » est lancé. Cette action doit être exécuté avant que l'action « de RemoveFiles ».
Mais comment puis-je résoudre ce problème?
S'agit-il d'une mise à niveau majeure et, si oui, où est-elle programmée? – PhilDW