Innosetup et detection version framework [Résolu]

cs_philcam 132 Messages postés dimanche 12 août 2001Date d'inscription 17 octobre 2008 Dernière intervention - 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 

17 réponses

Répondre au sujet
LiioR 3 Messages postés mardi 9 janvier 2007Date d'inscription 6 août 2008 Dernière intervention - 6 août 2008 à 18:17
+1
Utile
1
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;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de LiioR
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 26 août 2006 à 13:38
0
Utile
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
cs_philcam 132 Messages postés dimanche 12 août 2001Date d'inscription 17 octobre 2008 Dernière intervention - 26 août 2006 à 13:49
0
Utile
oui justement j'ai la version express.
Commenter la réponse de cs_philcam
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 26 août 2006 à 14:01
0
Utile
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
cs_philcam 132 Messages postés dimanche 12 août 2001Date d'inscription 17 octobre 2008 Dernière intervention - 26 août 2006 à 14:27
0
Utile
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
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 26 août 2006 à 15:57
0
Utile
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
cs_philcam 132 Messages postés dimanche 12 août 2001Date d'inscription 17 octobre 2008 Dernière intervention - 26 août 2006 à 16:35
0
Utile
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
olaer 1 Messages postés lundi 25 septembre 2006Date d'inscription 26 septembre 2006 Dernière intervention - 26 sept. 2006 à 10:59
0
Utile
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
sampp 5 Messages postés dimanche 23 octobre 2005Date d'inscription 30 mai 2007 Dernière intervention - 30 mai 2007 à 18:10
Commenter la réponse de sampp
riadhh05 17 Messages postés jeudi 22 juin 2006Date d'inscription 16 juin 2008 Dernière intervention - 17 juil. 2007 à 16:56
0
Utile
Bonjour,
il ya plus simple:

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

Amicalement,
Riadh.
Commenter la réponse de riadhh05
LiioR 3 Messages postés mardi 9 janvier 2007Date d'inscription 6 août 2008 Dernière intervention - 4 avril 2008 à 11:03
0
Utile
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
cs_philcam 132 Messages postés dimanche 12 août 2001Date d'inscription 17 octobre 2008 Dernière intervention - 5 août 2008 à 21:45
0
Utile
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
LiioR 3 Messages postés mardi 9 janvier 2007Date d'inscription 6 août 2008 Dernière intervention - 6 août 2008 à 18:18
0
Utile
Heu en fait je me suis trompé, les commentaires commencent pas par ";" mais par "//" :D
Commenter la réponse de LiioR
cs_philcam 132 Messages postés dimanche 12 août 2001Date d'inscription 17 octobre 2008 Dernière intervention - 7 août 2008 à 23:57
0
Utile
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
dsigmoun 134 Messages postés jeudi 31 juillet 2008Date d'inscription 15 février 2011 Dernière intervention - 13 déc. 2008 à 08:25
0
Utile
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
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 17 avril 2009 à 16:55
0
Utile
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.