Créer une application autonome avec le composant Build4D

Un nouveau composant build4D est disponible sur GitHub depuis quelques mois. Il vous permet de créer sans effort un projet compilé ou un composant. Les choses s’améliorent encore ; cette nouvelle version du composant vous permettra de générer une application autonome, élargissant ainsi les possibilités de votre flux de développement.

Ainsi, avec tool4D disponible depuis la v20, l’intégration du processus de génération d’applications dans vos outils d’intégration continue (CI) est devenue remarquablement pratique.

Entrons dans les détails !

Le composant Build4D

Que fait le composant ?

Voici une liste non exhaustive de ce que le composant vous permet de faire :

  • compiler le projet,
  • fusionner le 4D Volume Desktop avec votre projet,
  • ajouter les informations de l’application comme le Copyright, la Société…,
  • ajouter l’icône,
  • choisir les dossiers à ajouter, comme Documentation, WebFolder, Default Data…,
  • sélectionnez les dossiers à supprimer, comme un dossier Dev dans les Ressources,
  • choisir les modules à supprimer, comme CEF, Mecab, php…,
  • générer la licence de déploiement,
  • et signer l’application.

Quelle est la différence avec la commande Build application ?

Dans les deux cas, vous pouvez générer une application autonome parfaitement utilisable. La commande Build Application est monolithique. Si vous souhaitez personnaliser un fichier, ou ajouter ou supprimer un dossier, vous devez le faire après avoir créé l’application. Et pour une application macOS, vous devez à nouveau signer l’application.

Le composant Build4D est composé de plusieurs classes et fonctions codées en 4D. Ainsi, si votre application est très particulière et différente des autres. Vous pouvez facilement ajouter une nouvelle fonction ou améliorer une fonction existante.

Comment faire ?

Le code ci-dessous est un exemple de génération d’une application autonome à partir d’un projet externe.

var $build : cs.Build4D.Standalone
var $settings : Object
var $success : Boolean

$settings :={}
// Define the external project file
$settings .projectFile:=Folder(fk documents folder).file("Contact/Projet/Contact.4folderDProject")

// Configure the application
$settings .buildName:="myApp"
$settings .destinationFolder:="Test/"
$settings .obfuscated:=True
$settings .packedProject:=False
$settings .useSDI:=False
$settings .startElevated:=False
$settings .lastDataPathLookup:="ByAppPath"

// Define the 4D Volume Desktop path
$settings .sourceAppFolder:=Folder(fk documents folder). xml-ph-0034@deepl.internaapp")

// Specify the components required for compilation
$componentFolder :=Folder(fk documents folder).folder("4D v20.0/4D.app/Contents/Components")
$components :=[]
$components .push($componentFolder.file("4D WritePro Interface.4dbase/4D WritePro Interface.4DZ"))
$settings .compilerOptions:={components: $components}

// Delete the unnecessary module
$settings.excludeModules:=["CEF" ; "MeCab"]

// Include the folders and files
$settings .includePaths:=[]
$settings .includePaths.push({source: $componentFolder.folder("4D WritePro Interface.4dbase").path; destination: "../Components/"})
$settings .includePaths.push({source: $componentFolder.folder("4D SVG.4dbase").path; destination: "../Components/"})

// Delete the folders and files
$settings .deletePaths:=[]
$settings .deletePaths.push("Resources/Dev/")

// Add the application icon
$settings .iconPath:="/RESOURCES/myIcon.icns"

// Add the application information
$settings .versioning:={}
$settings .versioning.version:="version"
$settings .versioning.copyright:="copyright"
$settings .versioning.companyName:="companyName"
$settings .versioning.fileDescription:="fileDescription"
$settings .versioning.internalName:="internalName"

// Create the deployment license file
$settings.license:=Folder(fk licenses folder).file("XXXXX.license4D")

// Sign the macOS appplication
$settings .signApplication:={}
$settings .signApplication.macSignature:=True
$settings .signApplication.macCertificate:= "xxxxxx"

// Launch the build
$build:=cs.Build4D.Standalone.new($settings)
$success:=$build.build()

Pour plus de détails sur chaque attribut, lisez la documentation de chaque classe du composant.

Pour les applications macOS, vous devez les notariser pour pouvoir les distribuer. Pour plus de détails, veuillez vous référer à la documentation d’Apple.

Après…

Rendez-vous sur GitHub pour télécharger le composant « Build4D ». De plus, pour rester informé de toutes les nouvelles fonctionnalités du composant, cliquez sur le bouton « Watch » ou mettez 4D Depot ou Build 4D dans vos favoris. Si vous avez besoin d’aide, vous pouvez lire cet article de blog, qui détaille toutes les organisations 4D et comment utiliser toutes les fonctionnalités de Github.

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.