2009-04-22 8 views
17

J'ai un programme d'installation d'une application qui doit être installée sur n'importe quelle version existante, quel que soit le numéro de version. Au lieu de cela, j'ai un installateur qui dit constamment que je dois aller ajouter/supprimer des programmes. C'est un comportement très frustrant pour mes testeurs, car cela les ralentit sans véritable raison: le précédent programme d'installation devait simplement s'installer, en supprimant tous les fichiers qui étaient auparavant là, donc ils n'ont jamais eu à le faire. Nous avons également une base de clients (importante) qui a été formée de la même manière, en ce sens que la version que j'installe actuellement devrait remplacer toute installation que j'aurais pu avoir auparavant. Il semble, d'après ce que je peux comprendre, que le paradigme WiX consiste à bloquer les installations de versions antérieures et d'autres choses compliquées, comme le patcher. Franchement, nos clients ne sont pas assez intelligents pour se renseigner sur les correctifs, la fusion, etc., et veulent juste un installateur qui fonctionne toujours (et je suis enclin à être d'accord avec eux, la bande passante est bon marché). Alors, comment je reçois ça?WiX - toujours remplacer la version précédente

J'ai essayé, mais il ne semble pas à la matière:

<InstallExecuteSequence> 
    <RemoveExistingProducts Before="InstallInitialize"/> 
</InstallExecuteSequence> 

ceci est une version 3.0.5120 de Wix.

EDIT: Selon la suggestion de Rob là, je l'ai ajouté ce code:

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallInitialize"/> 
</InstallExecuteSequence> 

<Upgrade Id="27cb76c7-544e-465f-b1f3-b11d9a49e416"> 
    <UpgradeVersion Minimum="0.8.0" 
        IncludeMinimum="yes" 
        Maximum="1.5.1" 
        Property="OLDERVERSIONBEINGUPGRADED" /> 
</Upgrade> 

Je ne suis pas d'ajouter le code pour ne pas permettre une installation de restauration; Pour des raisons qui me sont extrêmement embarrassantes, disons simplement qu'une augmentation du nombre de versions ne correspond pas nécessairement à une augmentation de la qualité logicielle. Je ne veux pas que quelqu'un soit exclu de ce dont il pense avoir besoin.

De plus, il est très important de changer le GUID par défaut du produit en "*" afin de créer un GUID différent avec un programme d'installation différent, ce qui était apparemment le problème.

+2

Je ne comprends pas exactement votre dernière phrase: Définir le GUID par défaut du produit sur * génère un nouveau GUID pour chaque programme d'installation compilé. Cela conduit à une nouvelle installation côte à côte pour chaque mise à jour. Au moins c'est ce que je pensais. J'essaie toujours de trouver un simple PoC de travail pour votre problème ... –

+0

Pour moi, il semble que les installations ne seraient jamais côte à côte. Tant que les codes de mise à niveau correspondent, l'ancienne version sera désinstallée et la nouvelle sera installée à sa place. N'est-ce pas ce comportement attendu de Wix? – Shadoninja

Répondre

18

Vous souhaitez une mise à niveau majeure. Il y a un sujet consacré à cela dans le "How To" de WiX.chm (également sur le web: http://wix.sourceforge.net/manual-wix3/major_upgrade.htm).

+0

Vous cherchez intéressant. Donc, si je veux juste les choses de mise à niveau, mais je veux aussi permettre de revenir en arrière une version, alors je laisse de côté la deuxième partie de ne pas autoriser les installations de version inférieure, je pense. – mmr

+0

@mmr Pouvez-vous partager ce que vous avez fini par faire? Le lien fourni ne semble pas répondre entièrement à votre question, si quelque chose vous dit comment faire le contraire de ce que vous voulez. – user145400

Questions connexes