Aller au contenu principal
Version: 20 R5 BETA

Générateur d'application

4D inclut un générateur d’application pour créer un package de projet (version finale). Ce générateur simplifie le processus de finalisation et de déploiement des applications compilées 4D. Il gère automatiquement les fonctionnalités spécifiques de différents systèmes d'exploitation et facilite le déploiement d'applications client-serveur.

Le générateur d'applications vous permet de :

  • Build a compiled structure or component, without interpreted code,
  • Build a stand-alone, double-clickable application, i.e., merged with 4D Volume Desktop, the 4D database engine,
  • Générer différentes applications à partir de la même structure compilée via un projet XML,
  • Générer des applications client-serveur homogènes,
  • Générer des applications client-serveur avec mise à jour automatique des composants client et serveur.
  • Save your build settings for future use (Save settings button).

Compiled applications are based upon .4dz files that are read-only. Keep in mind that using commands or functions that modify the source files (such as CREATE INDEX or CREATE TABLE (SQL)) is not possible by default in compiled applications. However, you can build specific applications that support local modifications by using the PackProject XML key (see doc.4d.com).

Vue d’ensemble

Générer un package de projet peut être réalisée à l'aide de :

tip

You can also download and use Build4D, a component that provides classes to compile, build, and sign 4D projects, even from a headless application.

Construire application cliente

To display the Build application dialog, select Design > Build Application... from the menu bar.

La boîte de dialogue du générateur d'application comprend plusieurs pages accessibles via des onglets :

La génération ne peut s'effectuer qu'une fois le projet compilé. Si vous sélectionnez cette commande sans avoir préalablement compilé le projet ou si le code compilé ne correspond pas au code interprété, une boîte de dialogue d'avertissement apparaît indiquant que le projet doit être (re)compilé.

buildApp.4DSettings

Each build application parameter is stored as an XML key in the application project file named buildApp.4DSettings XML file, located in the Settings folder of the project.

Les paramètres par défaut sont utilisés lors de la première utilisation de la boîte de dialogue du Générateur d'application. The contents of the project file are updated, if necessary, when you click Build or Save settings. You can define several other XML settings file for the same project and employ them using the BUILD APPLICATION command.

Les clés XML fournissent des options supplémentaires à celles affichées dans la boîte de dialogue du Générateur d'application. The description of these keys are detailed in the 4D XML Keys BuildApplication manual.

Fichier d'historique

When an application is built, 4D generates a log file named BuildApp.log.xml in the Logs folder of the project. Le fichier d'historique stocke les informations suivantes pour chaque génération :

  • Le début et la fin de la génération des cibles,
  • Le nom et le chemin d'accès complet des fichiers générés,
  • La date et l'heure de la génération,
  • Toutes les erreurs qui se sont produites,
  • Tout problème de signature (par exemple, un plug-in non signé).

La vérification de ce fichier peut vous aider à gagner du temps lors des prochaines étapes de déploiement, si vous avez l'intention, par exemple, de notariser votre application.

Use the Get 4D file(Build application log file) command to get the log file location.

Nom de l'application et dossier de destination

Enter the name of the application in Application Name.

Specify the folder for the built application in Destination Folder. If the specified folder does not already exist, 4D will create a Build folder for you.

Page de structure compilée

Cet onglet vous permet de générer un fichier de structure compilé standard et/ou un composant compilé :

Générer une structure compilée

Génère une application contenant uniquement du code compilé.

This feature creates a .4dz file within a Compiled Database/<project name> folder. Par exemple, si vous avez nommé votre application «MyProject», 4D créera :

<destination>/Compiled Database/MyProject/MyProject.4dz

Un fichier .4dz est essentiellement une version compressée du dossier du projet. Les fichiers .4dz peuvent être utilisés par 4D Server, 4D Volume Desktop (applications fusionnées) et 4D. La taille compacte et optimisée des fichiers .4dz facilite le déploiement des packages de projet.

When generating .4dz files, 4D uses a standard zip format by default. L'avantage de ce format est qu'il est facilement lisible par tout outil de dézippage. If you do not want to use this standard format, add the UseStandardZipFormat XML key with value False in your buildApp.4DSettings file (for more information, see the 4D XML Keys BuildApplication manual).

Inclure les dossiers associés

When you check this option, any folders related to the project are copied into the Build folder as Components and Resources folders. For more information about these folders, refer to the description of project architecture.

Générer un composant

Génère un composant compilé à partir de la structure.

A component is a standard 4D project in which specific functionalities have been developed. Once the component has been configured and installed in another 4D project (the host application project), its functionalities are accessible from the host project.

If you have named your application, MyComponent, 4D will create a Components folder containing MyComponent.4dbase folder:

<destination>/Components/MyComponent.4dbase/MyComponent.4DZ.

