Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GESTION DES VERSIONS D'UNE APPLICATION


Information sur la source

Catégorie :Divers Classé sous : ini, version, dos, batch, commande Niveau : Débutant Date de création : 21/07/2007 Date de mise à jour : 21/07/2007 12:34:49 Vu / téléchargé: 5 511 / 197

Note :
Aucune note

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

J'en avais marre de gérer à la main les numéros de version de mes programmes. Il y a de nombreuses discussions sur les versions des programmes (cf http://www.delphifr.com/infomsg_VERSION-APPLICATION_113551.aspx par exemple), par contre :
- il y a bien une fonction pour lire la version du pgm mais impossible de savoir comment l'écrire lors d'une compilation (ou après)
- la fonction de lecture n'est de toute façon pas universelle (pour les personnes qui passent sous Lazarus, MacOsX, Linux, ...)

Du coup, j'ai fait un petit programme qui se lance en ligne de commande qui permet de lire ou écrire dans un fichier INI. Là je vois les neurones de certains lecteurs de cet article qui s'agitent : mais qu'est-ce qu'il dit? quel est le rapport? ...

Cela permet de:
- gérer le numéro de version dans un fichier Ini et de renommer le programme avec son numéro de version
- d'utiliser le numéro de version par le programme (s'il a besoin de connaître sa version, il lit dans le fichier).

