I used to have my Most Used handlers in three script files. Using Load Script. They also load each other.
I moved on and changed them to code signed Script Libraries as I moved from Mojave to Monterey.
I maintain around 50 scripts for 30 users. What I see with Script Libraries is:
If a Script library is updated, every single script using this library will have to be recompiled.
The script libraries are cached on users Macs, and the old version will be used. On some instances I have to reboot in Safe Mode to get the updated script/library to be loaded in the recompiled scripts.
This is now a pain to maintain and also debugging becomes difficult; “which old version of a library is REALLY in use now”?
Will reverting back to using Load Script avoid the recompile/caching thingy?
I want to just replace an updated library and get the scripts to use those.
Is there something I can execute to flush the caching of Script Libraries other than Safe Mode boot?
This may not be related, but when editing a script where the library has change, you may need to not just compile, but you may also need to quit and relaunch Script Debugger.
I wonder if Scripts running in Fast Scripts don’t have similar issues.
No. The only thing to be aware of in Script Debugger is that if you run an open script, any libraries used by that script will be cached by AppleScript while it is open, until it is recompiled.
In older versions they do, but I think not with the latest version. But it’s something to consider when running scripts as anything other than applets.
I am very glad to hear that this is not the intended behaviour.
Maybe I am doing it wrong? I call my script libraries this way:
use AppleScript version “2.4” use scripting additions
use script “myLib.scptd” property myLib : script “myLib”
set this to myLib’s test(“that”)
I know values stored in properties once upon a time were supposed to be “saved to the script across executions”, but I use signed applications and they do not change, neither are they allowed to change – otherwise the signing would be invalid, right?
Is my use of property causing this behaviour, so I should use a better way of calling them?
Seems property values are now stored Somewhere Else. And they seem to use path to the script for relations. Even if I replace a script with a new compiled one, the properties from the old script is still used – if run from the exact same path as where the old script was. (but not when I run the script from anywhere else). This means I can edit a script, compile and test it, but when I replace it on a users Mac it may use some old properties from the old script. Slightly confusing, but it explains a lot. Thank you for your guidance.
I have had many issues with Property values sticking around seemingly forever. Wish there was a way to clear properties on the current OS via terminal or AppleScript without having to know the property variable names.