J'ai un scénario qui, si une application est déjà installée, désinstalle d'abord l'ancienne version, puis installe une nouvelle version.Le script n'attend pas que l'instruction se termine et commence à s'exécuter sur la ligne suivante
je l'ai écrit suivant morceau de code dans un fichier batch en utilisant VBScript:
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
path="C:\Program Files\MySetup\My App 3.5" 'path to folder
exists = fso.FolderExists(path)
if (exists) then
WshShell.Run "msiexec /qb /x {3D5D4357-217C-49BA-A8E8-00907D631F05} "
end if
WshShell.Run "msiexec /qb /i C:\Build\" & msiFileName
Je suis confronté à un problème que lorsque l'exécution va au bloc if (exist)
, laisse supposer l'application est déjà installée, il va à l'intérieur if
bloquez et commencez à désinstaller l'application et l'exécute de façon asynchrone et commencez à exécuter la ligne suivante (en installant la nouvelle version) et cela pose le problème qu'une "autre installation est déjà en cours". Tout ce que je veux qu'une fois qu'il va pour désinstaller l'application, il devrait attendre jusqu'à ce qu'il soit terminé, puis seulement aller à la ligne suivante pour l'exécution (installation de la version plus récente).
J'ai utilisé ce que vous avez spécifié mais n'attend pas que l'instruction soit terminée. –
Vérifiez s'il y a quelque chose à désinstaller, ajoutez une clé pour enregistrer l'activité de 'msiexec' et analysez, il pourrait y avoir des erreurs respectives de désinstallation/MSIexec. – Vesper
Merci, il semble fonctionner maintenant. –