Exemples :
- VarIni c:\toto.ini -gNumVersion (cela permet de récupérer le numéro de version et l'afficher)
- VarIni toto.ini -sNumVersion=0.0.1.4 (permet de dire que le numéro de version est 0.0.1.4)

Comme vous l'avez compris : -g veut dire "get", -s veut dire "set" et NumVersion est le nom de la variable utilisée dans le fichier INI...

Attention, je ré-insiste : le programme est sans prétention (la lecture/écrite dans un fichier INI a déjà été vu de nombreuses fois sur http://www.delphifr.com), mais il peut servir à la communauté (en tout cas il me sert :))
 

Source

  • program VarIni;{$APPTYPE CONSOLE}
  • {______________________________________________________________________________
  • Programme sans prétention pour gérer les numéros de version
  • Auteur = Eric SALLOU
  • ______________________________________________________________________________
  • }
  • uses
  • SysUtils,
  • IniFiles;
  • const
  • kSection = 'Application';
  • var
  • Ini: TIniFile;
  • NomFichier, Ligne: string;
  • {______________________________________________________________________________
  • Help générique
  • ______________________________________________________________________________
  • }
  • procedure Erreur;
  • begin
  • writeln('Ligne de commande:');
  • writeln(' VarIni <NomFichierIni> [-g<VariabledansApplication>} | [-s<VariabledansApplication>=<valeur>]');
  • writeln('-g : get, -s : set');
  • writeln('Exemples:');
  • writeln(' VarIni c:\toto.ini -gNumVersion');
  • writeln(' VarIni toto.ini -sNumVersion=1.2.3');
  • end;
  • {______________________________________________________________________________
  • Programme principal
  • ______________________________________________________________________________
  • }
  • begin
  • if Paramcount <> 2
  • then Erreur
  • else
  • begin
  • NomFichier := ParamStr(1);
  • // S'il n'y a pas de chemin on met celui du pgm
  • if Pos('\', NomFichier) = 0 then
  • NomFichier := ExtractFilePath(ParamStr(0)) + NomFichier;
  • // On vérifie que le fichier existe
  • if FileExists(NomFichier) then
  • begin
  • Ini := TIniFile.Create(NomFichier);
  • try
  • // Vérification qu'il y a au moins 2 paramètres
  • if length(ParamStr(2)) > 2 then
  • begin
  • // regarde si c'est un get ou un set
  • if copy(ParamStr(2), 1, 2) = '-g' then
  • writeln(Ini.ReadString(kSection, copy(ParamStr(2), 3,
  • length(ParamStr(2)) - 2), '???'))
  • else if copy(ParamStr(2), 1, 2) = '-s' then
  • begin
  • // gestion du get
  • Ligne := copy(ParamStr(2), 3, length(ParamStr(2)) - 2);
  • if Pos('=', Ligne) = 0 then
  • begin
  • writeln('Pb avec 2ème paramètre (manque "="): ' + ParamStr(2));
  • writeln;
  • Erreur;
  • end
  • else
  • begin
  • // gestion du set
  • Ini.WriteString(kSection, copy(Ligne, 1, pos('=', Ligne) - 1),
  • copy(Ligne, pos('=', Ligne) + 1, length(Ligne) - pos('=', Ligne)));
  • writeln('Mise a jour de la variable OK');
  • end;
  • end
  • else
  • begin
  • writeln('2ème paramètre inconnu: ' + ParamStr(2));
  • writeln;
  • Erreur;
  • end;
  • end
  • else
  • begin
  • writeln('2ème paramètre inconnu: ' + ParamStr(2));
  • writeln;
  • Erreur;
  • end;
  • finally
  • Ini.Free;
  • end;
  • end
  • else
  • begin
  • writeln('Fichier ' + NomFichier + ' non trouvé');
  • writeln;
  • Erreur;
  • end;
  • end;
  • end.
program VarIni;{$APPTYPE CONSOLE}
{______________________________________________________________________________

         Programme sans prétention pour gérer les numéros de version
         Auteur = Eric SALLOU
 ______________________________________________________________________________
}
uses
  SysUtils,
  IniFiles;

const
  kSection = 'Application';

var
  Ini: TIniFile;
  NomFichier, Ligne: string;

{______________________________________________________________________________

                               Help générique
 ______________________________________________________________________________
}
  procedure Erreur;
  begin
    writeln('Ligne de commande:');
    writeln('  VarIni <NomFichierIni> [-g<VariabledansApplication>} | [-s<VariabledansApplication>=<valeur>]');
    writeln('-g : get, -s : set');
    writeln('Exemples:');
    writeln('  VarIni c:\toto.ini -gNumVersion');
    writeln('  VarIni toto.ini -sNumVersion=1.2.3');
  end;

{______________________________________________________________________________

                             Programme principal
 ______________________________________________________________________________
}
begin
  if Paramcount <> 2
  then Erreur
  else
  begin
    NomFichier := ParamStr(1);
    // S'il n'y a pas de chemin on met celui du pgm
    if Pos('\', NomFichier) = 0 then
      NomFichier := ExtractFilePath(ParamStr(0)) + NomFichier;
    // On vérifie que le fichier existe
    if FileExists(NomFichier) then
    begin
      Ini := TIniFile.Create(NomFichier);
      try
        // Vérification qu'il y a au moins 2 paramètres
        if length(ParamStr(2)) > 2 then
        begin
          // regarde si c'est un get ou un set
          if copy(ParamStr(2), 1, 2) = '-g' then
            writeln(Ini.ReadString(kSection, copy(ParamStr(2), 3,
              length(ParamStr(2)) - 2), '???'))
          else if copy(ParamStr(2), 1, 2) = '-s' then
          begin
            // gestion du get
            Ligne := copy(ParamStr(2), 3, length(ParamStr(2)) - 2);
            if Pos('=', Ligne) = 0 then
            begin
              writeln('Pb avec 2ème paramètre (manque "="): ' + ParamStr(2));
              writeln;
              Erreur;
            end
            else
            begin
              // gestion du set
              Ini.WriteString(kSection, copy(Ligne, 1, pos('=', Ligne) - 1),
                copy(Ligne, pos('=', Ligne) + 1, length(Ligne) - pos('=', Ligne)));
              writeln('Mise a jour de la variable OK');
            end;
          end
          else
          begin
            writeln('2ème paramètre inconnu: ' + ParamStr(2));
            writeln;
            Erreur;
          end;
        end
        else
        begin
          writeln('2ème paramètre inconnu: ' + ParamStr(2));
          writeln;
          Erreur;
        end;
      finally
        Ini.Free;
      end;
    end
    else
    begin
      writeln('Fichier ' + NomFichier + ' non trouvé');
      writeln;
      Erreur;
    end;
  end;
end.

Conclusion

Exemple d'un fichier INI :
[Application]
NumVersion=0.0.0.1

Exemple d'un fichier batch à lancer après la compilation et avant diffusion:
REM GESTION DU NUMERO DE VERSION
@echo Ancien numero de version:
@Varini\VarIni Info.ini -gNumVersion
@set /p NumVer=Numero de version?:
Varini\VarIni Info.ini -sNumVersion=%NumVer%
REM ON FAIT DU MENAGE POUR DELPHI
del VarIni\src\*.~dpr
del VarIni\src\*.~dfm
del VarIni\src\*.~pas
del VarIni\src\*.dcu
del VarIni\src\*.exe
del VarIni\src\*.~ddp
del VarIni\src\*.~dsk
del VarIni\src\*.~dsk
del VarIni\src\*.~txt
del VarIni\src\*.~pa
del VarIni\src\*.~dp
del VarIni\src\*.~ds
REM ON FAIT DU MENAGE POUR LAZARUS
del VarIni\src\*.o
del VarIni\src\*.or
del VarIni\src\*.ppu
del VarIni\src\*.bk1
del VarIni\src\*.bk2
REM ON COMPRESSE LE PGM AVEC UPX
..\..\Outils\upx\upx --force --ultra-brute VarIni\VarIni.exe
REM ON FAIT UNE VERSION ZIP AVEC TZIP
del w32portable\Outil.zip
..\..\Outils\7z\7za a -tzip w32portable\Outil.zip VarIni -mx9
REM ON FAIT UNE VERSION INSTALLABLE (création de w32light\setup.exe)
"\Inno Setup 5\iscc" w32light.iss
REM .... ET LA ON GERE LA VERSION !!!!!!!!!!!!!!!!!
ren w32portable\Outil.zip Outil%NumVer%.zip
ren w32light\setup.exe Outil%NumVer%.exe
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

21 juillet 2007 12:30:45 :
J'avais oublié de vous donner des exemples d'utilisation: - VarIni c:\toto.ini -gNumVersion (cela permet de récupérer le numéro de version et l'afficher) - VarIni toto.ini -sNumVersion=0.0.1.4 (permet de dire que le numéro de version est 0.0.1.4) Comme vous l'avez compris : -g veut dire "get", -s veut dire "set" et NumVersion est le nom de la variable utilisée dans le fichier INI...
21 juillet 2007 12:34:49 :
J'ai mis le source à télécharger

Commentaires et avis

signaler à un administrateur
Commentaire de cantador le 04/09/2007 12:04:40

Mieux encore est d'utiliser un tout petit composant free que j'ai
publié et qui le fait très bien..
@+

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

shellexecute et commande print sous DOS [ par fredy24 ] je cherche comment ex&#233;cuter la commande PRINT sous DOS en passant par un shellexecute.Merci d'avance pour les r&#233;ponses. Commande DOS dans une page web [ par jeremymolla1 ] Bonjour, J'aimerais savoir s'il &#233;tait possible de cr&#233;er un code qui enclancherait une commande DOS sur l'ordinateur du visiteur. Par exemple Commande DOS dans une page web [ par jeremymolla1 ] Bonjour, je voudrais savoir s'il &#233;tait possible de mettre une commande DOS dans une page web et si oui comment ????? Net use [ par jmp77 ] Hello, Est ce que quelqu'un saurait comment faire la meme chose que cette commande dos : net use LPT1 \\Serveur1\Printer12 /persistent:yes Cette com détourner entree et sortie standart du dos [ par dk2089 ] j'aimerais ecrire un programme qui ferait office d'un espece de shell a la place du tradutionnel cmd.exe, et que je pourrais integrer dans mon applica exectution commande C sour Dos [ par DDHL ] bonjour,je dois réaliser un batch pour lancer le logiciel winaudit et surtout lancer la commande audit et a la fin de celui ci enregistrer un log ds u commande DOS "universelle" (98, XP, Vista) [ par JackNUMBER ] bonjour !j'aimerai savoir si il y a une possibilité d'éxécuter une commande DOS qui marche sur tous les Windows (98, XP, Vista) car mon problème est q recuperer la sortie d'une commande dos. [ par Oamiotte ] bonjourj'ai fait un applicatif pour lister les connexions terminal server ouvertes et les fermer toutes. pour obtenir la liste j'utilise la commande c Executer une commande dos + script [ par emirej ] Voila enfaite j'aimerais savoir comment avec Delphi 7 je peux ouvrir dos et faire cette commande :ipconfig /flushdnsipconfig /releaseipconfig /renewEf deconnection d'un lecteur réseau [ par yvessimon ] Bonjour,Avec une commande DOS je me connecte sur un ordinateur lui même sur le réseau : ouverture de la liaison.Ce qui me permet de faire des transfer


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.