IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Delphi Discussion :

[Inno Setup] Laisser le choix des fichiers à installer


Sujet :

Outils Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 14
    Points
    14
    Par défaut [Inno Setup] Laisser le choix des fichiers à installer
    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 skipifsilent
    Codé 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 :
    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 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.

    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.

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    est-ce qu'il n'est pas possible de placer chaque ensemble de fichiers dans un répertoire et d'utiliser monrep\*.*

    ensuite, pour laisser, le choix, avec les components je pense

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Les tests sur Components accepte la négation "not". La désinstallation d'un élément décoché devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [InstallDelete]
    Type: files; Name: "{app}\POIs\Coffres__Permanents__Heart_of_Thorns.xml"; Components: not pois\coffres\permanents\hot

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    est-ce qu'il n'est pas possible de placer chaque ensemble de fichiers dans un répertoire et d'utiliser monrep\*.*

    ensuite, pour laisser, le choix, avec les components je pense
    Malheureusement non. Le logiciel ne lit que les fichiers qui sont dans le repertoire POIs et ne lis pas les sous répertoires.

    Pour info je ne suis pas l'auteur du logiciel, je l'utilise juste et ai développé une énorme base de marqueurs dessus que je partage.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Les tests sur Components accepte la négation "not". La désinstallation d'un élément décoché devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [InstallDelete]
    Type: files; Name: "{app}\POIs\Coffres__Permanents__Heart_of_Thorns.xml"; Components: not pois\coffres\permanents\hot
    Donc si je comprends bien il faut que je crée une section InstallDelete avec la totalité des fichiers aussi. Et j'utilise le flags pour ne pas afficher le message concernant la desinstallation.

    Cela marche parfaitement merci. Bon ca me fait un fichier long comme le bras (plus de 1000 lignes) mais ce n'est pas grave.

    Je ne clôture pas ce sujet car je risque d'avoir d'autre question.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 14
    Points
    14
    Par défaut
    Merci pour votre aide.

    Le fichier Setup fait parfaitement ce que je veux grâce à votre aide.

    Encore merci

    Laurent.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/09/2010, 08h55
  2. Réponses: 2
    Dernier message: 19/05/2010, 22h59
  3. Réponses: 12
    Dernier message: 09/07/2009, 18h12
  4. [Inno Setup] Modif date d'un fichier à l'install
    Par ValerieDo dans le forum Outils
    Réponses: 1
    Dernier message: 19/01/2009, 13h48
  5. Choix des fichiers lors de l'installation
    Par Tibaldus dans le forum Outils
    Réponses: 2
    Dernier message: 11/02/2008, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo