Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen Sie Test- oder kommerzielle Binärdateien und ändern Sie das Laufzeitverhalten entsprechend

Erstellen Sie Test- oder kommerzielle Binärdateien und ändern Sie das Laufzeitverhalten entsprechend

王林
王林nach vorne
2024-02-09 13:39:08929Durchsuche

Erstellen Sie Test- oder kommerzielle Binärdateien und ändern Sie das Laufzeitverhalten entsprechend

Der PHP-Editor zeigt Ihnen, wie Sie Test- oder kommerzielle Binärdateien erstellen und das Laufzeitverhalten entsprechend ändern. Ob es darum geht, das Urheberrecht der Software zu schützen oder eine Testversion bereitzustellen, die Erstellung von Binärdateien ist ein wichtiger Schritt. Durch die Änderung des Laufzeitverhaltens können einige funktionale Einschränkungen oder Kontrollen erreicht werden. In diesem Artikel werden die grundlegenden Schritte zum Erstellen einer Binärdatei erläutert und einige Beispiele für häufige Änderungen des Laufzeitverhaltens aufgeführt. Im Anschluss an diesen Artikel beherrschen Sie die Techniken zum Erstellen von Binärdateien, um Ihren Softwareprodukten mehr Wert und Schutz zu verleihen.

Frageninhalt

Build

Ich habe dies Makefile, um eine Binärdatei für Testversionen und kommerzielle Nutzung zu erstellen:

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

Quellcode

In meinem Quellcode habe ich eine Behauptung Testversion und Kommerziellbegrenzter Quellcode:

<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>

Ich habe vor, die beiden oben genannten Funktionen zur Laufzeit wie folgt aufzurufen:

<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>

Frage

Was ist die beste Vorgehensweise, um zur Laufzeit zu erkennen, ob eine Binärdatei als Testversion oder Kommerziell erstellt wurde? Ich habe das Gefühl, dass mir die dafür verfügbaren Standardtools nicht bekannt sind.

Workaround

Letztendlich habe ich Go verwendet, um die Tag-Methode zu erstellen:

Datei permitbuild_Trial.go:

<code>//go:build trial

package permit

var buildType = "trial"
</code>

Datei permitbuild_commercial.go:

<code>//go:build commercial

package permit

var buildType = "commercial"
</code>

Dann kann ich Aussagen wie diese haben:

<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>

Das Finale Makefile ist:

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

Das obige ist der detaillierte Inhalt vonErstellen Sie Test- oder kommerzielle Binärdateien und ändern Sie das Laufzeitverhalten entsprechend. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen