Re: 如何檢查運行腳本是否加密我為此創建了一個願望清單項目
Re: 如何檢查運行腳本是否加密@保丁,
我沒試過這個,但我看到加密的腳本包含在 Encrypted() 函數中。 這意味著您可以 include() 目標腳本,解析腳本以查看其中一個函數標頭是否包含 () Encrypted() 標頭。這是一個模糊的回應,但它可能是可能的。

這是我在 JMP Documentation Library.pdf 中截取的 JMP 17.0.0 信息的位置。

Re: 如何檢查運行腳本是否加密//
// 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");Re: 如何檢查運行腳本是否加密我們的 vscode 擴展甚至不能真正從編輯器中運行加密的東西,除非它是一個 include。如果可以安全地假設加密是全有或全無,那麼我認為@Craige_Hales可能是最好的選擇。
如果您需要它是特定於模塊的,那就更難了,因為我們不會將表達式作為包含運行(因為有時文件沒有保存,所以它不會是包含)。
取決於您如何設置範圍。也許您可以只對文件名進行硬編碼而不是使用 includefilelist()?
例如。我創建了一個腳本 `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")
);
如果我加密該腳本,然後將其從另一個腳本包含在我可以獲得的 vscode 中。

這絕對不是完美的,並且對您的結構有很多假設。但這也許有用嗎?
無論哪種方式,我都在GitLab 倉庫
@ben_ph也許你能想到更好的解決方法?
Re: 如何檢查運行腳本是否加密謝謝大家的建議! 我的目標是在 VSCode 中進行開發工作,然後將整個內容加密並打包到一個插件中。 所以這是關於檢查主文件是否加密,當它直接在 JMP 中運行或在開發模式下仍在 VS Code 中運行時。 Craige 的解決方案為我提供了我一直在尋找的功能!
Re: 如何檢查運行腳本是否加密小心依賴加密——除非你使用函數,否則它很容易被破解——比如,一個加密文件是一個函數,沒有其他東西是非常安全的,但如果它是類或只是一個通用腳本,它是很容易得到 OG 腳本。
如何檢查運行腳本是否加密我想從正在運行的腳本檢查腳本是否加密。 這是為了區分腳本的開發版本和發布版本之間的行為,而無需更改代碼中的變量。所以像這樣:
If( !Script is encrypted(),
//Do bit of code for development version
,
//Do bit of code for release version
)
一種方法是檢查腳本是否以“//-e12.1”似乎位於所有加密腳本的頂部。
Left(LoadTextFile(IncludeFileList()[1]),8)== "//-e12.1";
但這在 VSCode 中不起作用,因為它給出了:

所以你將始終運行發布代碼。
自動化和腳本編寫