Cool comme astuce.
Avec tous ces conseils, j'ai opté pour une solution un peu plus simple (pour
le moment, je n'ai pas besoin des version.major, minor, ...) :

Mon fichier build.xml, que je lance en tant que tâche ant pendant la
compilation :

<project name="project" default="default">
    <target name="default">
        <propertyfile file="version.properties">
            <entry key="version.version" type="int" value="1"/>
        </propertyfile>
        <propertyfile file="version.properties">
            <entry key="version.build" type="int" operation="+"
default="0"/>
        </propertyfile>
        <replaceregexp
            file="version.properties"
            match="#.*"
            replace=""
        />
    </target>
</project>

Il crée et écrit dans un fichier 'version.properties' :
version.build=2
version.version=1

il supprime aussi le commentaire généré par ant (la date en l'occurence) que
flash n'arrive pas à lire.

Puis dans Main.as

public static var version:Object = {};
include "../../version.properties" // ma classe se trouve dans src/classes

public function Main()
{
    var menu:ContextMenu = new ContextMenu();
    menu.hideBuiltInItems();
    var item:ContextMenuItem = new ContextMenuItem("Version " +
version.version + "." + version.build);
    menu.customItems = [item];
    contextMenu = menu;
}

Cette solution me convient parfaitement.
Merci en tout cas, nikel !!


Le 19 janvier 2010 21:26, zwetan <[email protected]> a écrit :

> Salut,
>
> [...]
> >
> > J'ai regardé un peu du côté des tâches ANT, qui je pense pourraient
> > répondre à mon besoin, mais ne voit pas comment m'y prendre
> >
> > créer un fichier par ANT nommé version.txt par exemple avec à
> > l'intérieur la date et heure de compilation ?
> >
>
> idealement il vaut mieux embeddé ton numero de version dans le SWF
> plutot que de dependre d'un fichier externe
>
> > Est-ce que vous indiquez dans vos application le numéro de version de
> > manière automatique ?
> >
>
> oui en gros la recette que j'utilise un peu partout
> est d'utiliser ant + les includes en AS3 + svn
>
> version.properties
> ----
> version.major = 1
> version.minor = 2
> version.build = 3
> ----
>
> note: ne pas mettre de ";" a la fin des lignes
>
>
> Main.as
> ----
> package
> {
>
>   public static var version:Object = {};
>   include "version.properties"
>   version.revision = Number( "$Rev: 123 $ ".split( " " )[1] );
>
>   public class Main extends Sprite
>   {
>
>      public function Main()
>      {
>             trace
> ( [version.major,version.minor,version.build,version.revision].joint
> (".") );
>      }
>
>   }
>
> }
> ----
>
> note:
> tu dois ajouter un svn:keyword "Rev" depuis subversion
> et a chaque fois que ce fichier en particulier est updaté le numero de
> rev changera
>
>
> dans maashaack la class core.version ou system.Version permet de gerer
> ca un peu mieux
> qu'un simple object Object
>
>
> ensuite dans Ant tu peux juste faire
>
> <property file="src/version.properties"/>
>
> pour le reutiliser pour creer un zip ou autre
>
> en option tu peux utiliser
>
> http://ant.apache.org/manual/CoreTasks/buildnumber.html
>
> si tu veux par ex updater version.build a chaque fois que ant est
> lancé
>
> ou tu peux utiliser svnant
>
>        <taskdef resource="org/tigris/subversion/svnant/
> svnantlib.xml">
>            <classpath >
>                <fileset dir="build/ant/" includes="*.jar"/>
>            </classpath>
>        </taskdef>
>
>
> http://subclipse.tigris.org/svnant.html
> http://subclipse.tigris.org/svnant/svn.html
>
> et faire un update du version.revision dans Ant
>
>        <svn username="${credentials.svn.username}" password="$
> {credentials.svn.password}" javahl="false" svnkit="false">
>            <info target="."/>
>        </svn>
>
>        <property name="version.revision" value="${svn.info.rev}"/>
>
>
>
> apres chacun y va un peu a sa sauce en fonction des besoins
>
> perso où je bosse je minimise l'update du version.major
> donc j'ecris a la main version.minor et version.build
>
> car souvent je compile une 100aine de fois pour obtenir la build
> stable que je veux
>
> et donc je me base sur le version.revision comme identifiant unique
>
> mais je fais 2 différences:
> - le version revision de la build, celui la je le veux automatique
> avec Ant
> - le version.revision de l'API, celui la je le veux updatable par mes
> soins
>
> mais c'est pour mes besoin vu que une ant build construit 20+ projets
> je veux juste qu'ils aient le meme numero de revision et des
> major.minor.build different
>
> genre je peux avoir
> avatar-1.1.0.1234.zip manager-3.5.2.1234.zip lobby-1.2.1.1234.zip
>
> ici le numero de rev est en fait l'etat du svn au moment de la build
> de tous les projets
> qui permet de s'assurer que tout est en sync sur le meme numero de rev
> parce que tout est sous le meme repo
>
> plus tard on va bouger sur tu multi repository et là je vais devoir
> changer la logique
> car le numero de rev ne sera plus commun.
>
>
> mais sinon le plus simple possible a faire c'est juste utiliser un
> fichier text externe
> que tu utilises en include
>
>
> version.txt
> ----
> version.major = 1
> version.minor = 2
> version.build = 3
> version.revision = 4
> ----
>
> Main.as
> ----
> package
> {
>
>   public static var version:Object = {};
>   include "version.txt"
>
>   public class Main extends Sprite
>   {
>
>      public function Main()
>      {
>             trace
> ( [version.major,version.minor,version.build,version.revision].joint
> (".") );
>      }
>
>   }
>
> }
> ----
>
>
> perso j'utiliserais ca pour un simple unique projet
>
> l'utilisation de ant, ou de svn:keyword et autres
>
> c'est vraiment quand on veut automatiser et/ou sync'er plusieurs
> projets
>
> zwetan
>
>
>
>
>
>
>
>
>
>
>
>
> --
> Vous recevez ce message, car vous êtes abonné au groupe Google
> Groupes FCNG.
> Pour envoyer un message à ce groupe, adressez un e-mail à
> [email protected].
> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
> [email protected] <fcng%[email protected]>.
> Pour plus d'options, consultez la page de ce groupe :
> http://groups.google.com/group/fcng?hl=fr
>
>
>
>
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes FCNG.
Pour envoyer un message à ce groupe, adressez un e-mail à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected].
Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/fcng?hl=fr

Répondre à