L'éditeur php vous apprend à créer des binaires d'essai ou commerciaux et à modifier le comportement d'exécution en conséquence. Que ce soit pour protéger les droits d'auteur d'un logiciel ou pour fournir une version d'essai, la création de binaires est une étape importante. En modifiant le comportement d'exécution, certaines limitations fonctionnelles ou contrôles peuvent être obtenus. Cet article passe en revue les étapes de base de la création d'un binaire et donne quelques exemples de modifications courantes du comportement d'exécution. Suite à cet article, vous maîtriserez les techniques de création de binaires pour ajouter plus de valeur et de protection à vos produits logiciels.
J'ai ceci Makefile
pour construire un binaire pour une utilisation d'essai et commerciale :
BINARY_NAME=App.exe trial: ENV_BUILD=trial go build -o ${BINARY_NAME} comme: ENV_BUILD=comme go build -o ${BINARY_NAME} clean: go clean rm ${BINARY_NAME} prepare: go mod tidy
Dans mon code source, j'ai une assertion Essai et Commercialcode source limité :
<code>package permit import "fmt" func Trial() (bool, error) { fmt.Println("You are using a limited trial release.") // ... // Assert limitations... } func Comme() (bool, error) { fmt.Println("You are using the unlimited commercial release.") // ... } </code>
Je prévois d'appeler les deux fonctions ci-dessus au moment de l'exécution comme suit :
<code>package main import "permit" // ... var builtTrial bool // TODO: Best way to detect if the built has been trial var builtComme bool // TODO: Best way to detect if the built has been commercial if builtTrial { permitted, err := permit.Trial() } else if builtComme { permitted, err := permit.Comme() } // ... </code>
Quelle est la meilleure pratique pour détecter au moment de l'exécution si un binaire est construit en tant que Trial ou Commercial ? J'ai l'impression de ne pas connaître les outils standard disponibles pour ce faire.
En fin de compte, j'ai continué et j'ai utilisé Go pour créer la méthode tag :
Fichier permitbuild_Trial.go
:
<code>//go:build trial package permit var buildType = "trial" </code>
Fichier permitbuild_commercial.go
:
<code>//go:build commercial package permit var buildType = "commercial" </code>
Ensuite, je peux avoir des déclarations comme celle-ci :
<code>package permit // ... if buildType == "trial" { fmt.Println("You are using a limited trial release.") return nil } else if buildType == "commercial" { fmt.Println("You are using the unlimited commercial release.") return nil } else { return fmt.Errorf("build type is neither trial nor commercial.") } </code>
La finale Makefile
est :
BINARY_NAME=App.exe trial: go build -tags trial -o ${BINARY_NAME} commercial: go build -tags commercial -o ${BINARY_NAME} clean: go clean rm ${BINARY_NAME} prepare: go mod tidy
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!