Maison  >  Article  >  développement back-end  >  Créez des binaires d'essai ou commerciaux et modifiez le comportement d'exécution en conséquence

Créez des binaires d'essai ou commerciaux et modifiez le comportement d'exécution en conséquence

王林
王林avant
2024-02-09 13:39:08927parcourir

Créez des binaires dessai ou commerciaux et modifiez le comportement dexécution en conséquence

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.

Contenu des questions

Construire

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

Code source

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>

Question

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.

Solution de contournement

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer