Article
· Nov 17, 2023 3m de lecture

Comment cacher le programme source

Rubrique Questions fréquentes (FAQ) d'InterSystems

Pour les routines (*.mac)

Vous pouvez masquer la source en exportant/important uniquement le fichier *.obj généré après la compilation du programme source.

L'exemple d'exécution de la commande spécifie EX1Sample.obj et EX2Sample.obj, qui sont générés par la compilation de EX1Sample.mac et EX2Sample.mac, comme cibles d'exportation et les exporte dans le deuxième fichier argument.

Après avoir changé d'espace de noms, j'utilise le fichier XML exporté pour effectuer l'importation.

USER>do $system.OBJ.Export("EX1Sample.obj,EX2Sample.obj","D:\routine.xml")       
Exporting to XML started on 10/23/2023 11:33:49
Exporting object code: EX1Sample.obj
Exporting object code: EX2Sample.obj
Export finished successfully.
 
USER>zn "USER2"  //change namespace
USER2>do $system.OBJ.Load("D:\routine.xml")
 
Load started on 10/23/2023 11:34:26
Loading file D:\routine.xml as xml
Imported object code: EX1Sample
Imported object code: EX2Sample
Load finished successfully.
 
USER2>

Pour les classes (*.cls)

Pour les classes, après avoir exporté/importé le fichier *.cls en XML, exécutez MakeClassDeployed() sur le serveur.

Cependant, dans les versions relativement récentes, après l'exécution de MakeClassDeployed(), le fichier source (*.cls) est uniquement mis en mode de déploiement (il ne peut pas être édité), et peut uniquement être visualisé.

Si vous souhaitez également le rendre invisible, définissez la propriété Hidden (caché) de la classe après avoir exécuté MakeClassDeployed() (définissez l'attribut de propriété Hidden=True (caché=vrai)).

Voici un exemple d'exécution de commande :

USER>do $system.OBJ.Export("WH.Color.cls,WH.Size.cls","D:\test.xml")
 
Exporting to XML started on 10/23/2023 11:39:24
Exporting class: WH.Color
Exporting class: WH.Size
Export finished successfully.
 
USER>zn "USER2"
USER2>do $system.OBJ.Load("D:\test.xml","ck")
 
Load started on 10/23/2023 11:39:48
Loading file D:\test.xml as xml
Imported class: WH.Color
Imported class: WH.Size
Compiling 2 classes
Compiling class WH.Size
Compiling class WH.Color
Compiling table WH.Size
Compiling routine WH.Color.1
Compiling routine WH.Size.1
Load finished successfully.
 
USER2>do $system.OBJ.MakeClassDeployed("WH.Size")
 
USER2>

Pour les fichiers CSP (*.csp)

Pour les fichiers CSP, copiez *.csp et insérez-le dans le dossier CSP cible.

Après la compilation sur le serveur, désactivez la compilation automatique dans les paramètres CSP, puis supprimez le fichier *.csp et exécutez la fonction MakeClassDeployed().

Voici un exemple d'exécution.

1) Après avoir copié le fichier CSP, insérez-le dans le répertoire CSP du serveur et compilez-le.

TEST>do $SYSTEM.CSP.LoadPageDir("/csp/test")

2) Choisissez NON pour "Auto compile" (la "Compilation automatique") dans les paramètres du chemin d'accès à l'application web

[Version 2013.1 ou ultérieure] [Portail d'administration] > [Gestion du système] > [Sécurité] > [Applications] > [Applications Web] > Lien vers le nom de l'application concerné

[Version 201.1 - Version 2012.2] [Portail de gestion] > [Gestion du système] > [Sécurité] > [Applications] > [Applications Web] > [Modifier] le nom de l'application concerné

[Version 2010.2 or earlier] [Portail de gestion du système] > [Système] > [Gestion de la sécurité] > [Application CSP] > [Modifier] le nom de l'application concerné

3) Exécutez MakeClassDeployed()

 *Exemple lors de la copie du fichier cspsample.csp

TEST>do $system.OBJ.MakeClassDeployed("csp.cspsample")

Si vous ne souhaitez pas du tout partager la source (même si elle est immédiatement supprimée), vous pouvez procéder de la manière suivante :

1. Sur votre système (avec le code source), exécutez :

set p=##class(%Studio.Project).%New()
do p.AddItem("WH.Color.cls")
do p.AddItem("WH.Size.cls")
do p.DeployToFile("c:\test\app.xml",,1)

Ainsi, une exportation XML sera créée avec le code objet uniquement, sans le code source.

2. Transférez le fichier dans un système cible et exécutez :

set sc=##class(%Studio.Project).InstallFromFile("c:\test\app.xml")
Discussion (0)0
Connectez-vous ou inscrivez-vous pour continuer