Maison > développement back-end > Golang > le corps du texte

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

王林
Libérer: 2024-02-09 13:39:08
avant
960 Les gens l'ont consulté

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
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

Fichier permitbuild_commercial.go :

<code>//go:build commercial

package permit

var buildType = "commercial"
</code>
Copier après la connexion

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>
Copier après la connexion

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
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal