bonjour,
dans la section code, j'aimerai proposer une fenêtre permettant à l'utilisateur d'aller chercher un fichier pour le recopier dans un autre dossier.
bonjour,
dans la section code, j'aimerai proposer une fenêtre permettant à l'utilisateur d'aller chercher un fichier pour le recopier dans un autre dossier.
et tu bloque à quel endroit? Montre ton code
Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.
Envoyé par ouiouioui
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 Procedure test; var ResultCode: Integer; DossierPf : string; // contient le chemin du dossier d'installation des programmes DossierInstall: string; // chemin où sont stockés les fichiers d'installation BEGIN if IsWin64 then // test si 64 bits; initialisation des variables begin DossierPf := 'C:\Program Files (x86)\'; DossierInstall := 'c:\test\64\'; MsgBox ('La machine fonctionne en 64 bits', mbInformation, MB_OK); end else begin DossierPf := 'C:\Program Files\'; DossierInstall := 'c:\test\32\'; MsgBox ('La machine fonctionne en 32 bits', mbInformation, MB_OK); end //ici, désinstallation des anciennes versions de java, postgres... // ici désinstallation des anciennes versions de postgis et postgres if MsgBox ('Voulez-vous poursuivre l''installation (java, postgres',mbInformation, mb_YESNO)=idYES then begin // installation de JAVA 6 update 18 Lg_param:= 'c:\test\jre-6u18-windows-i586-s.exe'; MsgBox ('Installation de java 6 update 18',mbInformation, mb_Ok); Exec (Lg_Param,'', '', SW_SHOW,ewWaitUntilTerminated, ResultCode); // installation de postgres 8.4 Lg_param:= DossierInstall + '\inst_postgres.bat'; MsgBox ('Installation de Postgres 8.4 mode silencieux',mbInformation, mb_Ok); Exec (Lg_Param,'', '', SW_HIDE,ewWaitUntilTerminated, ResultCode); // installation de postgis 1.5.0 Lg_param:= 'C:\test\postgis-pg84-setup-1.5.0-1.exe'; MsgBox ('Installation de Postgis 1.5.0',mbInformation, mb_Ok); Exec (Lg_Param,'', '', SW_SHOW,ewWaitUntilTerminated, ResultCode); // ajout d'un script sql supplémentaire MsgBox ('si vous avez un fichier .bat supplémentaire à exécuter,' #13#13 'veuillez le recopier dans c:\test avant de cliquer sur ok',mbInformation, mb_Ok); { Précision, je ne sais pas par avance le nom du fichier de l'utilisateur ici, plutôt que de faire afficher une boîte, je pensais permettre à l'utilisateur d'aller chercher son fichier, de récupérer le chemin et le nom du fichier de le recopier dans le dossier d'installation puis de l'executer mais je ne trouve pas d'exemple de la fonction CreateInputFilePage si c'est la bonne solution ? } Lg_param:= 'c:\test\scriptDep.bat'; if FileExists(Lg_Param)= true then begin MsgBox ('Exécution du fichier'#13#13 + Lg_param,mbInformation, mb_Ok); Exec (Lg_Param,'', '', SW_SHOW,ewWaitUntilTerminated, ResultCode); end end END; Procedure CurStepChanged (CurStep: TsetupStep); var W_Curstep: Variant; Begin w_Curstep:=Curstep; if W_Curstep = 2 then Begin Test; end End;
voila un exemple simple, les fichiers sont inclus et extrait, une simple page pour proposer a l'user d'executer un bat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122 ; -- CodePrepareToInstall.iss -- ; ; This script shows how the PrepareToInstall event function can be used to ; install prerequisites and handle any reboots in between, while remembering ; user selections across reboots. [Setup] AppName=My Program AppVerName=My Program version 1.5 DefaultDirName={pf}\My Program DefaultGroupName=My Program UninstallDisplayIcon={app}\MyProg.exe OutputDir=userdocs:Inno Setup Examples Output [Files] Source: "MyProg.exe"; DestDir: "{app}"; Source: "MyProg.chm"; DestDir: "{app}"; Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme; Source: "jre-6u18-windows-i586-s.exe"; Flags: dontcopy Source: "inst_postgres.bat"; Flags: dontcopy Source: "postgis-pg84-setup-1.5.0-1.exe"; Flags: dontcopy [Icons] Name: "{group}\My Program"; Filename: "{app}\MyProg.exe" [Code] const QuitMessageError = 'Error. Cannot continue.'#13#13'A dependencies required have not correctly installed'; var RestartNeeded: Boolean; ISPageSelectFile: TInputFileWizardPage; function DetectAndInstallPrerequisites: Boolean; var ResultCode: Integer; DossierPf, DossierInstall, FileName: String; begin (*** Return False if missing prerequisites were detected but their installation failed, else returnTrue. ***) Result := True; {*** Set RestartNeeded to True if restart is needed by dependencies install before use it} // RestartNeeded := True; if IsWin64 then // test si 64 bits; initialisation des variables begin DossierPf := ExpandConstant('{pf64}'); DossierInstall := 'c:\test\64\'; MsgBox ('La machine fonctionne en 64 bits', mbInformation, MB_OK); end else begin DossierPf := ExpandConstant('{pf32}'); DossierInstall := 'c:\test\32\'; MsgBox ('La machine fonctionne en 32 bits', mbInformation, MB_OK); end //ici on detecte version java, postgres, postgis et si besoin de l'installer ou pas //ici, désinstallation des anciennes versions de java, postgres... //ici désinstallation des anciennes versions de postgis et postgres if MsgBox('Voulez-vous poursuivre l''installation (java, postgres', mbInformation, MB_YESNO) = idYES then begin // installation de JAVA 6 update 18 MsgBox ('Installation de java 6 update 18',mbInformation, mb_Ok); FileName := ExpandConstant('{tmp}\jre-6u18-windows-i586-s.exe'); if not FileExists(FileName) then ExtractTemporaryFile(ExtractFileName(FileName)); Exec(FileName, '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); // installation de postgres 8.4 MsgBox ('Installation de Postgres 8.4 mode silencieux',mbInformation, mb_Ok); FileName := DossierInstall + '\inst_postgres.bat'; if not FileExists(FileName) then begin if not FileExists(ExpandConstant('{tmp}\') + ExtractFileName(FileName)) then ExtractTemporaryFile(ExpandConstant('{tmp}\') + ExtractFileName(FileName)); FileCopy(ExpandConstant('{tmp}\') + ExtractFileName(FileName), FileName, False); end; Exec(FileName, '', '', SW_HIDE, ewWaitUntilTerminated, ResultCode); DeleteFile(FileName); // installation de postgis 1.5.0 MsgBox ('Installation de Postgis 1.5.0',mbInformation, mb_Ok); FileName := ExpandConstant('{tmp}\postgis-pg84-setup-1.5.0-1.exe'); if not FileExists(FileName) then ExtractTemporaryFile(ExtractFileName(FileName)); Exec(FileName, '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); { Précision, je ne sais pas par avance le nom du fichier de l'utilisateur ici, plutôt que de faire afficher une boîte, je pensais permettre à l'utilisateur d'aller chercher son fichier, de récupérer le chemin et le nom du fichier de le recopier dans le dossier d'installation puis de l'executer mais je ne trouve pas d'exemple de la fonction CreateInputFilePage si c'est la bonne solution ? } if FileExists(ISPageSelectFile.Values[0]) then begin MsgBox ('Exécution du fichier'#13#13 + ISPageSelectFile.Values[0], mbInformation, mb_Ok); Exec(ISPageSelectFile.Values[0], '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); end; end; end; function PrepareToInstall(var NeedsRestart: Boolean): String; begin RestartNeeded := False; if not DetectAndInstallPrerequisites then Result := QuitMessageError; end; function NeedRestart(): Boolean; begin Result := RestartNeeded; end; procedure InitializeWizard; begin ISPageSelectFile := CreateInputFilePage(wpReady, 'bat supplémentaire', 'indiquer le chemin d''un bat supplémentaire à executer', 'lorque vous cliquerez suivant java sera installé'); ISPageSelectFile.Add('Indiquer ici si vous avez un bat supplémentaire à executer après l''installation de java', 'Fichier bat|*.bat', '.bat'); end;
Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.
Merci beaucoup pour cet exemple très précis qui m'a permis la résolution de mon problème.
Une interrogation, si j'ai 2 fichiers à récupérer (?), lorsque je duplique les 2 lignes contenues dans la procédure InitializeWizard, j'ai bien mes 2 fenêtres de sélection, mais comment je retrouve les variables contenant le nom (+ chemin) pour les 2 fichiers.
tu peux mettre deux champs sur la même page et même plus
ISPageSelectFile.Values[0] //file 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure InitializeWizard; begin ISPageSelectFile := CreateInputFilePage(wpReady, 'bat supplémentaire', 'indiquer le chemin d''un bat supplémentaire à executer', 'lorque vous cliquerez suivant java sera installé'); ISPageSelectFile.Add('file 1', 'Fichier bat|*.bat', '.bat'); ISPageSelectFile.Add('file 2', 'Fichier bat|*.bat', '.bat'); end;
ISPageSelectFile.Values[1] //file 2
sinon 2 pages:
page1.Values[0] //file 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var page1, page2: TInputFileWizardPage; procedure InitializeWizard; begin page1 := CreateInputFilePage(wpReady, 'bat supplémentaire', 'indiquer le chemin d''un bat supplémentaire à executer', 'lorque vous cliquerez suivant java sera installé'); page1.Add('file 1', 'Fichier bat|*.bat', '.bat'); page2 := CreateInputFilePage(page1.id, 'bat supplémentaire', 'indiquer le chemin d''un bat supplémentaire à executer', 'lorque vous cliquerez suivant java sera installé'); page2.Add('file 2', 'Fichier bat|*.bat', '.bat'); end;
page2.Values[0] //file 2
Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.
Super !!! je m'empresse de tester.
et félicitations pour ta rapidité et tes compétences.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager