Bonjour à tous.
J'utilise Inno Setup pour distribuer un programme de cartographie pour un MMO.
Grace au wizard, j'ai pu créer facilement un install qui marche bien et fait ce que je veux (install, maj, suppression de fichier obsolète).
Cependant la liste des fichiers contenant les POIs du logiciels devient longues et rajoute plus de 30000 points dans le logiciel.
Comme certains POIs ne sont pas forcement utiles pour tout le monde, je voudrais permettre lors de l'installation de choisir les différents types de POIs à installer en créant un liste à cocher.
Par exemble :
+Recoltes
+Bois
+Minerai
+Plante
+Succes
+Histoire Perso
+Saison 1
Etc....
Les fichiers sont des fichiers xml, et contenu dans le répertoire {Monprog}/POIs. De base ils sont tous installés car il y a environs 330 fichiers dans le répertoire.
Voila le code du Setup :
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 ; Script generated by the Inno Script Studio Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "TestLaurent" #define MyAppVersion "1" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "GW2TacO.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{BA4383A5-2426-42FF-B28B-A8F333856273} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} AllowNoIcons=yes OutputDir=D:\Test Setup OutputBaseFilename=Testlolo Compression=lzma SolidCompression=yes [Languages] Name: "french"; MessagesFile: "compiler:Languages\French.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 [Types] Name: "full"; Description: "Installation Complète" Name: "custom"; Description: "Installation Personnalisée"; Flags: iscustom [Components] Name: "program"; Description: " Fichiers Programme"; Types: full custom; Flags: fixed Name: "pois"; Description: "POIs"; Types: full Name: "pois\coffres"; Description: "Coffres"; Types: full Name: "pois\coffres\permanents"; Description: "Coffres permanents"; Types: full Name: "pois\coffres\permanents\hot"; Description: "Coffres permanents Heart of Thorns"; Types: full Name: "pois\coffres\permanents\s3"; Description: "Coffres permanents Saison 3"; Types: full Name: "pois\coffres\requiertcle"; Description: "Coffres à Clé"; Types: full Name: "pois\coffres\requiertcle\baiedesbraises"; Description: "Coffres à Clé - Baies des Braises"; Types: full Name: "pois\coffres\requiertcle\bassinaurique"; Description: "Coffres à Clé - Bassin Aurique"; Types: full Name: "pois\coffres\requiertcle\cimeseche"; Description: "Coffres à Clé - Cimesèche"; Types: full Name: "pois\recoltes"; Description: "Récoltes"; Types: full Name: "pois\recoltes\bois"; Description: "Bois"; Types: full Name: "pois\recoltes\minerai"; Description: "Minerai"; Types: full Name: "pois\recoltes\minerai\normal"; Description: "Normal"; Types: full Name: "pois\recoltes\minerai\riche"; Description: "Veines Riches"; Types: full Name: "pois\recoltes\plantes"; Description: "Plantes"; Types: full [Files] Source: "D:\Test Setup\File to setup\GW2TacO.exe"; DestDir: "{app}"; Components: program; Flags: ignoreversion Source: "D:\Test Setup\File to setup\*"; DestDir: "{app}"; Components: program; Flags: ignoreversion Source: "D:\Test Setup\File to setup\Img\*"; DestDir: "{app}\Img\"; Components: program; Flags: ignoreversion recursesubdirs createallsubdirs Source: "D:\Test Setup\File to setup\POIs\_NE_PAS_EFFACER.xml"; DestDir: "{app}\POIs\"; Components: program; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Coffres__Permanents__Heart_of_Thorns.xml"; DestDir: "{app}\POIs\"; Components: pois\coffres\permanents\hot; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Coffres__Permanents__Saison_3.xml"; DestDir: "{app}\POIs\"; Components: pois\coffres\permanents\s3; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Coffres__Requiert_Cle.xml"; DestDir: "{app}\POIs\"; Components: pois\coffres\requiertcle; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Coffres__Requiert_Cle__Baie_des_Braises.xml"; DestDir: "{app}\POIs\"; Components: pois\coffres\requiertcle\baiedesbraises; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Coffres__Requiert_Cle__Bassin_Aurique.xml"; DestDir: "{app}\POIs\"; Components: pois\coffres\requiertcle\bassinaurique; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Coffres__Requiert_Cle__Cimeseche.xml"; DestDir: "{app}\POIs\"; Components: pois\coffres\requiertcle\cimeseche; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Recoltes__Bois.xml"; DestDir: "{app}\POIs\"; Components: pois\recoltes\bois; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Recoltes__Minerai__Normal.xml"; DestDir: "{app}\POIs\"; Components: pois\recoltes\minerai\normal; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Recoltes__Minerai__Riche.xml"; DestDir: "{app}\POIs\"; Components: pois\recoltes\minerai\riche; Flags: ignoreversion Source: "D:\Test Setup\File to setup\POIs\Recoltes__Plante.xml"; DestDir: "{app}\POIs\"; Components: pois\recoltes\plantes; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}" Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilentCodé ainsi pas besoin de tout lister, mais pas de choix possible pour l'installation.
D'après ce que j'ai compris il faut utiliser les types ou components. J'ai regardé l'exemple fourni avec inno setup mais cela ne m'a pas beaucoup aidé:
- Je ne veux pas proposer différents types d'installation : Les fichiers du programme contenu dans la racine et les images contenu dans le sous rep /img doivent être obligatoirement installés.
- Je n'ai pas compris comment créer l'arborescence et comment faire pointer chaque choix vers un fichier ou un groupe de fichier (par exemple recolte/bois -> installe le fichier recolte_bois.xml et si récolte est coché alors on installe les fichiers bois, minerais et plantes.xml)
Pour cette partie c'est réglé. En fouinant dans l'aide et les exemples, j'ai compris comment coder mon arborescence.
J'ai bien en tête qu'il va me falloir lister un par un tous les fichiers du répertoire /POIs et vu la quantité je pleure déjà mais bon pas le choix.
Un dernier point me chagrine. Actuellement, lorsqu'un utilisateur installe un MAJ du programme, Inno Setup détecte qu'il est déjà installé et copie sans rien demander les nouveaux fichiers par dessus les autres et efface les fichiers obsolètes directement dans le répertoire de la précédente installation. En cas de MAJ avec la version améliorée de mon installateur, celui réagira-t-il de la même manière ? Il ne demandera pas le chemin d'installation de la précédente version ? Gardera-t-il en mémoire les choix faits dans la liste des fichiers à installer ? proposera-t-il cette même liste mise à jour avec les nouveaux éléments ?
La aussi, après test du setup, il conserve bien les choix faits précédemment.
Maintenant j'ai un autre problème, lorsque je relance le setup pour modifier les pois (components) selectionnés (notamment pour en enlever un), j'ai un message comme quoi malgré le fait de désélectionner le composant celui-ci ne sera pas désinstallé. Dans l'aide j'ai trouvé le flags: disablenouninstallwarning avec ce commentaire :Je n'ai cependant trouvé aucune indication pour le faire. Il suffit d'effacer un fichier si celui-ci est désélectionné dans la liste.Instructs Setup not to warn the user that this component will not be uninstalled after he/she deselected this component when it's already installed on his/her machine.
Depending on the complexity of your components, you can try to use the [InstallDelete] section and this flag to automatically 'uninstall' deselected components.
Je sais que cela fait beaucoup de questions, je m'en excuse. Mais si Inno Setup est très facile d’accès en version de base, il devient pour moi nébuleux des que je veux exploiter certaines fonctions un peu plus avancées.
Par avance, merci de votre aide.
Laurent.
Partager