InnoSetup - Vérifier si visual studio 2010 crt redist est installé, si ce n'est, puis exécutez le programme d'installation

J'ai actuellement dans cette partie de l'Inno script

[Run]
Filename: {app}\bin\vcredist_x86.exe; Parameters: "/q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; WorkingDir: {app}\bin; StatusMsg: Installing Visual Studio 2010 C++ CRT Libraries...

Il sera exécuté vcredist installer lors de l'installation de l'application. Mais le problème avec cela est que si l'utilisateur a déjà installé il jette des choses comme

  • Réparer/Supprimer
  • Déjà la plus récente version détectée

Est-il un moyen pour éviter cela et uniquement exécuter ce programme en cas de besoin? Que dois-je ajouter à Inno script?

EDIT:

Avec l'aide de @Jean les liens que j'ai faite il witht fonction suivante ajouté

J'ai aussi utilisé ce site pour refference pour obtenir visual studio 2010 crt++ code de produit et utilisé dossier de Désinstallation dans le registre pour détecter si son installé.

function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
RedistInstalled : Boolean;
Result1 : Boolean;
begin
RedistInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}');
if RedistInstalled then
begin
Result := true;
end else
begin
RedistInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}');
if RedistInstalled then
begin
Result := true;
end else
begin
Result1 := MsgBox('This setup requires Microsoft Visual C++ 2010 Redistributable Package (x86). Please install Visual C++ 2010 Redistributable Package (x86) and run this setup again.  '#13#10' '#13#10'Do you want to download Microsoft Visual C++ 2010 Redistributable Package (x86) now?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
end else
begin
Result:=false;
ShellExec('open',
'http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe',
'','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;
end;
end;
end;

Il serait encore bien si toutefois installateur devrait continuer après le téléchargement/installation ou que je pourrais m'adapter à mon précédent code qui s'exécute inclus(avec installation) installateur:

 [Run]
Filename: {app}\bin\vcredist_x86.exe; Parameters: "/q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; WorkingDir: {app}\bin; StatusMsg: Installing Visual Studio 2010 C++ CRT Libraries...

mais c'est encore assez bon.

Si elle est définie à l'installation silencieuse, il ne devrait pas donner des avertissements? De Plus, pas sûr de ce que l'ensemble de ces paramètres veux dire. Sont-elles nécessaires?
Pour ce scénario, vous voulez vraiment utiliser un module de fusion (.msm) au lieu de vc_redist.exe -mais innosetup ne supporte pas ceux, de sorte que vous devez envelopper ce dans un .msi, ou d'utiliser quelque chose d'autre à faire votre programme d'installation.
Vous pouvez utiliser quelque chose like this s'il y en a connu registry entries for Visual Studio. Même si pas, le Check paramètre est ce que vous avez besoin.
Personnellement je ne tuer immédiatement votre installation depuis je m'attends à passer par l'assistant, de ne pas installer un cadre, lorsque l'assistant formulaire est en cours d'initialisation. Encore une fois, je vous recommande fortement de ne pas utiliser InitializeSetup ou tout autre événement pour l'exécution de ce genre de tâches.
Quelque chose comme this pourrait (en partie, si vous finissez par vos propres) s'adapter à votre but 😉

OriginalL'auteur Marko29 | 2012-06-11