Would it be possible to allow Xtend to install an external into an open project?
Okay here's the problem...
The copy is failing because the relevant script is not detecting that the target project is open due to a problem in the updated fileBusy() XFcn.
The old version of fileBusy() worked only on classic MacRoman 31-character file names. About seven years ago I updated it and a bunch of other externals to support long file names. At the same time I changed how this external works. Originally it only reported whether the data fork was open, and determined this by the old primitive and expensive method of actually trying to open it.
Carbon includes a more modern API for testing whether one or more forks of a file are open which supports long file names. You create an FSRef to the file, then use that to ask for its catalog info. The returned structure has separate flags that are supposed to indicate whether the data fork and resource fork (if any) are open. The newer fileBusy reports the value of these flags back to the scripter.
Unfortunately it seems that despite being amply documented and widely recommended, and unbeknownst to me and apparently everyone on the Carbon mailing list, this API does not actually work! No matter how or under what conditions you request them, the relevant flags of the catalog info structure are never actually set...
For some reason though Scott never updated Xtend to use the new fileBusy() internally until the last beta, so this issue was never detected.
I'll put together another update to fileBusy that supports long filenames but goes back to the old method of trying to open the file's forks with write permission. This has its own issues of course (e.g., it won't work on files you don't have permission to open) but I can't really think of another option...
Thanks,
-Mark