cs_philcam
Messages postés132Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention17 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
LiioR
Messages postés3Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention 6 août 20081 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;
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 #
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 #
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_philcam
Messages postés132Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention17 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)
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
cs_philcam
Messages postés132Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention17 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"
LiioR
Messages postés3Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention 6 août 20081 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...
cs_philcam
Messages postés132Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention17 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...
cs_philcam
Messages postés132Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention17 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;
dsigmoun
Messages postés135Date d'inscriptionjeudi 31 juillet 2008StatutMembreDernière intervention25 février 20232 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 ?
gillardg
Messages postés3275Date d'inscriptionjeudi 3 avril 2008StatutMembreDernière intervention14 septembre 20142 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
:)
Modifié par Liior le 15/07/2015 à 16:09