2012-02-09 1 views
0

Problème:
J'ai une exigence de l'utilisateur dans lequel un fichier ne serait pas installé si une application Condition préalable est absent sur la machine de l'utilisateur. Mais après avoir installé mon produit, lorsque l'utilisateur installerait cette application Prerequisite, il exécuterait mon programme d'installation et choisirait de réparer pour installer ce fichier manquant et ses entrées de registre associées.Wix: Installation d'un composant tout en réparer ou réinstaller

Mes attentes:
Je sais réparation ne ferait que réparer ces fichiers qui déjà été installés par la première installation. Mais n'y a-t-il pas une solution à ce problème ???

Tout ici et là avec AddLocal ???

Merci beaucoup à l'avance.

Répondre

0

votre question est source de confusion.

vous avez une application contenant 2 programmes. Lorsque nous exécutons le programme d'installation, il n'installe que le programme 1 et n'installe pas le programme 2, car prerequsite n'est pas installé. Maintenant, lorsque vous installez les prérequis maintenant, vous voulez que le programme 2 qui n'a pas été installé soit installé lorsque vous réexécutez le programme d'installation.

Sur un installateur. il y a 3 options. ajouter supprimer fonctionnalité, réparer et désinstaller. Vous pouvez ajouter une fonction de suppression et sélectionner le programme 2 et l'installer.

Vous devez configurer des conditions sur l'installateur qui, si le pré-requis n'est pas installé, le programme 2 ne peut pas être installé. Donc, quand vous essayez d'installer pour la première fois et que vous sélectionnez le programme 2 ou l'installation complète, il vous dira que vous ne pouvez pas installer cela comme pré-requis n'est pas là. Il installera seulement le programme 1. et lors de l'exécution de l'installation à nouveau, il affichera l'option Ajouter une fonction de suppression.

J'espère que vous avez la réponse.

1

Vous pouvez utiliser une condition à l'intérieur d'une balise de composant. Exemple:

<Component Id="RepairOrReinstallOnly" Guid="YourGUID" Transitive="yes"> 
    <Condition> 
     INSTALLED AND (NOT UPGRADINGPRODUCTCODE) 
    </Condition> 
    ... 
</Component> 

De cette façon, le composant doit uniquement être installé lors des réparations, des modifications et des réinstallations.

Mais il ne sera pas installé lors de la première installation (INSTALLED est faux) ou si vous effectuez une mise à niveau majeure (UPGRADINGPRODUCTCODE est true).

0

Je ne pense pas que ce soit faisable car lorsque Windows Installer met en cache votre fichier .msi, les fichiers .cab sont supprimés. Cela signifie que les fichiers sources qui ont été ignorés à l'origine ne seront pas disponibles à moins que l'utilisateur n'ait conservé le programme d'installation d'origine. C'est un peu exagéré de faire cette supposition. Ma suggestion serait de toujours installer le fichier, ou d'essayer que votre application gère le déploiement du (des) fichier (s) optionnel (s). J'ai constaté que chaque fois que vous essayez de faire des choses non standard dans l'installateur, il devient beaucoup plus complexe à gérer, et beaucoup plus difficile d'empêcher les problèmes subtils de s'infiltrer.