Incorporer le framework 4.0 dans une application avec innosetup 5

Signaler
-
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
-
Salut à tous !
je veux incorporer le framework 4.0 dans mon application développée en visual studio professionnel 2012. mon souhait est le suivant : lors de l'installation de ce logiciel par l'utilisateur, le système doit vérifier si celui-ci a bien le framework 4.0 dans son ordinateur.
si oui, on installe directement l'application
si non, on recommande d'installer d'abord le framework.
voici mon code dans l'éditeur Inno Setup :

//FONCTION DE VERIFICATION FRAMEWORK

function VerificationFramework(): Boolean;
var
ErrorCode: Integer;
NetFrameWorkInstalled : Boolean;
Result1 : Boolean;
SP2Installed : Boolean;
Result2 : Boolean;
Test : String;
begin
//LA CLE CORRESPONDANT AU FRAMEWORK 4.0 EXISTE-T-ELLE ?
NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\Framework\.NETFramework\v4.0');
//SI OUI :
if NetFrameWorkInstalled then
begin
//ON RETOURNE TRUE
Result := true;
end
else
begin
//SINON ON DEMANDE SI ON VEUT INSTALLER
Result1 := MsgBox('Cette installation requiert le .NET Framework. Voulez-vous installer ce .NET Framework maintenant et relancer cette installation ensuite ?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
//SI ON NE VEUT PAS INSTALLER ON RENVOIE FALSE
Result:=false;
end
else
begin
//SI ON VEUT BIEN INSTALLER ON LANCE L'INSTALLATION
ShellExec('open', ExpandConstant('{src}\dotNetFx40_Full_setup.exe'), '','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;
end;
end;
//FONCTION APPELLEE AU DEMARRAGE DU SETUP
function InitializeSetup(): Boolean;
var
ErrorCode : Integer;
begin
//SI LE FRAMEWORK EXISTE :
if VerificationFramework() then
begin
//ON DONNE LA POSSIBILITE DE CONTINUER !
Result := true;
end else
begin
Result := false;
end;
end;


Avec ce code je suis bloqué. Lors de l'installation même si le framework est déjà installé dans l'ordinateur le système demande toujours de l'installer et ça ne passe jamais à l'installer du logiciel...

Pouriez-vous me proposer vos savoirs à fin que je sois débloqué ?
Merci d'avance!

4 réponses

Messages postés
2427
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 mai 2021
137
Bonjour
C'est du VB Net cela ?
Je pencherais plutôt pout Delphi
J'ai redirigé vers le bon forum !

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
Salut,

Difficile de suivre la logique d'un code avec une indentation aussi fantaisiste...

Le problème se situe visiblement aux lignes 23-24 :

Result1 := MsgBox('Cette installation requiert le .NET Framework. Voulez-vous installer ce .NET Framework maintenant et relancer cette installation ensuite ?',
mbConfirmation, MB_YESNO) = idYes;


bien que je ne comprenne pas la syntaxe particulière de cette MsgBox (spécifique à Inno Setup, je présume).

Quoi qu'il en soit, c'est là que doit être clairement déterminé si l'usager veut installer (oui ou non) le framework.
"mbConfirmation, MB_YESNO) = idYes" ça ne me semble pas très limpide ! C'est oui ou c'est non, ou tu veux ou tu veux pas ^^

Par ailleurs, et même si ça n'a pas d'influence sur le résultat, il est beaucoup plus juste d'écrire la fonction InitializeSetup() ainsi :

function InitializeSetup(): Boolean;
var
  ErrorCode: Integer;
begin
  Result := VerificationFramework;
end;


Cordialement,
korgis
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
J'ai répondu un peu vite.

Il se peut aussi que la condition :

NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\Framework\.NETFramework\v4.0')

pose problème.

La référence à l'emplacement dans la base de registre est-elle correcte ?
Sinon, la condition sera toujours "False".

Sinon, c'est dans la gestion de la Message Box, qui renvoie toujouts "False".

A tester !
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
Ok, je viens de découvrir la documentation Inno Setup (je ne l'avais jamais utilisé).

La ligne concernant la MsgBox est correcte.

L'ensemble du code est donc cohérent et logique.

Le seul point pouvant poser problème est la ligne concernant l'inscription dans la base de registre :

Es-tu sûr de l'emplacement et du nom de la clé correspondant au framework 4.0 ?

korgis
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
Tout comme Korgis, que je salue au passage,
je pense que le soucis vient la clé de registre que tu testes.

par exemple chez moi j'ai les informations sous:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319

ainsi que
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0
// et aussi
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4

donc es-tu certain de la clé que tu testes ?

Cordialement,
    
@+ Cirec
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
Bonsoir Cirec,

Ouais, ça vient très certainement de là.
A samy basunga de nous le confirmer (s'il retrouve son chemin jusqu'à nous ^^)