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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Quel est le répertoire quand je déploie dans ./assets/internal


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 084
    Points : 35 592
    Points
    35 592
    Billets dans le blog
    54
    Par défaut Quel est le répertoire quand je déploie dans ./assets/internal
    Bonjour,

    Je butte sur ce point tout bête !
    Selon l'article https://sourceforge.net/p/zeoslib/wi...0on%20Android/ il est possible d'utiliser Firebird (embedded qui plus est) sous Android. J'ai donc commencé à faire mes propres essais de déploiement (de firebird 3) et je butte sur le mystère de l'emplacement \assets\internal\firebird\.

    J'ai déjà réussi à accéder en mode client en utilisant IBdac, avantage je n'avais pas à m'occuper d'indiquer le nom de la vendorlib or, c'est là que ça coince !

    Quel Tpath.Getxxxx utiliser pour obtenir le chemin ./assets/internal ?

    dans le document cité j'ai ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const
      FirebirdBase = PathDelim + 'firebird';
      ClientLib =    PathDelim + 'firebird' + PathDelim + 'lib' + PathDelim + 'libfbclient.so.2';
    Si j'utilise ceci dans mon programme test (en utilisant Firedac et FDPhysIBDriver) ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     procedure CreateSymlinkIfNecessary(Const SymLink, Target: String);
     begin
      if not FileExists(SymLink) then TFile.CreateSymLink(SymLink, Target);
      {.$IFDEF DEBUG}
      if not FileExists(SymLink) then
          raise Exception.Create('Lien symbolique '+ Target+' non créé');
      {.$ENDIF}
    end; 
    begin
     CreateSymlinkIfNecessary(FirebirdLib+PathDelim+'libfbclient.so',
                               FirebirdLib+PathDelim+'libfbclient.so.3.0.7');
     ...
    end;
    j'obtiens une erreur EDirectoryNotFound "Impossible de trouver le lecteur"

    Et pour tout avouer, je n'aime pas trop ces enchainements +PathDelim+ y péférant nettement TPath.Combine

    Après maintes recherches je suis enfin "tombé" sur le programme originel (cf. zip) sans toutefois avoir eu le temps de le tester
    Fichiers attachés Fichiers attachés
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  2. #2
    Membre émérite Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - développeur Delphi, PHP et JS
    Inscrit en
    juin 2013
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2013
    Messages : 1 111
    Points : 2 355
    Points
    2 355
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Quel Tpath.Getxxxx utiliser pour obtenir le chemin ./assets/internal ?
    Bonjour Serge

    Ca correspond à tpath.GetDocumentsPath.

    Et pour les PathDelim à répétition, tu peux copier ma suggestion de nouvelle fonctionnalité et t'en servir :
    https://quality.embarcadero.com/browse/RSP-26535

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 084
    Points : 35 592
    Points
    35 592
    Billets dans le blog
    54
    Par défaut
    Bon, encore une fois, après avoir rongé l'os.

    pour trouver j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    FirebirdRoot:=Tpath.Combine(Tpath.GetHomePath,firebird);
    FirebirdLib:=Tpath.Combine(FirebirdRoot,'lib');
    if not FileExists(Tpath.Combine(FirebirdLib,libfbclient.so.3.0.7)) then raise exception.Create('libfbclient non trouvé');
    Donc, il semblerait bien que ./assets/internal corresponde à TPath.GetHomePath

    Je vais pouvoir maintenant m'attaquer au second message le sempiternel "connection rejected by remote interface"
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 084
    Points : 35 592
    Points
    35 592
    Billets dans le blog
    54
    Par défaut
    Bonjour Patrick
    Les réponses se croisent
    Citation Envoyé par pprem Voir le message
    Ca correspond à tpath.GetDocumentsPath.
    étrange selon mon test ce serait plus GetHomePath
    Et pour les PathDelim à répétition, tu peux copier ma suggestion de nouvelle fonctionnalité et t'en servir :
    https://quality.embarcadero.com/browse/RSP-26535
    Sans aller jusqu'à la copier, j'ai voté pour, c'est vraiment frustrant de ne pouvoir faire que du pas à pas avec Tpath.Combine
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Membre émérite Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - développeur Delphi, PHP et JS
    Inscrit en
    juin 2013
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2013
    Messages : 1 111
    Points : 2 355
    Points
    2 355
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    étrange selon mon test ce serait plus GetHomePath
    Danger avec GetHomePath, il n'est pas cohérent entre les plateformes, mais si ça passe tant mieux. En tout cas surveiller.

    Citation Envoyé par SergioMaster Voir le message
    Sans aller jusqu'à la copier, j'ai voté pour, c'est vraiment frustrant de ne pouvoir faire que du pas à pas avec Tpath.Combine

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 084
    Points : 35 592
    Points
    35 592
    Billets dans le blog
    54
    Par défaut Danger avec GetHomePath ?
    Puisque tu en parles, tu peux m'étayer ces dangers ? À moins que ce soit des dangers dans le cas d'IOS ?
    ou la différence entre l'utilisation de System.IOUtils et System.SysUtils.pas


    J'ai lu je ne sais quand qu'il fallait maintenant déployer SQLite en interne pour chaque application pour blabla .. blabla (bon je comprend pour des problèmes de version SQlite différente selon application)

    en y repensant d'ailleurs comment on déploie dans GetDocumentPath ?
    La page http://docwiki.embarcadero.com/RADSt...ises_en_charge n'indique pas ce qu'il en est pour le déploiement

    si ./assets/internal -> GetHomePath (du moins sur mon vieux mobile)
    assets/internal -> GetDocumentPath selon l'aide (F1) pas claire sur le déploiement d'une application Android
    qu'en est-il d'autres "expressions" comme
    ./
    et les autres que l'on peut voir ...

    Je n'ai pas trouvé la bonne page, ou alors faut-il chercher ailleurs que dans le docwiki ?
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  7. #7
    Membre émérite Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - développeur Delphi, PHP et JS
    Inscrit en
    juin 2013
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2013
    Messages : 1 111
    Points : 2 355
    Points
    2 355
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Je n'ai pas trouvé la bonne page, ou alors faut-il chercher ailleurs que dans le docwiki ?
    A ma connaissance il n'y a pas ces infos dans le docwiki.

    Trop compliqué de documenter ça car les chemins de déploiement dépendent des plateformes et du bon vouloir des Google, Apple, Microsoft (appelons les "les GAM", ça fera ça de mots en moins dans lesquels j'inverserai des lettres en les saisissant).

    Selon la plateforme une arborescence est interdite, autorisée ou figée et peut entraîner un refus de signature ou d'installation du fichier final.

    Sur iOS c'est un fichier plat : tout est au niveau de l'exécutable dans l'IPA. J'y accède en récupérant le dossier de l'exécutable depuis paramstr(0).
    Sur macOS il y a une arborescence prédéfinie. On ne peut pas faire ce qu'on veut.
    Sur Android on a une certaine latitude mais pas tant que ça. L'arborescence de l'APK devient virtuelle une fois installé. Certains dossiers sont utilisés avec les mêmes accès logiques que d'autres (comme le ./assets/internals).
    Quant à Windows, hors MSIX/APPX, c'est à nous de faire le déploiement, donc tranquillou le bilou. Idem sur Linux.

    Le moins casse gueule consisterait à tout mettre en ressources pour le programme depuis l'assistant de l'IDE et y accéder avec les méthodes correspondantes.

    Perso je déploie le moins de choses possibles avec l'exécutable et préfère les créer ou télécharger quand c'est nécessaire, mais ça implique avoir une connexion au moins au premier lancement de l'application. Si vous ne savez pas trop comment le gérer, jetez à mon exemple de générique Star Wars. Pour pas me mettre un DMCA j'y récupère la musique sur Soundcloud au lancement : https://github.com/DeveloppeurPascal...eriqueStarWars

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 084
    Points : 35 592
    Points
    35 592
    Billets dans le blog
    54
    Par défaut
    Je craignais cette réponse GAM qui va me pousser à aller dans les pages G
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/11/2007, 21h37
  2. Réponses: 7
    Dernier message: 22/08/2007, 13h33
  3. Quel est le nom du Bouton "OK" dans une Alert JS
    Par tromaltsec dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/08/2007, 16h59
  4. Quel est le nombre maximal de tables dans un DataSet ?
    Par Philorix dans le forum Accès aux données
    Réponses: 6
    Dernier message: 11/09/2006, 14h18
  5. Réponses: 3
    Dernier message: 24/10/2005, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo