WiX Vérifier l'existence du Fichier avant de l'Installer
J'ai vu cette question posée plusieurs fois, mais aucune réponse ne semble pas fonctionner pour moi. Je suis évidemment manquer quelque chose d'élémentaire, mais je n'arrive pas à trouver ce que c'est! J'ai seulement été à l'aide de WiX pour un couple de jours, donc je suis encore très nouveau pour elle.
En gros, j'ai construit un plug-in à un produit existant, et je veux vérifier que le produit est installé à l'avant de permettre à mon plug-in pour l'installer. Je pense que la façon la plus simple est de vérifier l'exécutable principal est dans le bon répertoire.
Mon code pour l'instant:
<Property Id="FILEEXISTS">
<DirectorySearch Id="CheckFileDir" Path="INSTALLDIR" Depth="0">
<FileSearch Id="CheckFile" Name="main.exe" />
</DirectorySearch>
</Property>
<Condition Message="File does exist.">NOT FILEEXISTS</Condition>
Où INSTALLDIR
est le Id
du répertoire où l'main.exe devrait être et est défini dans le imbriqués Directory
balises.
OriginalL'auteur Chris | 2011-06-29
Vous devez vous connecter pour publier un commentaire.
Recherches sont exécutées avant que l'utilisateur peut définir un dossier d'installation par le biais de la MSI boîtes de dialogue. Donc, cette approche ne fonctionne pas de la manière que vous voulez.
Si vous voulez vérifier un fichier dans le dossier d'installation, je propose une INTERFACE utilisateur personnalisée action exécutée par l'intermédiaire d'un DoAction événement de contrôle. Cet événement peut être déclenché par le bouton Suivant dans votre dossier boîte de dialogue de sélection.
Il n'y a pas prédéfini d'actions personnalisées pour cela, vous aurez besoin d'écrire du code personnalisé. Il devrait être d'une DLL ou VBScript qui reçoit l'installation de la poignée. Vous pouvez trouver un petit tutoriel ici: http://www.codeproject.com/KB/install/msicustomaction.aspx
Oui, la récupération de l'ancien chemin d'installation de base de registre est une bonne idée.
Salut, merci pour ça. Je comprends pourquoi maintenant. Je vais le changer pour un registre de recherche pour obtenir le chemin d'accès pour une solution plus complète. En attendant, j'ai réussi à le faire fonctionner en changeant @Path "[ProgramFilesFolder]Fabricant/ProductFolder" et la condition "FILEEXISTS" plutôt que "PAS FILEEXISTS"
OriginalL'auteur user527987
Je suppose que vous manquez les crochets [] autour de la INSTALLDIR dans @Chemin. Aussi, l' @Profondeur=0 a l'air suspect, omettez simplement cet attribut pour une plaine de recherche, il devrait être par défaut à 1 et c'est ce que vous avez normalement besoin de rechercher un fichier dans un répertoire.
Espère que ça aide, mais, pour être rigoureux, votre question ne contient pas la vraie question. Il est difficile de comprendre si vous êtes l'obtention de toute erreur, ou de la condition ne fonctionne tout simplement pas...
Je ne suis pas sûr de ce que tu veux dire, mais FILEEXISTS propriété est définie uniquement dans le cas où le fichier se trouve dans le dossier que vous soyez à la recherche. BTW, examinez le fichier journal pour comprendre si la propriété FILEEXISTS est et quelle est la valeur de
OriginalL'auteur Yan Sklyarenko