The MyComponent.4dbase folder contains:

  • MyComponent.4DZ file
  • A Resources folder - any associated Resources are automatically copied into this folder. Les autres composants et/ou dossiers de plugins ne sont pas copiés (un composant ne peut pas utiliser de plug-ins ou d'autres composants).

The MyComponent.4dbase folder is the package folder of the compiled component.

Page Application

Cet onglet vous permet de créer une version autonome et monoposte de votre application :

Créer une application autonome

Checking the Build stand-alone Application option and clicking Build will create a stand-alone (double-clickable) application directly from your application project.

Les éléments suivants sont requis pour la création :

Sous Windows, cette fonctionnalité crée un fichier exécutable (.exe). Sous macOS, il gère la création de progiciels.

Le principe consiste à fusionner le fichier 4D Volume Desktop avec votre fichier de structure compilé. Les fonctionnalités offertes par le fichier 4D Volume Desktop sont liées à l’offre commerciale à laquelle vous avez souscrite. For more information about this point, refer to the sales documentation and to the 4D Store.

You can define a default data file or allow users to create and use their own data file.

It is possible to automate the update of merged single-user applications by means of a sequence of language commands.

Emplacement du 4D Volume Desktop

Afin de créer une application autonome, il convient d'abord de désigner le dossier contenant le fichier 4D Volume Desktop :

  • Windows - the folder contains the 4D Volume Desktop.4DE, 4D Volume Desktop.RSR, as well as various files and folders required for its operation. Ces éléments doivent être placés au premier niveau du dossier sélectionné.
  • macOS - 4D Volume Desktop is provided in the form of a structured software package containing various generic files and folders.

To select the 4D Volume Desktop folder, click on the [...] button. Une boîte de dialogue vous permettant de désigner le dossier (Windows) ou le progiciel (macOS) de 4D Volume Desktop apparaît.

Une fois le dossier sélectionné, son chemin d’accès complet est affiché et, s’il contient effectivement 4D Volume Desktop, l’option de génération d’application exécutable est activée.

Le numéro de version de 4D Volume Desktop doit correspondre à celui du 4D Developer Edition. Par exemple, si vous utilisez 4D Developer v18, vous devez sélectionner un 4D Volume Desktop v18.

Mode de liaison des données

Cette option vous permet de sélectionner le mode de liaison entre l'application fusionnée et le fichier de données local. Deux modes de liaison sont disponibles :

  • By application name (default) - The 4D application automatically opens the most recently opened data file corresponding to the structure file. Cela vous permet de déplacer librement le dossier de l'application sur le disque. Il est conseillé en général pour les applications fusionnées, à moins que vous n'ayez spécifiquement besoin de dupliquer l'application.

  • By application path - The merged 4D application will parse the application's lastDataPath.xml file and try to open the data file with an "executablePath" attribute that matches the application's full path. Si cette clé est trouvée, son fichier de données correspondant (défini via son attribut "dataFilePath") est ouvert. Si cette clé est trouvée, son fichier de données correspondant (défini via son attribut "dataFilePath") est ouvert.

For more information about the data linking mode, refer to the Last data file opened section.

Fichiers générés

When you click on the Build button, 4D automatically creates a Final Application folder in the specified Destination Folder. Dans le dossier Final Application, se trouve un sous-dossier contenant le nom de l'application spécifiée.

Si vous avez nommé votre application "MyProject", vous trouverez les fichiers suivants dans ce sous-dossier (MyProject):

  • Windows
    • MonAppli.exe qui est votre exécutable et MonAppli.Rsr qui contient les ressources de l’application
    • Les dossiers 4D Extensions et Resources ainsi que les diverses librairies (DLL), le dossier Native Components et SAS Plugins -fichiers nécessaires au fonctionnement de l’application
    • Un dossier Database contenant notamment un dossier Resources et un fichier MyProject.4DZ. Ils constituent la structure compilée du projet et son dossier Resources. Note: This folder also contains the Default Data folder, if it has been defined (see Data file management in final applications.
    • (Facultatif) Un dossier Components et/ou un dossier Plugins contenant les fichiers des composants et/ou des plug-ins éventuellement inclus dans le projet. For more information about this, refer to the Plugins and components section.
    • Un dossier Licences contenant, sous forme de fichier XML, la liste des numéros de licence ayant été intégrés dans l’application. For more information about this, refer to the Licenses & Certificate section.
    • Additional items added to the 4D Volume Desktop folder, if any (see Customizing the 4D Volume Desktop folder).

Tous ces éléments doivent être conservés dans le même dossier afin que l’exécutable fonctionne.

  • macOS
    • Un progiciel (package) nommé MyProject.app contenant votre application et tous les éléments nécessaires à son fonctionnement, y compris les plug-ins, composants et licences. For more information about integrating plug-ins and components, refer to the Plugins and components section. For more information about integrating licenses, refer to the Licenses & Certificate section. Note: In macOS, the Application file command of the 4D language returns the pathname of the ApplicationName file (located in the Contents:macOS folder of the software package) and not that of the .comp file (Contents:Resources folder of the software package).

Personnaliser le dossier 4D Volume Desktop

When building a stand-alone application, 4D copies the contents of the 4D Volume Desktop folder into Destination folder > Final Application folder. Vous pouvez donc parfaitement personnaliser le contenu du dossier 4D Volume Desktop d’origine en fonction de vos besoins. Vous pouvez, par exemple :

  • Installer une version de 4D Volume Desktop correspondant à une langue spécifique ;
  • Add a custom PlugIns folder;
  • Customize the contents of the Resources folder.

Dans macOS, 4D Volume Desktop est fourni sous la forme d'un package. In order to modify it, you must first display its contents (Control+click on the icon).

Emplacements des fichiers Web

Si votre application exécutable est utilisée en tant que serveur Web, les fichiers et dossiers requis par le serveur doivent être installés à des emplacements spécifiques. Ces éléments sont les suivants :

  • cert.pem and key.pem files (optional): These files are used for TLS connections and by data encryption commands,
  • dossier racine Web par défaut.

Des éléments doivent être installés :

  • on Windows: in the Final Application\MyProject\Database subfolder.
  • on macOS: next to the MyProject.app software package.

Page Client/Serveur

4D vous permet de générer des applications client/serveur personnalisées, homogènes, multi-plateformes et avec option de mise à jour automatique.

Qu'est-ce qu'une application Client/Serveur ?

Une application client/serveur est issue de la combinaison de trois éléments :

  • Un projet 4D compilé,
  • L’application 4D Server,
  • L’application 4D Volume Desktop (macOS et/ou Windows).

Une fois générée, une application client/serveur se compose de deux parties homogènes : la partie Serveur (unique), et la partie Cliente (à installer sur chaque poste client).

If you want to deploy a client/server application in an heterogeneous environment (client applications running on Intel/AMD and Apple Silicon machines), it is recommended to compile the project for all processors on a macOS machine, so that all client applications will run natively.

En outre, l’application client/serveur est personnalisée et son maniement est simplifié :

  • Pour lancer la partie serveur, l’utilisateur double-clique simplement sur l’application serveur : il n’est pas nécessaire de sélectionner le fichier projet. il n’est pas nécessaire de sélectionner le fichier projet.
  • Pour lancer la partie cliente, l’utilisateur double-clique simplement sur l’application cliente, qui se connecte directement à l’application serveur : il n’est pas nécessaire de choisir un serveur dans une boîte de dialogue de connexion. il n’est pas nécessaire de choisir un serveur dans une boîte de dialogue de connexion. The client targets the server either using its name, when the client and server are on the same sub-network, or using its IP address, which is set using the IPAddress XML key in the buildapp.4DSettings file. If the connection fails, specific alternative mechanisms can be implemented. You can "force" the display of the standard connection dialog box by holding down the Option (macOS) or Alt (Windows) key while launching the client application. Seule la partie cliente peut se connecter à la partie serveur correspondante. Si un utilisateur tente de se connecter à la partie serveur à l’aide d’une application 4D standard, un message d’erreur est retourné et la connexion est impossible.
  • A client/server application can be set so that the client portion can be updated automatically over the network. Il vous suffit de créer et de distribuer une version initiale de l'application cliente, les mises à jour ultérieures sont gérées à l'aide du mécanisme de mise à jour automatique.
  • It is also possible to automate the update of the server part through the use of a sequence of language commands (SET UPDATE FOLDER and RESTART 4D.

Construire application serveur

Cochez cette option pour générer la partie serveur de votre application pendant la phase de construction. Vous devez désigner sur votre disque l’emplacement de l’application 4D Server à utiliser. Ce 4D Server doit correspondre à la plate-forme courante (qui sera également la plate-forme de l’application du serveur).

Emplacement de 4D Server

Click on the [...] button and use the Browse for folder dialog box to locate the 4D Server application. Sous macOS, vous devez sélectionner directement le package 4D Server.

Version courante

Utilisée pour indiquer le numéro de version courante de l'application générée. Vous pourrez par la suite accepter ou refuser les connexions des applications clientes en fonction de leur numéro de version. The interval of compatibility for client and server applications is set using specific XML keys).

Intégrer le projet Groupe et Utilisateurs dans une application serveur

Preliminary Note: The following terms are used in this section:

NomDéfinition
Fichier de répertoire du projetdirectory.json file located in the Settings folder of the project
Fichier de répertoire de l'applicationdirectory.json file located in the Settings folder of the built 4D Server
Fichier de répertoire des donnéesdirectory.json file in the Data > Settings folder

Lorsque vous cochez cette option, le fichier du répertoire du projet est copié dans le fichier du répertoire de l'application au moment de la génération.

Lorsque vous exécutez une application 4D Server générée :

  • Si le serveur possède un fichier de répertoire de données, il est chargé.
  • Si le serveur ne possède pas de fichier de répertoire de données, le fichier de répertoire de l'application est chargé.

Le fichier du répertoire d'application est en lecture seule. Les modifications apportées aux utilisateurs, aux groupes et aux autorisations pendant l'exécution du serveur sont sauvegardées dans le fichier du répertoire des données. Si aucun fichier de répertoire de données n'existe déjà, il est automatiquement créé. Si le fichier de répertoire de l'application a été incorporé, il est dupliqué en tant que fichier de répertoire des données.

L'incorporation du fichier de répertoire du projet vous permet de déployer une application client/serveur avec une configuration de base de la sécurité des utilisateurs et des groupes. Les modifications ultérieures sont ajoutées au fichier de répertoire des données.

Autoriser la connexion des clients Silicon Mac

Lorsque vous créez un serveur sous Windows, cochez cette option pour permettre aux clients Apple Silicon de se connecter à votre application serveur. Vous pouvez alors spécifier un chemin d'accès à la structure compilée pour Apple Silicon/Intel.

Pour permettre aux clients Apple Silicon de se connecter à une application serveur créée sous Windows, vous devez d'abord créer une application cliente sous macOS, avec un projet compilé pour Apple Silicon et Intel. This automatically creates a compiled structure, identical to the one created with the Build compiled structure option (without the related folders).

Vous pouvez ensuite copier cette structure sur votre machine Windows, et l'utiliser pour construire l'application serveur :

Emplacement de la structure compilée

Path to compiled structure of the Apple Silicon/Intel client application used to build a Windows Server (see Allow connection of Silicon Mac clients.

Mode de liaison des données

Cette option vous permet de sélectionner le mode de liaison entre l'application fusionnée et le fichier de données local. Deux modes de liaison sont disponibles :

  • By application name (default) - The 4D application automatically opens the most recently opened data file corresponding to the structure file. Cela vous permet de déplacer librement le dossier de l'application sur le disque. Il est conseillé en général pour les applications fusionnées, à moins que vous n'ayez spécifiquement besoin de dupliquer l'application.

  • By application path - The merged 4D application will parse the application's lastDataPath.xml file and try to open the data file with an "executablePath" attribute that matches the application's full path. Si cette clé est trouvée, son fichier de données correspondant (défini via son attribut "dataFilePath") est ouvert. Si cette clé est trouvée, son fichier de données correspondant (défini via son attribut "dataFilePath") est ouvert.

For more information about the data linking mode, refer to the Last data file opened section.

Construire application cliente

Cochez cette option pour générer la partie cliente de votre application lors de la phase de construction.

Vous pouvez cocher cette option :

  • along with the Build server application option to build matching server and client parts for the current platform and (optionally) include the automatic update archive files,
  • without selecting the Build server application option, usually to build the update archive file to be selected from the "concurrent" platform when building the server part.

Emplacement du 4D Volume Desktop

Désigne l'emplacement sur votre disque de l'application 4D Volume Desktop à utiliser pour construire la partie cliente de votre application.

Le numéro de version de 4D Volume Desktop doit correspondre à celui du 4D Developer Edition. Le numéro de version de 4D Volume Desktop doit correspondre à celui du 4D Developer Edition.

Ce 4D Volume Desktop doit correspondre à la plate-forme courante (qui sera également la plate-forme de l’application cliente). Si vous souhaitez générer une version de l’application cliente pour la plate-forme “concurrente”, vous devez répéter l'opération en utilisant une application 4D tournant sur cette plate-forme.

If you want the client application to connect to the server using a specific address (other than the server name published on the sub-network), you must use the IPAddress XML key in the buildapp.4DSettings file. For more information about this file, refer to the description of the BUILD APPLICATION command. Vous pouvez également mettre en place des mécanismes spécifiques en cas d'échec de la connexion. The different scenarios proposed are described in the Management of connections by client applications paragraph.

Copie des applications clientes dans l'application serveur

Les options de cette zone permettent de mettre en place le mécanisme de mise à jour des parties clientes de vos applications client/serveur via le réseau à chaque nouvelle version de l’application générée. These options are only enabled when the Build client application option is checked.

  • Allow automatic update of Windows client application - Check this option to build a .4darchive file that can be sent to your client applications on the Windows platform in case of update.
  • Allow automatic update of Macintosh client application - Check this option to build a .4darchive file that can be sent to your client applications on the Macintosh platform in case of update.

The .4darchive is copied at the following location:

<ApplicationName>_Build/Client Server executable/Upgrade4DClient/

Sélectionner l'archive cliente pour la plate-forme concurrente

You can check the Allow automatic update... option for client applications running on the concurrent platform. Cette option est disponible seulement si :

  • the Build server application option is checked,
  • the Allow automatic update... option for client applications running on the current platform is checked.

This feature requires that you click on the [...] button and designate the location on your disk of the file to use for the update. Le fichier à sélectionner dépend de la plate-forme courante du serveur :

Plateforme du serveur courantFichier requisDétails
macOSWindows 4D Volume Desktop or Windows client update archiveBy default, you select the 4D Volume Desktop application for Windows. To select a .4darchive file previously built on Windows, press Shift while clicking on [...]
WindowsmacOS client update archiveSelect a signed .4darchive file previously built on macOS

You can build specific a .4darchive file on the concurrent platform by selecting only the Build client application and the appropriate Allow automatic update... option.

Comment proposer une mise à jour ?

Dans la pratique, la proposition de mise à jour des applications clientes découle automatiquement de la mise à jour de l’application serveur.

It works as follows: when a new version of the client/server application is built using the application builder, the new client portion is copied as a compressed file in the Upgrade4DClient subfolder of the ApplicationName Server folder (in macOS, these folders are included in the server package). If you have followed the process for generating a cross-platform client application, a .4darchive update file is available for each platform:

Pour provoquer la mise à jour des applications clientes, il suffit de remplacer l’ancienne version de l’application serveur par la nouvelle puis de l’exécuter. Le reste du processus est automatique.

Côté client, au moment où l’“ancienne” application cliente tente de se connecter à l’application serveur mise à jour, une boîte de dialogue s’affiche sur le poste client, lui indiquant qu’une nouvelle version est disponible. L’utilisateur peut mettre sa version à jour ou annuler la boîte de dialogue.

  • If the user clicks OK, the new version is downloaded to the client machine over the network. A l’issue du téléchargement, l’ancienne application client quitte, la nouvelle est lancée et se connecte au serveur. A l’issue du téléchargement, l’ancienne application client quitte, la nouvelle est lancée et se connecte au serveur.
  • If the user clicks Cancel, the update is cancelled; if the old version of the client application is not in the range of versions accepted by the server (please refer to the following paragraph), the application is closed and connection is impossible. Sinon (par défaut), la connexion est établie.

Comment forcer la mise à jour ?

Dans certains cas, vous pourrez souhaiter que les applications clientes ne puissent pas annuler le téléchargement des mises à jour. Par exemple, si vous avez utilisé une nouvelle version de l’application source 4D Server, il est impératif que la nouvelle version de l’application cliente soit installée sur chaque poste client.

Pour forcer la mise à jour, il vous suffit d’exclure les versions courantes des applications clientes (N-1 et précédentes) de l’intervalle des numéros de version compatibles avec l’application serveur. Dans ce cas, le mécanisme de mise à jour n’autorisera pas la connexion des applications clientes non mises à jour. Par exemple, si la nouvelle version de l’application client-serveur est 6, vous pouvez stipuler que toute application cliente ayant un numéro de version strictement inférieur à 6 ne sera pas autorisé à se connecter.

The current version number is set on the Client/Server page of the Build Application dialog box. The intervals of authorized numbers are set in the application project using specific XML keys.

En cas d’erreur

Si 4D ne peut pas effectuer la mise à jour de l’application cliente, le poste client affiche le message d’erreur suivant : “La mise à jour de l’application cliente a échoué. L’application va maintenant quitter."

Les causes possibles de cette erreur sont multiples. Lorsque vous rencontrez ce message, il est conseillé de contrôler en premier lieu les paramètres suivants :

  • Pathnames - Check the validity of the pathnames set in the application project via the Application builder dialog box or via XML keys (for example ClientMacFolderToWin). Vérifiez en particulier les chemins d’accès aux versions de 4D Volume Desktop.
  • Read/write privileges - On the client machine, check that the current user has write access rights for the client application update.

Fichiers générés

Once a client/server application is built, you will find a new folder in the destination folder named Client Server executable. This folder contains two subfolders, <ApplicationName>Client and <ApplicationName>Server.

Ces dossiers ne sont pas générés si une erreur est survenue. In this case, open the log file in order to find out the cause of the error.

The <ApplicationName>Client folder contains the client portion of the application corresponding to the execution platform of the application builder. Ce dossier doit être installé sur chaque poste client. The <ApplicationName>Server folder contains the server portion of the application.

Le contenu de ces dossiers diffère en fonction de la plate-forme courante :

  • Windows - Each folder contains the application executable file, named <ApplicationName>Client.exe for the client part and <ApplicationName>Server.exe for the server part as well as the corresponding .rsr files. Les dossiers contiennent également divers fichiers et dossiers nécessaires au fonctionnement des applications et les éléments personnalisés éventuellement placés dans les dossiers 4D Volume Desktop et 4D Server d’origine.
  • macOS - Each folder contains only the application package, named <ApplicationName> Client for the client part and <ApplicationName> Server for the server part. Chaque progiciel contient tous les éléments nécessaires à son fonctionnement. Sous macOS, un progiciel est lancé via un double-clic.

Les progiciels macOS générés contiennent les mêmes éléments que les sous-dossiers Windows. Pour les visualiser, vous devrez tout d’abord afficher leur contenu (effectuez Control+clic sur leur icône) afin de pouvoir les modifier.

If you checked the “Allow automatic update of client application” option, an additional subfolder called Upgrade4DClient is added in the <ApplicationName>Server folder/package. Ce sous-dossier contient l’application cliente au format macOS et/ou Windows sous forme de fichier compressé. Ce fichier est utilisé lors de la mise à jour automatique des applications clientes.

Emplacements des fichiers Web

Si la partie serveur et/ou la partie cliente de votre application exécutable est utilisée en tant que serveur Web, les fichiers et dossiers requis par le serveur doivent être installés à des emplacements spécifiques. Ces éléments sont les suivants :

  • cert.pem and key.pem files (optional): These files are used for TLS connections and by data encryption commands,
  • Dossier racine Web (DossierWeb) par défaut.

Des éléments doivent être installés :

  • on Windows

    • Server application - in the Client Server executable/<ApplicationName>Server/Server Database subfolder.
    • Client application - in the Client Server executable/<ApplicationName>Client subfolder.
  • on macOS

    • Server application - next to the <ApplicationName>Server software package.
    • Client application - next to the <ApplicationName>Client software package.

Intégrer une structure compilée dans la partie cliente

4D permet d'intégrer une structure compilée dans une application cliente. This feature can be used, for example, to provide users with a "portal" application, that gives access to different server applications thanks to the OPEN DATABASE command executing a .4dlink file.

To enable this feature, add the DatabaseToEmbedInClientWinFolder and/or DatabaseToEmbedInClientMacFolder keys in the buildApp settings file. When one of these keys is present, the client application building process generates a single-user application: the compiled structure, instead of the EnginedServer.4Dlink file, is placed in the "Database" folder.

  • Si un dossier "Data" par défaut existe dans l'application monoposte, une licence est intégrée.
  • Si un dossier "Data" par défaut n'existe pas dans l'application monoposte, elle sera exécutée sans le fichier de données et sans licence.

Le scénario standard est le suivant :

  1. Dans la boîte de dialogue du Générateur d'application, sélectionnez l'option "Générer une structure compilée" pour produire un .4DC ou un .4DZ pour utiliser l'application en monoposte.
  2. In the buildApp.4DSettings file of the client-server application, use following xml key(s) to indicate the path to the folder containing the compiled single user application:
  • DatabaseToEmbedInClientWinFolder
  • DatabaseToEmbedInClientMacFolder
  1. Générez l'application client-serveur. Cela produira les effets suivants :
  • le dossier de l'application monoposte est copié intégralement dans le dossier "Database" du client fusionné
  • the EnginedServer.4Dlink file of the "Database" folder is not generated
  • les fichiers .4DC, .4DZ, .4DIndy de la copie de l'application monoposte sont renommés à l'aide du client fusionné
  • the PublishName key is not copied in the info.plist of the merged client
  • si l'application monoposte ne possède pas de dossier "Data" par défaut, le client fusionné sera exécuté sans données.

Automatic update 4D Server features (Current version number, SET UPDATE FOLDER command...) work with single-user application as with standard remote application. At connection, the single-user application compares its CurrentVers key to the 4D Server version range. Si elle se trouve en dehors de plage, l'application cliente monoposte mise à jour est téléchargée depuis le serveur et l'Updater lance le processus de mise à jour locale.

Personnalisation des noms de dossier de cache client et/ou serveur

Les dossiers de cache client et serveur sont utilisés pour stocker des éléments partagés tels que des ressources ou des composants. Ils sont nécessaires pour gérer les échanges entre le serveur et les clients distants. Les applications client/serveur utilisent les chemins d'accès par défaut pour les dossiers de cache système client et serveur.

Dans certains cas spécifiques, vous devrez personnaliser les noms de ces dossiers pour implémenter des architectures spécifiques (voir ci-dessous). 4D provides you with the ClientServerSystemFolderName and ServerStructureFolderName keys to be set in the buildApp settings file.

Dossier de cache client

La personnalisation du nom du dossier de cache côté client peut être utile lorsque votre application cliente est utilisée pour se connecter à plusieurs serveurs fusionnés qui sont similaires mais qui utilisent des ensembles de données différents. Dans ce cas, pour enregistrer plusieurs téléchargements inutiles de ressources locales identiques, vous pouvez utiliser le même dossier de cache local personnalisé.

  • Default configuration (for each connection to a server, a specific cache folder is downloaded/updated):

  • Using the ClientServerSystemFolderName key (a single cache folder is used for all servers):

Dossier de cache du serveur

La personnalisation du nom du dossier de cache côté serveur est utile lorsque vous exécutez plusieurs applications serveur identiques créées avec différentes versions de 4D sur le même ordinateur. Si vous souhaitez que chaque serveur utilise son propre ensemble de ressources, vous devez personnaliser le dossier de cache du serveur.

  • Default configuration (same server applications share the same cache folder):

  • Using the ServerStructureFolderName key (a dedicated cache folder is used for each server application):

Plugins & components page

On this tab, you set each plug-in, component, and module that you will use in your stand-alone or client/server application.

La page liste les éléments chargés par l'application 4D courante :

  • Active column - Indicates that the items will be integrated into the application package built. Par défaut, tous les éléments sont inclus. To exclude a plug-in, a component, or a module, deselect the check box next to it.

  • Plugins and components column - Displays the name of the plug-in/component/module.

  • ID column - Displays the element's identification number (if any).

  • Type column - Indicates the type of item: Plug-in, Component, or Module.

Adding plug-ins or components

If you want to integrate other plug-ins or components into the executable application, you just need to place them in a PlugIns or Components folder next to the 4D Volume Desktop application or next to the 4D Server application. The mechanism for copying the contents of the source application folder (see Customizing the 4D Volume Desktop folder) can be used to integrate any type of file into the executable application.

En cas de conflit entre deux versions différentes d’un même plug-in (l’une chargée par 4D et l’autre placée dans le dossier de l’application source), la priorité revient au plug-in installé dans le dossier de 4D Volume Desktop/4D Server. En revanche, la présence de deux instances d’un même composant empêchera l’ouverture de l’application.

L'utilisation de plug-ins et/ou de composants dans une version de déploiement peut nécessiter des numéros de licence.

Désélectionner des modules

Un module est une bibliothèque de code intégrée utilisée par 4D pour contrôler des fonctions spécifiques. Si vous savez que votre application construite n'utilise aucune des fonctionnalités couvertes par un module, vous pouvez le désélectionner dans la liste afin de réduire la taille de vos fichiers d'application.

Warning: Deselecting a module could prevent your built application from working as expected. Si vous n'êtes pas certain à 100 % qu'un module ne sera jamais appelé par votre application, il est recommandé de le laisser sélectionné.

Les modules optionnels suivants peuvent être désélectionnés :

  • CEF: Chromium embedded library. It is necessary to run Web areas that use the embedded rendering engine and 4D View Pro areas. L'appel de ces zones lorsque le CEF est désélectionné affichera des zones vierges et/ou générera des erreurs.
  • MeCab: Library used for text indexing in Japanese language (see this settings paragraph). Si vous désélectionnez ce module, les index de texte seront reconstruits en japonais.

If you deselect MeCab for an application in Japanese language used on heterogeneous platforms, make sure to deselect it on both client/server build and client application build (for the concurrent platform), otherwise major malfunctions will occur in the application.

Licenses & Certificate page

The Licences & Certificate page can be used to:

  • spécifier le ou les numéro(s) de licence que vous souhaitez intégrer dans votre application exécutable monoposte
  • signer l'application à l'aide d'un certificat sous macOS.

Licences

Cet onglet affiche la liste des licences de déploiement disponibles que vous pouvez intégrer dans votre application. Par défaut, la liste est vide. You must explicitly add your 4D Developer Professional license as well as each 4D Desktop Volume license to be used in the application built. Vous pouvez ajouter un numéro 4D Developer Professional et ses licences associées autres que ceux en cours d’utilisation.

To remove or add a license, use the [+] and [-] buttons at the bottom of the window.

When you click on the [+] button, an open file dialog box appears displaying by default the contents of the Licenses folder of your machine. For more information about the location of this folder, refer to the Get 4D folder command.

Vous devez désigner les fichiers contenant votre licence Developer et ainsi que vos licences de déploiement. These files were generated or updated when the 4D Developer Professional license and the 4D Desktop Volume licenses were purchased.

Une fois que vous avez sélectionné un fichier, la liste indique les caractéristiques de la licence qu’il contient.

  • License # - Product license number
  • License - Name of the product
  • Expiration date - Expiration date of the license (if any)
  • Path - Location on disk

Si la licence est invalide, un message vous le signale.

Vous pouvez désigner autant de fichiers valides que vous voulez. Lors de la génération de l’application exécutable, 4D utilisera les licences les plus appropriées.

Des licences "R" dédiées sont requises pour générer des applications basées sur des versions "R-release" (les numéros de licence des produits "R" débutent par "R-4DDP").

A l’issue de la génération, un nouveau fichier de licence de déploiement est automatiquement inclus dans un dossier Licences placé à côté de l’application exécutable (Windows) ou dans le progiciel (macOS).

Certification des applications sous OS X

Le Générateur d’application permet de signer les applications 4D fusionnées sous macOS (applications monoposte, composants, 4D Server et parties clientes sous macOS). Signer une application permet d’autoriser son exécution par la fonctionnalité Gatekeeper de macOS lorsque l’option "Mac App Store et Développeurs identifiés" est sélectionnée (cf. "A propos de Gatekeeper" ci-dessous).

  • Check the Sign application option to include certification in the application builder procedure for OS X. 4D will check the availability of elements required for certification when the build occurs:

L'option est affichée sous Windows et macOS mais n’est prise en compte que pour les versions macOS.

  • Name of certificate - Enter the name of your developer certificate validated by Apple in this entry area. Le nom d’un certificat est généralement le nom du certificat dans l’utilitaire Trousseau d’accès (la partie en rouge dans l'exemple suivant) :

To obtain a developer certificate from Apple, Inc., you can use the commands of the Keychain Access menu or go here: http://developer.apple.com/library/mac/#documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html.

Le certificat requiert la présence de l’utilitaire codesign d’Apple. Cet utilitaire est fourni par défaut et se trouve généralement dans le dossier "/usr/bin/". En cas d’erreur, vérifiez que cet utilitaire est présent sur votre disque.

  • Generate self-signed certificate - runs the "Certificate Assistant" that allows you to generate a self-signed certificate. Si vous ne disposez pas d'un certificat de développeur Apple, vous devez fournir un certificat auto-signé. Avec ce certificat, aucun message d'alerte ne s'affiche si l'application est déployée en interne. Si l'application est déployée en externe (c'est-à-dire via http ou e-mail), au lancement, macOS affiche un message d'alerte indiquant que le développeur de l'application n'est pas identifié. L'utilisateur peut "forcer" l'ouverture de l'application. In the "Certificate Assistant", be sure to select the appropriate options:

4D recommande de souscrire au programme Apple Developer Program pour accéder aux "Developer Certificates" nécessaires à la notarisation des applications (voir ci-dessous).

A propos de Gatekeeper

Gatekeeper est une fonction de sécurité d’OS X permettant de contrôler l’exécution des applications téléchargées depuis Internet. Si une application téléchargée ne provient pas de l’Apple Store ou n’est pas signée, elle est rejetée et ne peut être lancée.

On Apple Silicon machines, 4D components need to be actually signed. Un composant non signé générera une erreur au démarrage de l'application ("lib4d-arm64.dylib can't be opened...").

The Sign application option of the 4D application builder lets you generate applications and components that are compatible with this option by default.

À propos de la notarisation

La notarisation des applications est fortement recommandée par Apple à partir de macOS 10.14.5 (Mojave) et 10.15 (Catalina), car les applications non notariées déployées via Internet sont bloquées par défaut.

The 4D built-in signing features have been adapted to meet all of Apple's requirements to allow using the Apple notary service. La notarisation elle-même doit être réalisée par le développeur et est indépendante de 4D (à noter également qu'elle nécessite l'installation de Xcode). Please refer to this 4D blog post that provides a step-by-step description of the notarization process.

For more information on the notarization concept, please refer to this page on the Apple developer website.

Personnaliser les icônes d’une application

4D associe une icône par défaut aux applications exécutables (monopostes et client-serveur). Vous pouvez cependant la personnaliser pour chaque application.

  • macOs - When building a double-clickable application, 4D handles the customizing of the icon. Pour cela, vous devez, avant la construction du fichier de l’application, créer un fichier d’icône (type icns) et le placer à côté du dossier de structure.

Apple, Inc. provides a specific tool for building icns icon files (for more information, please refer to Apple documentation).

Your icon file must have the same name as the project file and include the .icns extension. 4D automatically takes this file into account when building the double-clickable application (the .icns file is renamed ApplicationName.icns and copied into the Resources folder; the CFBundleFileIcon entry of the info.plist file is updated).

  • Windows - When building a double-clickable application, 4D handles the customizing of its icon. In order to do this, you must create an icon file (.ico extension), prior to building the application file, and place it next to the project folder.

Your icon file must have the same name as the project file and include the .ico extension. 4D prend automatiquement ce fichier en compte lors de la génération de l’application exécutable.

You can also set specific XML keys in the buildApp.4DSettings file to designate each icon to use. Les clés suivantes sont disponibles :

  • RuntimeVLIconWinPath
  • RuntimeVLIconMacPath
  • ServerIconWinPath
  • ServerIconMacPath
  • ClientMacIconForMacPath
  • ClientWinIconForMacPath
  • ClientMacIconForWinPath
  • ClientWinIconForWinPath

Gestion des fichiers de données

Ouverture du fichier de données

Lorsqu'un utilisateur lance une application fusionnée ou une mise à jour (applications monopostes ou applications client-serveur), 4D va tenter d'ouvrir un fichier de données valide. Plusieurs emplacements sont successivement examinés par l'application.

La séquence de lancement d'une application fusionnée est la suivante :

  1. 4D tries to open the last data file opened, as described below (not applicable during initial launch).
  2. S'il n'est pas trouvé, 4D tente d'ouvrir en mode lecture seule le fichier de données situé dans le dossier de données par défaut au même niveau que le fichier .4DC.
  3. S'il n'est pas trouvé, 4D tente d'ouvrir le fichier de données par défaut standard (même nom et même emplacement que le fichier .4DZ).
  4. S'il n'est pas trouvé, 4D affiche une boîte de dialogue standard de sélection/création de fichier de données.

Dernier fichier de données ouvert

Chemin d'accès du dernier fichier de données

Toute application autonome ou serveur générée avec 4D stocke le chemin d'accès du dernier fichier de données ouvert dans le dossier de préférences de l'utilisateur de l'application.

L'emplacement du dossier de préférences de l'utilisateur de l'application correspond au chemin retourné par l'instruction suivante :

prefsUtilisateur:=Get 4D folder(Dossier 4D actif)

The data file path is stored in a dedicated file, named lastDataPath.xml.

Grâce à cette architecture, lorsque vous fournissez une mise à jour de votre application, le fichier de données de l'utilisateur local (le dernier fichier de données utilisé) est automatiquement ouvert dès le premier lancement.

Ce mécanisme est généralement adapté aux déploiements standard. Cependant, dans des cas spécifiques, par exemple si vous dupliquez vos applications fusionnées, vous pouvez avoir besoin de modifier la manière dont le fichier de données est lié à l'application.

Configurer le mode de liaison des données

4D utilise automatiquement, avec vos applications compilées, le dernier fichier de données ouvert. By default, the path of the data file is stored in the application's user preferences folder and is linked to the application name.

Ce fonctionnement peut s'avérer inadapté si vous souhaitez dupliquer une application fusionnée destinée à utiliser différents fichiers de données. En effet, les applications dupliquées vont en fait partager le même dossier de préférences de l'utilisateur et donc, toujours utiliser le même fichier de données -- même si le fichier de données est renommé, car l'application utilisera toujours le dernier fichier de données ouvert par l'application.

4D vous permet donc de lier votre chemin de fichier de données au chemin de l'application. Dans ce cas, le fichier de données sera relié via un chemin spécifique et ne sera plus simplement le dernier fichier utilisé. You therefore link your data by application path.

Ce mode vous permet de dupliquer vos applications fusionnées sans rompre le lien vers le fichier de données. However, with this option, if the application package is moved on the disk, the user will be prompted for a data file, since the application path will no longer match the "executablePath" attribute (after a user has selected a data file, the lastDataPath.xml file is updated accordingly).

Duplication when data linked by application name:

Duplication when data linked by application path:

Vous sélectionnez le mode de liaison des données lors de la phase de génération de l'application. Vous pouvez soit :

Définir un dossier de données par défaut

4D vous permet de définir un fichier de données par défaut lors de la phase de construction de l'application. When the application is launched for the first time, if no local data file is found (see opening sequence described above), the default data file is automatically opened silently in read-only mode by 4D. Cela vous donne un meilleur contrôle sur la création et/ou l'ouverture des fichiers de données lors du premier lancement d'une application fusionnée.

Plus particulièrement, il permet de répondre aux besoins suivants :

  • Eviter l'affichage de la boîte de dialogue d'ouverture de fichier de données de 4D au lancement d'une nouvelle application fusionnée ou d'une mise à jour. Vous pouvez détecter, par exemple dans la , que le fichier de données par défaut a été ouvert et donc, exécuter votre propre code et/ou boîtes de dialogue permettant de créer ou de sélectionner un fichier de données local.
  • Permettre la distribution d'applications fusionnées comportant des données en lecture seulement (par exemple des applications de démonstration).

Pour définir et utiliser un fichier de données par défaut :

  • Vous devez fournir un fichier de données par défaut (nommé "Default.4DD") et le stocker dans un dossier spécifique (nommé "Default Data") à l'intérieur du dossier du projet d'application. Ce fichier doit être accompagné de tous les fichiers nécessaires, en fonction de la configuration du projet : index (.4dIndx), blobs externes, journal, etc. Il est de votre responsabilité de livrer un fichier de données par défaut valide. A noter que, comme le fichier de données par défaut est ouvert en mode lecture seule, il est recommandé de désélectionner l'option "Utiliser le fichier d'historique" dans le fichier de structure original avant de créer le fichier de données.
  • Au moment de la génération de l'application, le dossier de données par défaut est intégré dans l'application fusionnée. Tous les fichiers présents dans ce dossier par défaut sont également embarqués.

Le schéma suivant illustre cette fonctionnalité :

Lorsque le fichier de données par défaut est détecté au premier lancement, il est silencieusement ouvert en mode lecture seulement, vous permettant ainsi d'exécuter toute opération personnalisée (à condition qu'elle ne modifie pas le fichier de données lui-même).

Gestion de la connexion des applications clientes

La gestion des connexions des applications clientes recouvre les mécanismes par lesquels une application cliente fusionnée se connectera au serveur cible, une fois en environnement de production.

Scénario de connexion

Le processus de connexion des applications clientes fusionnées prend en charge les cas où le serveur dédié n'est pas disponible. Le scénario du démarrage d'une application cliente 4D est le suivant :

  1. If valid connection information is stored in the "EnginedServer.4DLink" file within the client application, the client application connects to the specified server address.\ OR\ The client application tries to connect to the server using the discovery service (based upon the server name, broadcasted on the same subnet).

  2. En cas d'échec, l'application cliente tente de se connecter au serveur à l'aide des informations présentes dans le dossier de préférences utilisateur de l'application (fichier "lastServer.xml", cf. dernière étape).

  3. En cas d'échec, l'application cliente affiche une boîte de dialogue d'erreur de connexion.

  • If the user clicks on the Select... button (when allowed by the 4D developer at the build step, see below), the standard "Server connection" dialog box is displayed.
  • If the user clicks on the Quit button, the client application quits.
  1. Si la connexion est établie avec succès, les paramètres de cette connexion sont sauvegardés dans le dossier de préférences utilisateur de l'application cliente, ce qui permettra de les réutiliser ultérieurement en cas de besoin.

La procédure complète est décrite dans le diagramme suivant :

Sauvegarde du chemin du dernier serveur

Le chemin du dernier serveur utilisé est automatiquement sauvegardé dans un fichier nommé "lastServer.xml" placé dans le dossier de préférences utilisateur de l'application cliente. Ce dossier est situé à l'emplacement suivant :

prefsUtilisateur:=Get 4D folder(Dossier 4D actif)

Ce mécanisme permet de prendre en charge le cas où le serveur cible primaire est temporairement indisponible pour une raison quelconque (par exemple pour une opération de maintenance). Lorsque ce cas se produit pour la première fois, la boîte de dialogue de sélection de serveur est affichée (si elle est autorisée, cf. ci-dessous) et l'utilisateur peut manuellement sélectionner un serveur alternatif, dont le chemin est alors sauvegardé si la connexion est établie et validée. Toute indisponibilité ultérieure sera alors automatiquement prise en charge à l'aide des paramètres de connexion présents dans le fichier "lastServer.xml".

  • When client applications cannot permanently benefit from the discovery service, for example because of the network configuration, it is recommended that the developer provide a host name at build time using the IPAddress key in the "BuildApp.4DSettings" file. Le mécanisme de sauvegarde du chemin du dernier serveur est conçu pour les cas d'indisponibilité temporaire uniquement.
  • Pressing the Alt/Option key at startup to display the server selection dialog box is still supported in all cases.

Accès à la boîte de dialogue de sélection de serveur en cas d'erreur

Vous pouvez choisir d'afficher ou non la boîte de dialogue standard de sélection de serveur sur les applications clientes fusionnées lorsque le serveur ne répond pas. The configuration depends on the value of the ServerSelectionAllowed XML key on the machine where the application was built:

  • Affichage d'un message d'erreur sans accès possible à la boîte de dialogue de sélection de serveur. Fonctionnement par défaut. The application can only quit.\ ServerSelectionAllowed: False or key omitted

  • Display of an error message with access to the server selection dialog box possible. The user can access the server selection window by clicking on the Select... button. ServerSelectionAllowed: True

Automatic updating of server or single-user applications

In principle, updating server applications or merged single-user applications require user intervention (or programming custom system routines): whenever a new version of the merged application is available, you have to exit the application in production and manually replace the old files with the new ones; then restart the application and select the current data file.

You can automate this procedure to a large extent using the following language commands: SET UPDATE FOLDER, RESTART 4D, and also Get last update log path for monitoring operations. The idea is to implement a function in your 4D application triggering the automatic update sequence described below. It can be a menu command or a process running in the background and checking at regular intervals for the presence of an archive on a server.

You also have XML keys to elevate installation privileges so that you can use protected files under Windows (see the 4D XML Keys BuildApplication manual).

Here is the scenario for updating a server or merged single-user application:

  1. You transfer, for example using an HTTP server, the new version of the server application or the merged single-user application onto the machine in production.
  2. In the application in production, you call the SET UPDATE FOLDER command: this command designates the location of the folder where the "pending" update of the current application is found. Optionally, you can copy in this folder the custom elements of the version in production (user files).
  3. In the application in production, call the RESTART 4D command: this command automatically triggers execution of a utility program named "updater" that exits the current application, replaces it using the "pending" update if one is specified, and restarts the application with the current data file. The former version is renamed.

This sequence is compatible with Windows server applications run as a Service.

Update log

The installation procedure produces a log file detailing the update operations of merged applications (client, server or single-user) on the target machines. This file is useful for analyzing any errors that occur during the installation process.

The update log is named YYYY-MM-DD_HH-MM-SS_log_X.txt, for example, 2021-08-25_14-23-00_log_1.txt for a file created on August 25, 2021 at 14:23.

This file is created in the "Updater" application folder, within the system user folder. You can find out the location of this file at any time using the Get last update log path command.