Innosetup et detection version framework [Résolu]

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

16 réponses

Messages postés
3
Date d'inscription
mardi 9 janvier 2007
Statut
Membre
Dernière intervention
6 août 2008
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;
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
35
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 #
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Statut
Membre
Dernière intervention
17 octobre 2008

oui justement j'ai la version express.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
35
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 #
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Statut
Membre
Dernière intervention
17 octobre 2008

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)
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
96
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
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Statut
Membre
Dernière intervention
17 octobre 2008

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"
Messages postés
1
Date d'inscription
lundi 25 septembre 2006
Statut
Membre
Dernière intervention
26 septembre 2006

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é

++
Messages postés
5
Date d'inscription
dimanche 23 octobre 2005
Statut
Membre
Dernière intervention
30 mai 2007

Messages postés
17
Date d'inscription
jeudi 22 juin 2006
Statut
Membre
Dernière intervention
16 juin 2008

Bonjour,
il ya plus simple:

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

Amicalement,
Riadh.
Messages postés
3
Date d'inscription
mardi 9 janvier 2007
Statut
Membre
Dernière intervention
6 août 2008
1
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 ^^
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Statut
Membre
Dernière intervention
17 octobre 2008

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...
Messages postés
3
Date d'inscription
mardi 9 janvier 2007
Statut
Membre
Dernière intervention
6 août 2008
1
Heu en fait je me suis trompé, les commentaires commencent pas par ";" mais par "//" :D
Messages postés
132
Date d'inscription
dimanche 12 août 2001
Statut
Membre
Dernière intervention
17 octobre 2008

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;
Messages postés
134
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
15 février 2011
1
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,
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
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
:)