Incorporer le framework 4.0 dans une application avec innosetup 5

samy basunga - Modifié le 18 nov. 2017 à 22:02
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 - 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!

4 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 18 nov. 2017 à 23:42
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. 
0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
Modifié le 19 nov. 2017 à 20: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
0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
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 !
0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
Modifié le 20 nov. 2017 à 14:25
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
Modifié le 21 nov. 2017 à 11:16
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
0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
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 ^^)
0
Rejoignez-nous