Xojo 2019r3 introdujo bajo el módulo System el método Version
y la clase VersionData
, los cuales nos permiten obtener tanto la versión Mayor, Menor y Debug del sistema operativo sobre el cual se estén ejecutando nuestras aplicaciones (macOS, Windows, Linux y iOS).
En ciertos casos, no obstante, también puede que necesites conocer la fase de Compilación del sistema operativo (Phase Build). A continuación te propongo una clase que puedes utilizar tanto para obtener la versión (Mayor y Menor) como la Fase de Compilación sobre los sistemas operativos macOS, Windows y iOS), además de que podrás utilizarla con releases anteriores a Xojo 2019r3.
Básicamente, la clase está creada de forma que siempre se trabaja con una única instancia (objeto compartido); de modo que siempre podamos obtener cualquiera de los valores en los que estemos interesados con una llamada al método que devuelve cada una de las partes de la versión, o bien al encargado de devolvernos una cadena de texto con toda la información lista para mostrar.
Para obtener los valores en los que estamos interesados se llama a la función GetVersionExA
en Windows (librería Kernel32
), mientras que en el caso de macOS y iOS se invoca el mensaje processInfo
de la clase NSProcessInfo
(framework Foundation
). La particularidad en la llamada de la función de Windows es que espera que le pasemos una referencia a una estructura de datos, que posteriormente se rellenará con la información pertinente. En este caso también, los valores de versión (Mayor y Menor) se corresponden con los indicados en la documentación del sitio web de Microsoft para la estructura OSVersionInfoA.
Así, se obtendrá por ejemplo un cuadro de diálogo similar a los siguientes sobre cada una de las plataformas de despliegue soportadas, utilizando para ello el siguiente fragmento de código:
Dim majorVersion As Integer = AXOSVersion.MajorVersion Dim minorVersion As Integer = AXOSVersion.MinorVersion Dim buildVersion As Text = AXOSVersion.BuildVersion MessageBox AXOSVersion.VersionString
Ten en cuenta que las tres primeras líneas de código tienen la única misión de mostrarnos como podemos obtener y almacenar en variables cada una de las partes que componen la versión del sistema operativo en cuestión.
Puedes descargar la clase AXOSVersion desde este enlace.
Por supuesto, si lo único que necesitas es obtener los valores de versión Mayor, Menor y Debug (así como comparar dichos valores contra una versión en particular), entonces basta con utilizar System.Version.ToText
en Xojo 2019r3 o posterior. Por ejemplo, el siguiente fragmento comparará la versión del sistema operativo sobre la cual se esté ejecutando nuestra aplicación contra un valor dado, de modo que podamos emplearlo para ejecutar una serie de instrucciones u otras, entre otras posibilidades:
If System.Version >= "10.14.1" Then Else End If
En definitiva, en ambos casos puedes lograr aun mayor flexibilidad de comportamiento para tus productos en función de cuál sea la versión del sistema operativo sobre el que se estén ejecutando; tanto si estás utilizando cualquiera de las últimas Releases de Xojo como si aun necesitas ejecutar releases anteriores a la 2019r3.