Ce qui suit est utilisé pour générer une commande msiexec avec nant:Msiexec ne parvient pas à exécuter (commande générée avec NANT)
> "<exec program="msiexec"
> timeout="1800000" verbose="true">
> <arg line="/i "${server.msi}"" />
> <arg line="TARGETDIR="${server.target.path}""
> />
> <arg line="INSTALLDIR="${server.target.path}""
> />
> <arg line="ALLUSERS=1" />
> <arg line="/quiet" />
> <arg line="/log "${path::combine(log.path,
> 'Installation.Server.log')}"" />"
</exec>
commande Th généré est: msiexec (/ i « S: \ work \ Sources \ Installation \ Setup \ LastBuild \ WiseSetup Serveur.msi "TARGETDIR =" C: \ Programmes \ MyProgs \ Serveur "INSTALLDIR =" C: \ Programmes \ MyProgs \ Serveur "ALLUSERS = 1;/quiet/log" C: \ Projets \ P3450 \ Environment \ Logs \ Installation.Server.log ")
Cette commande échoue lorsque la commande/quiet (ou/qn) est supprimée et qu'elle s'exécute correctement. Sinon, il donne l'erreur: Échec du programme externe: msiexec (le code de retour était 1619)
Notez que le "(" et ")" est supprimé et que/quiet est là, il fonctionne avec succès!
Exécuter la commande suivante à partir de la fenêtre cmd et voir si errorlevel est en effet 0 msiexec/i "S: \ Work \ Setup \ Setup \ LastBuild \ WiseSetup Server.msi" TARGETDIR = "C: \ Program Files \ MyProgs \ Serveur "INSTALLDIR =" C: \ Program Files \ MyProgs \ Serveur "ALLUSERS = 1/quiet/log" C: \ Projets \ P3450 \ Environnement \ Logs \ Installation.Server.log " echo% errorlevel% si erreur le niveau est 0 alors exécutez la même commande de nant avec les arguments codés en dur, cela doit fonctionner aussi bien. Commencez ensuite à remplacer les arguments par des variables et exécutez nant après chaque modification. – Moisei