Innosetup et detection version framework [Résolu]

Messages postés
132
Date d'inscription
dimanche 12 août 2001
Dernière intervention
17 octobre 2008
- 26 août 2006 à 13:31 - Dernière réponse :  Liior
- 15 juil. 2015 à 16:06
Allez pendant que je suis dans les questions, quelqu'un a t'il un script tout fait à mettre dans innosetup pour detecter avant installation du prog si l'utilisateur a la version minimale du framework  dans base de registre (policy etc...)pour faire tourner le prog

a moins qu'il y ai une autre méthode plus simple.

merci
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
Messages postés
3
Date d'inscription
mardi 9 janvier 2007
Dernière intervention
6 août 2008
- 6 août 2008 à 18:17
1
Merci
J'ai la réponse. Voici le code InnoSetup, je vous le donne parceque je l'ai tellement cherché :p

;CE CODE EST A PLACER DANS LA PARTIE [code] DE INNO SETUP :
;FONCTION DE VERIFICATION FRAMEWORK
function VerifierFramework(): Boolean;
var
  ErrorCode: Integer;
  NetFrameWorkInstalled : Boolean;
  Result1 : Boolean;
  SP2Installed : Boolean;
  Result2 : Boolean;
  Test : String;
begin
;LA CLE CORRESPONDANT AU FRAMEWORK 3.0 EXISTE-T-ELLE ?
    NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\v3.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 le .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}\Install\dotnetfx3setup.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 VerifierFramework() then
  begin
     ;ON DONNE LA POSSIBILITE DE CONTINUER !
      Result := true;
  end else
  begin
    Result := false;
  end;
end;

Merci LiioR 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de LiioR
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
- 26 août 2006 à 13:38
0
Merci
Je ne sais pas si Inno Setup est très approprié pour faire les empaquetages avec .net2005.
A moins que tu sois avec la version express, sinon je pense qu'il vaut mieux utiliser l'outil integré pour faire l'empaquetage.
Mais ce n'est que mon avis, je ne me suis pas vraiment penché sur le problème encore, j'en suis pas encore là

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Dernière intervention
17 octobre 2008
- 26 août 2006 à 13:49
0
Merci
oui justement j'ai la version express.
Commenter la réponse de cs_philcam
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
- 26 août 2006 à 14:01
0
Merci
Avec la version express tu ne peux faire qu'unseul type de déploiement (avec l'outil intégré, je parle), c'est que que MS appele Déploiement ClickOnce, c'est en gros une installation mise à disposition à distance par réseau ou site web

Pour les déploiements classiques par Windows Installer, il faut une version achetée de vb.net2005

Sinon avec inno setup, il faudrait vérifier sur le framework détecte tout seul s'il est déjà installé au moment d'une tentative d'installation. Si c'est le cas, tu n'as plus qu'à lancer systématiquement l'installation.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Dernière intervention
17 octobre 2008
- 26 août 2006 à 14:27
0
Merci
et je me demande aussi si je peux prendre que l'exe qui a été généré, pour le mettre dans innosetup ou si il faut prendre tous les autres fichiers qui se trouvent dans le dossier release ? (ou publish)
Commenter la réponse de cs_philcam
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 26 août 2006 à 15:57
0
Merci
J'ai jamais utilisé .net pour déployer une application, mais je pense qu'InnoSetup doit permettrait de tester si le framework est installé ou pas :
http://www.timesprite.com/BlogEntries/InnosetupDotnet.html

En lisant bien : "You need to detect whether the framework is already installed."

Et en regardant le script, ils mettent directement du code dans le setup pour le test :
if (not RegKeyExists(HKLM, 'Software\Microsoft\.NETFramework\policy\v1.1')) then begin

Donc ils se basent sur la clé du registre du framework pour détecter son install
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Dernière intervention
17 octobre 2008
- 26 août 2006 à 16:35
0
Merci
microsoft donne aussi ce genre de solution :

For the .NET Framework 1.0:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v1.0


For the .NET Framework 1.1:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v1.1


For the .NET Framework 2.0:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v2.0
7. Set the Value property as follows:• For the .NET Framework 1.0: "3705" 
• For the .NET Framework 1.1: "4322" 
• For the .NET Framework 2.0: "50727" 
 
8. In the Launch Conditions node, add a new launch condition. To do this, right-click the node, and then click Add Launch Condition. Give this condition an appropriate name, such as "CLR condition."
9. Click the new condition, and then set the Condition property as follows:• For the .NET Framework 1.0:
REGISTRYVALUE = "3321-3705"
• For the .NET Framework 1.1:
REGISTRYVALUE="3706-4322"
• For the .NET Framework 2.0:
REGISTRYVALUE="50727-50727"
Commenter la réponse de cs_philcam
Messages postés
1
Date d'inscription
lundi 25 septembre 2006
Dernière intervention
26 septembre 2006
- 26 sept. 2006 à 10:59
0
Merci
Tu peux aller voir ici: http://blogs.msdn.com/chrsmith/archive/2006/02/06/Using_dotnetchk.aspx pour utiliser l'utilitaire MS dotnetchk.exe qui retourne 1 si installé et 0 si pas installé

