Innosetup et detection version framework

Résolu
cs_philcam Messages postés 132 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 17 octobre 2008 - 26 août 2006 à 13:31
 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

16 réponses

LiioR Messages postés 3 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 6 août 2008 1
6 août 2008 à 18:17
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;
1
Merci infiniment
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 août 2006 à 13:38
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 #
0
cs_philcam Messages postés 132 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 17 octobre 2008
26 août 2006 à 13:49
oui justement j'ai la version express.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 août 2006 à 14:01
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 #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_philcam Messages postés 132 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 17 octobre 2008
26 août 2006 à 14:27
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)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 août 2006 à 15:57
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
0
cs_philcam Messages postés 132 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 17 octobre 2008
26 août 2006 à 16:35
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"
0
olaer Messages postés 1 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 26 septembre 2006
26 sept. 2006 à 10:59
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é

++
0
sampp Messages postés 5 Date d'inscription dimanche 23 octobre 2005 Statut Membre Dernière intervention 30 mai 2007
30 mai 2007 à 18:10
0
riadhh05 Messages postés 17 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 16 juin 2008
17 juil. 2007 à 16:56
Bonjour,
il ya plus simple:

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

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