Dans votre paquet, ajoutez les lignes suivantes:
<util:RegistrySearch Id="VCRedistTest64" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID_HERE}" Result="exists" Variable="VCR64Present" Win64="yes"/>
<util:RegistrySearch Id="VCRedistTest32" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID_HERE}" Result="exists" Variable="VCR32Present" Win64="no"/>
Remettez en place les {GUID_HERE} balises avec le GUID correct pour Visual C++ 2013. Pour le trouver, sur une machine avec Visual C++ déjà installateur, ouvrez votre registre et accédez à:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\
Dans cette clé, il y aura plusieurs sous-clés, où chaque sous-clé correspond à un paquet de logiciel installé. Recherchez la clé qui correspond au Visual C++ 2013 et copiez le nom de la clé, qui est le GUID que vous devez insérer dans le code ci-dessus.
Enfin, modifiez votre élément Exepackage à:
<ExePackage Id="VC2013" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile=".\vcredist_x862013.exe" DetectCondition="(VCR32Present OR VCR64Present)/>
Cela permettra à Windows de détecter si Visual C++ est déjà installé, et empêchera votre installateur de ré-installer.
En outre, ajouter ce qui suit au niveau supérieur tag "Wix":
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
Pourquoi est-ce un problème? Sûrement, Vcredist fait la bonne chose quand il est rediffusé. –
je pense que sa réinstallation à chaque fois, ce qui prend trop de temps pour le processus d'installation –