Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 27-10-2011 08:19:58

Thorben  
Membre Geek
Lieu: Luxembourg
Date d'inscription: 18-05-2010
Messages: 36
Pépites: 241
Banque: 0

Question à propos des numéros de version

Bonjour à vous,

Je voudrais savoir si vous utilisez l'objet de type 'projet' pour gérer les numéros de version des exécutables ?
Comment puis-je faire pour récupérer ces numéros de version dans l'application pour les afficher dans une 'About' box par exemple ?

Sinon, comment est-ce que vous faites pour savoir de quelle version il s'agit ?

PS : Je ne parle pas d'outil de versioning comme CVS.


Merci de votre aide.
Thorben

Hors ligne

 

#2 27-10-2011 08:27:53

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Question à propos des numéros de version

Bonjour, http://www.rgagnon.com/pbdetails/pb-0120.html

Code: pb

//To retrieve the version from an executable :

//[local external function declaration]
FUNCTION ulong GetFileVersionInfoSizeA &
   ( REF string lpFilename, REF ulong lpdwHandle ) &
   LIBRARY "version.dll"

FUNCTION integer GetFileVersionInfoA &
   ( REF string lpFilename, REF ulong lpdwHandle, ulong dwLen, &
     REF string lpData )  &
   LIBRARY "version.dll"

FUNCTION boolean VerQueryValueA &
   ( REF string lpBlock, string lpSubBlock, REF long lpBuffer, &
     REF uint puLen )  &
    LIBRARY "version.dll"

SUBROUTINE CopyMemory &
   ( REF string d, long s, long l )  &
   LIBRARY "kernel32.dll"  &
   ALIAS FOR RtlMoveMemory

//[powerscript]
ulong  dwHandle, dwLength
string ls_Buff, ls_key, ls_versioninfo
uint   lui_length
long   ll_pointer
string as_filename = "d:\dev\pb6\myapp.exe"
integer li_rc


dwLength = GetFileVersionInfoSizeA( as_filename, dwHandle )
IF dwLength <= 0 THEN
   RETURN
END IF

ls_Buff = Space( dwLength )

li_rc = GetFileVersionInfoA( as_filename, dwHandle, dwLength, ls_Buff )

IF li_rc = 0 THEN
    RETURN
END IF

// the strange numbers below represents the country and language
// of the version ressource.
ls_key = "\StringFileInfo\040904e4\FileVersion"
IF NOT VerQueryValueA( ls_buff, ls_key, ll_pointer, lui_length ) OR &
    lui_length <= 0 THEN
    ls_versioninfo = "?"
ELSE
    ls_versioninfo = Space( lui_length )
    CopyMemory( ls_versioninfo, ll_pointer, lui_length )
END IF

Messagebox("version", ls_versioninfo)

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 28-10-2011 08:42:21

Thorben  
Membre Geek
Lieu: Luxembourg
Date d'inscription: 18-05-2010
Messages: 36
Pépites: 241
Banque: 0

Re: Question à propos des numéros de version

Merci erasorz,

Je vais essayer de mettre cela en place.
Par contre, je ne suis pas certain que je puisse utiliser le petit utilitaire en plus.
Mais on verra bien.

Thorben

Hors ligne

 

#4 28-10-2011 09:15:05

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: Question à propos des numéros de version

Thorben a écrit:

Par contre, je ne suis pas certain que je puisse utiliser le petit utilitaire en plus.

Je suis allé relire le poste du Real's Howto et l'utilitaire en question n'est pas nécessaire. L'article indique

By default, an executable produced by Powerbuilder shows the Powerbuilder version number not the version of the executable itself.

En fait le n° de version de PB est indiqué dans le champ InternalName. Mais les différents champs de l'onglet Version dans un projet de déploiement permettent de remplir toutes les infos voulues pour gérer les n°s de version de l'exécutable :
- FileVersion et ProductVersion comme champs textes libres
- FileVersion et ProductVersion comme série de 4 shorts x.y.z.t

Exemple sur un projet d'ici :

File Version Information :
      CompanyName    : Conceptware
      FileDescription    : Plexus - Bank regulatory reporting
      FileVersion    : 9040600
      InternalName    : PB 11.5.1
      LegalCopyright    : Copyright 1994-2011 Conceptware
      ProductName    : Plexus
      ProductVersion    : 9.4.6 interne 6
      File/Product version    : 9.4.6.0 / 9.4.6.0

Ici
- on se sert de FileVersion texte pour afficher dynamiquement le n° de version à l'utilisateur dans la barre de titre, la fenêtre "à propos de..."
- le champ FileVersion texte nous sert à spécifier quelle version mini de la base de donnée requise pour cette version de l'application
- et les champs versions numériques sont testés par notre setup pour déterminer le comportement attendu lors de l'installation (nouvelle install, mise à jour, downgrade...)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#5 05-02-2015 13:03:30

John77  
Membre Geek
Lieu: Chambéry
Date d'inscription: 26-10-2012
Messages: 51
Pépites: 227
Banque: 0

Re: Question à propos des numéros de version

Bonjour

Je n'ai pas réussi à faire fonctionner le code ci-dessus.

Par contre, dans la section Migration, Pic en avait proposer un autre en réponse à une question qui m'a bien aidé comme base de départ donc je mets le lien ici:
Migration de la version 8.0 à 11.0 : fonction Ansi/Unicode

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22