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

Retourner le numéro de build de la version courante de 4D v11 SQL

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Produit : 4D v11 SQL v11.x  ·  Plateforme : Windows & Mac OS X

Voici un exemple de code 4D qui retourne le numéro de build de la version 4D v11 SQL utilisée pour votre application.

Le code fonctionne aussi bien sur Mac OS X que sur Windows.

Le numéro de build

Le numéro de build est le dernier numéro contenu dans le numéro complet de la version 4D.
Par exemple, le numéro de version complet de la version 4D v11.4 est 11.4.0.60146. Le numéro de build est alors 60146.

Vous pouvez trouver ce numéro complet de version en faisant un clic droit sur l'icône de l'application 4D et en sélectionnant "Propriétés", si vous êtes sous Windows.

Image non disponible

Sous Mac OS X, dans le finder, en mode colonne, la preview de l'application 4D sélectionnée affichera la version et le numéro de build.

Image non disponible

Retourner le numéro de build par programmation

Image non disponibleSur Mac, c'est le fichier info.plist qui est analysé. C'est un fichier XML qui contient des informations sur l'application.
Le fichier est transformé avec XSLT. La commande Trouver regex est utilisée pour analyser le contenu et trouver une chaîne correspondant au Regex.
Si la chaîne est trouvée, elle est extraite pour retourner le numéro de build de 4D.

Image non disponibleSur Windows, nous utilisons LANCER PROCESS EXTERNE pour exécuter un script VB. Le script VB, créé par programmation, récupérer la version de l'application 4D.
La chaîne retournée est alors testée avec la commande Trouver regex pour être sure que le numéro de build y est inclus et l'en extraire.

code 4D
Sélectionnez
C_TEXTE($0)

C_ENTIER LONG($platform_l)
PROPRIETES PLATE FORME($platform_l)

Si ($platform_l=Mac OS )
	$xsl_source_t:=""
	$xsl_source_t:=$xsl_source_t+"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
	$xsl_source_t:=$xsl_source_t+"<xsl:stylesheet version=\"1.0\" xmlns:xsl="
	$xsl_source_t:=$xsl_source_t+"\"http://www.w3.org/1999/XSL/Transform\">\n"
	$xsl_source_t:=$xsl_source_t+"<xsl:output method=\"text\" />\n"
	$xsl_source_t:=$xsl_source_t+"<xsl:template match=\"/\">\n"
	$xsl_source_t:=$xsl_source_t+"<xsl:for-each select=\"/plist/dict/key[ string() = "
	$xsl_source_t:=$xsl_source_t+"'CFBundleShortVersionString' ]\">\n"
	$xsl_source_t:=$xsl_source_t+"<xsl:value-of select=\"./following-sibling::*\" />\n"
	$xsl_source_t:=$xsl_source_t+"</xsl:for-each>\n"
	$xsl_source_t:=$xsl_source_t+"</xsl:template>\n"
	$xsl_source_t:=$xsl_source_t+"</xsl:stylesheet>\n"
	
	C_BLOB($xml_result_x;$xsl_source_x)
	CONVERTIR DEPUIS TEXTE($xsl_source_t;"utf-8";$xsl_source_x)
	DOCUMENT VERS BLOB(Fichier application+":Contents:Info.plist";$xml_source_x)
	APPLIQUER TRANSFORMATION XSLT($xml_source_x;$xsl_source_x;$xml_result_x)
	$xml_result_t:=Convertir vers texte($xml_result_x;"utf-8")
	
	TABLEAU ENTIER LONG($match_pos_al;0)
	TABLEAU ENTIER LONG($match_length_al;0)
	
	Si (Trouver regex("(.*)\\((.*)\\)";$xml_result_t;1;$match_pos_al;$match_length_al))
		$0:=Sous chaine($xml_result_t;$match_pos_al{2};$match_length_al{2})
	Fin de si 
	
Sinon 
	$vbs_in_t:=""
	
	$vbs_in_t:=$vbs_in_t+"Set fso = CreateObject(\"Scripting.FileSystemObject\")\r\n"
	$vbs_in_t:=$vbs_in_t+"WScript.StdOut.Write fso.GetFileVersion(\""
	$vbs_in_t:=$vbs_in_t+Fichier application+"\")\r\n"
	
	$script_path_t:=Dossier temporaire+"$"+Chaine(Nombre de millisecondes)+".vbs"
	
	CONVERTIR DEPUIS TEXTE($vbs_in_t;"UTF-16LE";$script_x)
	BLOB VERS DOCUMENT($script_path_t;$script_x)
	FIXER VARIABLE ENVIRONNEMENT("_4D_OPTION_HIDE_CONSOLE";"true")
	C_BLOB($stdin_x;$stdout_x;$stderr_x)
	$cscript_t:="cscript //Nologo //U \""+$script_path_t+"\""
	LANCER PROCESS EXTERNE($cscript_t;$stdin_x;$stdout_x;$stderr_x)
	
	$vbs_out_t:=Convertir vers texte($stdout_x;"UTF-16LE")
	
	TABLEAU ENTIER LONG($match_pos_al;0)
	TABLEAU ENTIER LONG($match_length_al;0)
	
	Si (Trouver regex("(.*)\\.(.*)";$vbs_out_t;1;$match_pos_al;$match_length_al))
		$0:=Sous chaine($vbs_out_t;$match_pos_al{2};$match_length_al{2})
	Fin de si 
	
	SUPPRIMER DOCUMENT($script_path_t)
Fin de si

Application pratique :

En environnement client/serveur, cette méthode pourrait être utilisée pour confirmer aux clients connectés qu'ils utilisent bien la version escomptée de 4D correspond à celle du serveur.

Documentation :

· commande Trouver Regex
· commande LANCER PROCESS EXTERNE

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2005-2009 4D s.a.s.. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.