Ri: Come verificare se lo script in esecuzione è crittografatoHo creato un elemento della lista dei desideri per questo
Ri: Come verificare se lo script in esecuzione è crittografato@pauldeen ,
Non l'ho provato, ma vedo che gli script crittografati sono racchiusi nella funzione Encrypted(). Ciò significa che potresti essere in grado di includere() uno script di destinazione, analizzare lo script per vedere se una delle intestazioni della funzione contiene() l'intestazione Encrypted().Questa è una risposta vaga, ma potrebbe essere possibile.

Ecco dove all'interno di JMP Documentation Library.pdf ho catturato le informazioni da per JMP 17.0.0.

Ri: Come verificare se lo script in esecuzione è crittografato//
// 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");Ri: Come verificare se lo script in esecuzione è crittografatoLa nostra estensione vscode non può nemmeno eseguire elementi crittografati dall'editor a meno che non sia un'inclusione.Se è lecito ritenere che la crittografia sia tutto o niente, allora penso @Craige_Hales è probabilmente l'opzione migliore.
Se è necessario che sia specifico del modulo, è più difficile in quanto non eseguiamo l'espressione come un'inclusione (perché a volte il file non viene salvato quindi non sarebbe un'inclusione).
Dipende da come stai impostando gli ambiti.Forse potresti semplicemente codificare il nome del file invece di usare includefilelist ()?
Per esempio.Ho creato uno script `test.jsl`
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")
);
Se crittografo quello script, lo includo da un altro script in vscode che posso ottenere.

Questo sicuramente non è perfetto e presuppone MOLTO sulla tua struttura.Ma forse è utile?
Ad ogni modo, ho creato un problema in Repository GitLab
@ben_ph forse riesci a pensare a una soluzione migliore?
Ri: Come verificare se lo script in esecuzione è crittografatoGrazie a tutti per i vostri suggerimenti! Il mio obiettivo era svolgere il lavoro di sviluppo in VSCode, quindi crittografare e impacchettare il tutto in un componente aggiuntivo. Quindi si tratta di verificare se il file principale è crittografato, quando viene eseguito direttamente in JMP o in modalità di sviluppo mentre è ancora all'interno di VS Code. La soluzione di Craige mi offre la funzionalità che stavo cercando!
Ri: Come verificare se lo script in esecuzione è crittografatoFai attenzione alla crittografia: è abbastanza semplice da battere a meno che tu non stia usando le funzioni, come in un file crittografato che è una funzione e nient'altro è abbastanza sicuro, ma se si tratta di classi o solo di uno script generico, lo è abbastanza facile ottenere lo script OG.
Come verificare se lo script in esecuzione è crittografatoDa uno script in esecuzione vorrei verificare se lo script è crittografato o meno. Questo serve a separare il comportamento tra le versioni di sviluppo e le versioni di rilascio di uno script senza dover modificare le variabili nel codice.Quindi qualcosa del tipo:
If( !Script is encrypted(),
//Do bit of code for development version
,
//Do bit of code for release version
)
Un modo è verificare se lo script inizia con "//-e12.1" che sembra essere in cima a tutti gli script crittografati.
Left(LoadTextFile(IncludeFileList()[1]),8)== "//-e12.1";
Ma questo non funziona da VSCode in quanto fornisce:

quindi eseguirai sempre il codice di rilascio.
Automazione e scripting