Incorporer le framework 4.0 dans une application avec innosetup 5

samy basunga - 18 nov. 2017 à 21:57 - Dernière réponse : korgis 392 Messages postés samedi 17 mai 2003Date d'inscription 24 novembre 2017 Dernière intervention
- 20 nov. 2017 à 20:59
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!
Afficher la suite 

6 réponses

Répondre au sujet
vb95 1386 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - Modifié par vb95 le 18/11/2017 à 23:42
0
Utile
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. 
Commenter la réponse de vb95
korgis 392 Messages postés samedi 17 mai 2003Date d'inscription 24 novembre 2017 Dernière intervention - Modifié par korgis le 19/11/2017 à 20:16
0
Utile
1
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
korgis 392 Messages postés samedi 17 mai 2003Date d'inscription 24 novembre 2017 Dernière intervention - 20 nov. 2017 à 10:37
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 !
Commenter la réponse de korgis
korgis 392 Messages postés samedi 17 mai 2003Date d'inscription 24 novembre 2017 Dernière intervention - Modifié par korgis le 20/11/2017 à 14:25
0
Utile
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
Commenter la réponse de korgis
Cirec 4191 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention - Modifié par Cirec le 21/11/2017 à 11:16
0
Utile
1
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
korgis 392 Messages postés samedi 17 mai 2003Date d'inscription 24 novembre 2017 Dernière intervention - 20 nov. 2017 à 20:59
Bonsoir Cirec,

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.