++
Commenter la réponse de olaer
Messages postés
5
Date d'inscription
dimanche 23 octobre 2005
Dernière intervention
30 mai 2007
- 30 mai 2007 à 18:10
Commenter la réponse de sampp
Messages postés
17
Date d'inscription
jeudi 22 juin 2006
Dernière intervention
16 juin 2008
- 17 juil. 2007 à 16:56
0
Merci
Bonjour,
il ya plus simple:

Dim ver as Version = Environment.Version
msgbox("Version Framework = ", ver)

Amicalement,
Riadh.
Commenter la réponse de riadhh05
Messages postés
3
Date d'inscription
mardi 9 janvier 2007
Dernière intervention
6 août 2008
- 4 avril 2008 à 11:03
0
Merci
Salut Riadh, très sympa sa réponse, mais si on veut detecter .NET, c'est qu'il y est peut etre pas... Et donc ton code, il marchera pas si le mec a pas .NET...

Pas très intelligent quoi ^^
Commenter la réponse de LiioR
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Dernière intervention
17 octobre 2008
- 5 août 2008 à 21:45
0
Merci
je viens de relire le topic un peu tardivement car je me pose encore la question pour un autre programme, et comme le dit liior avec tout le bon sens qu'il doit posséder :)   : si je voulais trouver la version c'est avant que le programme se lance (à l'installation) sinon si c'est pas la bonne version il ne se lancera pas...

mais je trouverai...
Commenter la réponse de cs_philcam
Messages postés
3
Date d'inscription
mardi 9 janvier 2007
Dernière intervention
6 août 2008
- 6 août 2008 à 18:18
0
Merci
Heu en fait je me suis trompé, les commentaires commencent pas par ";" mais par "//" :D
Commenter la réponse de LiioR
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Dernière intervention
17 octobre 2008
- 7 août 2008 à 23:57
0
Merci
je t'ai mis réponse acceptée car c'est bien ça que je cherchais et en plus je l'ai trouvé hier (autre version je pense) :

j'ai juste rajouté le téléchargement du dotnet si on ne l'a pas

merci et à plus !!

[Code]



function InitializeSetup(): Boolean;
var
    ErrorCode: Integer;
    NetFrameWorkInstalled : Boolean;
    Result1 : Boolean;
begin



      NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\policy\v2.0');
      if NetFrameWorkInstalled =true then
      begin
      Result1 := MsgBox('La vérification de la présence du .NET Framework v2.0 à réussi, vous pouvez continuer l''installation.',
                                    mbConfirmation, MB_OK) = idYes;
            Result := true;
      end;



      if NetFrameWorkInstalled = false then
      begin
            NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\policy\v2.0');
            if NetFrameWorkInstalled = true then
            begin



                  Result := true;
            end;



            if NetFrameWorkInstalled =false then
                  begin
                        Result1 := MsgBox('Vous n''avez pas le .NET Framework 2.0 de microsoft sur votre PC. Ces fichiers sont nécessaire au fonctionnement des programmes en VB.NET, voulez-vous télécharger .NET Framework 2.0 maintenant ?',
                                    mbConfirmation, MB_YESNO) = idYes;
                        if Result1 =false then
                        begin
                              Result:=false;
                        end
                        else
                        begin
                        ShellExec('open', ExpandConstant('http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe'),'', '', SW_SHOW, ewNoWait, ErrorCode);
                              Result:=false;
                                        end;
      end;
      end;
end;
Commenter la réponse de cs_philcam
Messages postés
134
Date d'inscription
jeudi 31 juillet 2008
Dernière intervention
15 février 2011
- 13 déc. 2008 à 08:25
0
Merci
bonjour à tous,

Merci pour ce bout de code.

Pour ma part je mets le pack Framework dans mon Setup car la personne  qui l'installe pourra ne pas avoir internet.

Je voudrais donc que le Inno Setup fasse l'installation puis vérifier si le Framework. Si le framework voulu n'est pas installé, il devra éxécuter le pack framework qui a été copié lors de l'installation du logiciel.

Donc comment faire pour réaliser cette vérification non pas au début mais à la fin de l'installation ?

Merci d'avance pour votre réponse,
Commenter la réponse de dsigmoun
Messages postés
3288
Date d'inscription
jeudi 3 avril 2008
Dernière intervention
14 septembre 2014
- 17 avril 2009 à 16:55
0
Merci
bonjour,
que je sache, le framework s'installe toujours au même endroit,
les clés de la base de registre sont toujours les mêmes aussi , donc suffit de faire un check file.exist ou regKey.exist
:)
Commenter la réponse de gillardg

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.