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

コマンドを使用する必要があると思いますpath to resource <specifiedResource>

標準追加を参照してくださいpath to resource

プロパティの代わりにコマンドで設定するset myVariableName to path to resource "myBashScript.sh"か、コマンドを使用して、常に正しい場所を指すようにすることができます(ユーザーは実行中にアプリを移動できます...笑)。


添加:

私はAppleScriptアプリケーションでそのようにしました:

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 =私の内部 Resources フォルダーを指す変数現在の場所に関係なく、アプリケーション

この情報を使用して、以下は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 に答える