0

我试图按照这篇文章的说明进行操作,但我无法理解一些海报说明是如何工作的。

我希望能够使用预先编写的 bash 脚本打包应用程序,然后执行它,但不要从第 4 步开始。


帖子写道:

4. 同样在您的 AppleScriptObjC 脚本中,在适当的地方添加以下内容:

    property pathToResources : "NSString"  -- works if added before script command

5. 在适当的情况下,还在您的 AppleScriptObjC 脚本中添加以下内容:

    set yourScript to pathToResources & "/yourScriptFile.sh" 
    -- gives the complete unix path
    -- if needed, you can convert this to the Apple style path:
    set yourScriptPath to (((yourScript as text) as POSIX file) as alias)`

6.顺便说一句,您可以使用打开文件进行读取

    tell application "Finder"
        open yourScriptPath
    end tell

问题:

  1. 我在哪里添加行:

    property pathToResources : "NSString"
    
  2. 我要添加以下哪一项,在哪里添加?

    set yourScript to pathToResources & "/yourScriptFile.sh" 
    

    或者

    set yourScriptPath to (((yourScript as text) as POSIX file) as alias)
    
  3. 如何执行脚本本身?提及As an aside, you could then open the file for read using仅涵盖 Apple 样式路径,不涵盖使用上述样式。


任何人都可以为我阐明这一点,或者发布一个AppDelegate.applescript文件的静态副本,以显示原始海报如何要求使用基本代码?我已经尝试了他的方法,并在过去 3 周内浏览了互联网,但无济于事。我不想将特定工具的所有代码从 bash 脚本转换为 AppleScript,因为这需要大量工作。

我只需要知道如何在我的应用程序中引用脚本文件(例如myBashScript.sh),该脚本文件将驻留在应用程序中并在编译时由 Xcode 包含。

4

2 回答 2

1

我认为你应该使用 command path to resource <specifiedResource>

见标准添加,path to resource

您可以通过set myVariableName to path to resource "myBashScript.sh"或仅使用命令而不是您的属性来设置它,以便它始终指向正确的位置(用户可以在运行时移动您的应用程序......哈哈)。


添加:

我在我的 AppleScript-Application 中这样做了:

on run_scriptfile(this_scriptfile)
    try
        set the script_file to path to resource this_scriptfile
        return (run script script_file)
    end try
    return false
end run_scriptfile

每当我想运行捆绑在我的应用程序中的脚本时,我都会这样做:

if my run_scriptfile("TestScript.scpt") is false then error number -128

run_scriptfile(this_scriptfile)true当一切正常时返回。

于 2013-11-03T14:27:20.527 回答
0

我最终将所有信息汇总在一起,现在有了解决方案。


这考虑了以下事实:

firstScript = 指向名为 scriptNumberOne.sh 的脚本的变量名称
scriptNumberOne.sh = 我嵌入到我的应用程序中运行的脚本
ButtonHandlerRunScript_ = Xcode中接收到的操作的名称
pathToResources = 指向我的内部资源文件夹的变量应用程序,无论其当前位置如何

AppDelegate.applescript使用此信息,下面是我的 AppleScriptObjC Xcode 项目中的香草副本:

script AppDelegate
property parent : class "NSObject"
property pathToResources : "NSString"

on applicationWillFinishLaunching_(aNotification)
    set pathToResources to (current application's class "NSBundle"'s mainBundle()'s resourcePath()) as string
end applicationWillFinishLaunching_

on ButtonHandlerRunScript_(sender)
    set firstScript to pathToResources & "/scriptNumberOne.sh"
    do shell script firstScript
end ButtonHandlerRunScript_

on applicationShouldTerminate_(sender)
    -- Insert code here to do any housekeeping before your application quits 
    return current application's NSTerminateNow
end applicationShouldTerminate_

end script
于 2013-11-05T09:24:00.797 回答