begin process at 2010 02 10 10:28:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GESTION DES VERSIONS D'UNE APPLICATION

GESTION DES VERSIONS D'UNE APPLICATION


 Information sur la source

Note :
Aucune note
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é :6 916 / 229

Auteur : esu

Ecrire un message privé
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-APPLICATIO N_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

Les Membres Club peuvent 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

 Sources de la même categorie

Source avec Zip Source avec une capture LOGICIEL DE DIAGNOSTIC AUTOMOBILE KWP2000 par Oniria
Source avec Zip Source avec une capture RÉGLE TRANSPARENTE POUR MESURER UN OBJET ECRAN par dubois77
Source avec Zip Source avec une capture LE BOOK DU PAUVRE par dubois77
Source avec Zip Source avec une capture CAHIER 90 PAGES par dubois77
Source avec Zip Source avec une capture TABLEAU DE BOUTONS DYNAMIQUES (AGENDA) par dubois77

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture DECOMPTEUR AVEC ENREGISTREMENT DES OPTIONS par michaelminelli1
Source avec Zip Source avec une capture JEU DU SOLITAIRE AVEC LES PIONS par Bacterius
Source avec Zip Source avec une capture BARRE UTILITAIRE par ced55957
Source avec Zip Source avec une capture EXÉCUTER TOUTES LES COMMANDES DOS ET AUTRES FACILEMENT ET SA... par cirec
Source avec Zip EXÉCUTER UNE COMMANDE DOS SANS QUITTER SON APPLICATION SOUS ... par japee

Commentaires et avis

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 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 en peut jointer une commande fichier ms-dos avec une photo jpg?? [ par loupy50 ] salut lé ami j'ai une question en peut jointer une commande fichier ms-dos avec une photo jpg??enfin si c'est possible merci d'avence 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


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales