applescript(10.9)不能在类型说明符中使用别名



下面的applescript将AppUninstaller.scpt作为文件夹动作注册到Trash文件夹。注册文件夹操作脚本在Mac OSX 10.7和10.8中工作正常。

在10.9,我得到错误"附加错误系统事件得到了一个错误:不能使别名"Macintosh HD:Users:[username]:。

执行此语句时发生错误

 attach action to _trashFolder using _uninstallerScriptPath

完整的脚本如下。

on run
    tell utils
        init()
        registerFolderAction()
    end tell
end run

script utils
      property _uninstallerScript : "AppUninstaller.scpt"
      property _resRelativePath : ":Applications:TestDemo.app:Contents:Resources:"
      property _folderActionScriptRelativePath : "Scripts:Folder Action Scripts"
      global _resPath
      global _trashFolder
      global _uninstallerScriptPath
      on init()
                  -- Setup paths
                set _trashFolder to path to trash folder
                set _uninstallerScriptPath to getUninstallerScript()
                  -- Add boot disk name to App relative path
                tell application "Finder"
                          set startupDisk to (name of startup disk)
                          set _resPath to startupDisk & _resRelativePath
                end tell
                set scriptFolderPath to getScriptPath()
             -- Copy folder action script file from appbundle to scripts folder
             copyScript()
      end init
      on registerFolderAction()
                try
                     tell application "System Events"
                          set folder actions enabled to true
                          log _uninstallerScriptPath
                          -- problem with below statement.
                          attach action to _trashFolder using _uninstallerScriptPath
                          end tell
                on error msg
                          display dialog "Attach error " & msg
                end try
      end registerFolderAction
      on getScriptPath()
                return ((path to library folder from user domain) as string) & _folderActionScriptRelativePath
      end getScriptPath
      on getUninstallerScript()
                return getScriptPath() & ":" & _uninstallerScript
      end getUninstallerScript
      -- copying the script inside app bundle into scripts folder.
      on copyScript()
                tell application "Finder"
                          set srcFile to _resPath & _uninstallerScript
                          set dstFile to my getScriptPath()
                          log "Src File " & srcFile & " dstFolder " & dstFile
                          duplicate file srcFile to dstFile with replacing
                end tell
      end copyScript
end script

看看这个错误(在我自己测试之后),似乎在mavericks之前的系统中,attach action to命令的第一个参数是别名时,被正确地强制到文件/文件夹对象说明符中。在Mavericks中,这种强制转换不会发生,并且会发生错误,因为给定的参数不是对象/类型说明符,而是别名类。attach action to的第一个参数需要是一个对象/类型说明符,这样您就可以通过在调用命令时强制强制来解决问题。

attach action to folder (_trashFolder as text) using _uninstallerScriptPath 

您可以对参数using

执行相同的操作

相关内容

  • 没有找到相关文章

最新更新