Macos 在解压缩的AppleScript应用程序上返回错误值的路径

Macos 在解压缩的AppleScript应用程序上返回错误值的路径,macos,applescript,macos-catalina,Macos,Applescript,Macos Catalina,所以这里有一个特殊的情况。我创建了一个AppleScript应用程序,它依赖于指向我的路径命令。保存为AppleScript应用程序后,它运行良好。但是,如果您对文件进行存档/压缩,然后在下载/发送电子邮件或在另一台计算机上解压缩并再次运行,则指向我的路径不正确 例如,我创建了一个超级简单的应用程序来测试这一点: set myPath to (path to me as text) display dialog "myPath: " & myPath 保存应用程序并通过双击它从Find

所以这里有一个特殊的情况。我创建了一个AppleScript应用程序,它依赖于
指向我的路径
命令。保存为AppleScript应用程序后,它运行良好。但是,如果您对文件进行存档/压缩,然后在下载/发送电子邮件或在另一台计算机上解压缩并再次运行,则指向我的
路径不正确

例如,我创建了一个超级简单的应用程序来测试这一点:

set myPath to (path to me as text)
display dialog "myPath: " & myPath
保存应用程序并通过双击它从Finder运行它

我的报告正确:
myPath:Sierra:Users:joshbooth:Desktop:Test.app:

在我的另一台笔记本电脑上解压缩文件,然后再次运行

结果是
myPath:429EF755-2646-4249-A428-666D454E9DAD:d:测试。应用程序:

Option+单击并拖动以在同一目录中创建新副本,然后再次运行:

结果:
myPath:Macintosh HD:Users:joshbooth:Downloads:test2.app:

有什么想法发生了什么或如何防止吗?

我没有真正的“答案”,但我的信息太大,无法发表评论(而且没有其他人插话)

虽然可能还有其他情况,但至少有一个原因是下载的zip被标记为“隔离”,这导致OS X将其扩展到临时“/private/var/folders”位置(使用您看到的复杂文件夹名称,以及被隔离的扩展项,实际上是在只读文件系统上)

因此,是“下载”咬着我们,我们可以在应用程序的“com.apple.quantial”属性和终端窗口中的“xattr-l/Users/johndoe/Downloads/Test.app”(如“com.apple.quantial:0083;5f20ce0e;Safari;bfabfabf751-2ACD-4B6F-9952-9A87D45AC9D4”)中看到它,并用“xattr-dcom.apple.quantial/Users/johndoe/Downloads/test.app”

在扩展的应用程序中获取(POSIX path of(path to me as string))在删除隔离标志之前会显示类似于/private/var/folders/lh/9hl01d1n2knckzj0bxdb22lr0000gn/T/AppTranslocation/429EF755-2646-4249-A428-666D454E9DAD/d/Test.app的内容

不幸的是,由于临时路径被锁定,应用程序本身无法删除带有“xattr-d com.apple.quantial/private/var/folders…”的标志,并获得“xattr:[Errno 30]只读文件系统”,因此,我们可以用这些信息做些什么,但这些是我的发现


值得注意的是:将扩展的应用程序移动或复制到另一个文件夹会保留隔离标志设置,但会更新“路径到我”的分辨率,这在我看来是有点不一致和混乱的,因为OS X(如果有意的话,可能会破坏这种隔离标志模式),但这是一个有用的解决方法。

我无法通过在压缩前运行或不运行Mojave mini到Catalina Air复制副本来复制您的问题。您可以尝试对应用程序进行代码签名或将应用程序包中的脚本设为只读。作为一个快速修复方法,您可以尝试以磁盘映像(dmg)形式发送应用程序而不是压缩。这两台笔记本电脑运行的是同一个操作系统吗?您可能会看到zip实用程序版本的差异,或者在操作系统之间的AppleScript中出现了一些不透明的更改,这会导致混乱。