Betreff: So überprüfen Sie, ob das ausgeführte Skript verschlüsselt istDafür habe ich einen Wunschzettel erstellt
Betreff: So überprüfen Sie, ob das ausgeführte Skript verschlüsselt ist@pauldeen ,
Ich habe das nicht versucht, aber ich sehe, dass verschlüsselte Skripte in die Funktion Encrypted() eingeschlossen sind. Dies bedeutet, dass Sie möglicherweise ein Zielskript einschließen() und das Skript parsen können, um zu sehen, ob einer der Funktionsheader den Encrypted()-Header enthält().Dies ist eine vage Antwort, aber es könnte möglich sein.

Hier habe ich in der JMP Documentation Library.pdf die Informationen für JMP 17.0.0 gescreent.

Betreff: So überprüfen Sie, ob das ausgeführte Skript verschlüsselt ist//
// This reports if the isEncrypted function is
// encrypted, NOT some file it might be called from.
// It works because part of the JSL encryption tries
// to prevent the internals (like expressions) of
// your JSL from being converted to text that could
// be printed.
//
isEncrypted = Function( {},
{x},
x = Expr( 1 + 1 );
Char( Name Expr( x ) ) != "1 + 1";
);
write("\!n isEncrypted()=",isEncrypted(),"\!n");Betreff: So überprüfen Sie, ob das ausgeführte Skript verschlüsselt istUnsere vscode-Erweiterung kann nicht einmal wirklich verschlüsseltes Zeug aus dem Editor ausführen, es sei denn, es handelt sich um ein Include.Wenn man davon ausgehen kann, dass Verschlüsselung alles oder nichts ist, dann denke ich @Craige_Hales ist wahrscheinlich die beste Option.
Wenn es modulspezifisch sein muss, ist das schwieriger, da wir den Ausdruck nicht als Include ausführen (da die Datei manchmal nicht gespeichert wird, wäre es kein Include).
Hängt davon ab, wie Sie Bereiche einrichten.Vielleicht könnten Sie den Namen der Datei einfach hartcodieren, anstatt die includefilelist() zu verwenden?
Zum Beispiel.Ich habe ein Skript `test.jsl` erstellt
Names Default to here(1);
isEncrypted = Left(LoadTextFile("test.jsl"),9)== "//-e6.0.2"; // I had to edit this because that's what my encryption gives.
if(isEncrypted,
print("This script is encrypted"),
print("This script is not encrypted")
);
Wenn ich dieses Skript verschlüssele, dann füge es aus einem anderen Skript in vscode ein, das ich bekommen kann.

Dies ist definitiv nicht perfekt und setzt VIEL über Ihre Struktur voraus.Aber vielleicht ist das hilfreich?
So oder so habe ich ein Problem in der gemacht GitLab-Repository
@ben_ph vielleicht fällt dir ein besserer workaround ein?
Betreff: So überprüfen Sie, ob das ausgeführte Skript verschlüsselt istDanke allen für eure Vorschläge! Mein Ziel war es, Entwicklungsarbeit in VSCode zu leisten und das Ganze dann zu verschlüsseln und in einem Add-In zu verpacken. Hier geht es also darum, zu prüfen, ob die Hauptdatei verschlüsselt ist, wenn sie direkt in JMP oder im Entwicklungsmodus ausgeführt wird, während sie sich noch in VS Code befindet. Die Lösung von Craige gibt mir die Funktionalität, nach der ich gesucht habe!
Betreff: So überprüfen Sie, ob das ausgeführte Skript verschlüsselt istVerlassen Sie sich vorsichtig auf die Verschlüsselung – es ist ziemlich einfach zu schlagen, es sei denn, Sie verwenden Funktionen – wie in, eine verschlüsselte Datei, die eine Funktion und nichts anderes ist, ist ziemlich sicher, aber wenn es sich um Klassen oder nur um ein generisches Skript handelt, ist es das ziemlich einfach, das OG-Skript herauszubekommen.
So überprüfen Sie, ob das laufende Skript verschlüsselt istVon einem laufenden Skript aus möchte ich prüfen, ob das Skript verschlüsselt ist oder nicht. Dadurch soll das Verhalten zwischen Entwicklungsversionen und Release-Versionen eines Skripts getrennt werden, ohne dass Variablen im Code geändert werden müssen.Also so etwas wie:
If( !Script is encrypted(),
//Do bit of code for development version
,
//Do bit of code for release version
)
Eine Möglichkeit besteht darin, zu überprüfen, ob das Skript mit beginnt „//-e12.1“, das bei allen verschlüsselten Skripten ganz oben zu stehen scheint.
Left(LoadTextFile(IncludeFileList()[1]),8)== "//-e12.1";
Dies funktioniert jedoch nicht mit VSCode, da Folgendes angezeigt wird:

Sie führen also immer den Freigabecode aus.
Automatisierung und Skripterstellung