2016-07-05 6 views
0

私は、httpd/php/mysqlを制御するための小さなスクリプトを作成し、XCodeを使用してこのスクリプトへのインターフェイスを作成してリンクしました。すべて正常に動作します。問題は、赤い円のボタンがクリックされた後にアプリケーションウィンドウを閉じるようにしようとしていて、起きていないことです。アプリは稼動し続け、ウィンドウのみが閉じられます。Applescript + Xcode "applicationShouldTerminateAfterLastWindowClosed_(送信者)"が動作しない

私が使用して試してみました:

applicationShouldTerminateAfterLastWindowClosed_(sender) 

スクリプト全体がこれです:@vadianが言ったように

script AppDelegate 

#### PROPERTY LIST #### 
    property parent : class "NSObject" 
    property startApache : missing value 
    property restartApache : missing value 
    property stopApache : missing value 
    property editConfig : missing value 
    property editVHosts : missing value 
    property openDir : missing value 
    property resetConfig : missing value 
    property editPHP : missing value 
    property resetPHPConfig : missing value 
    property startMYSQL : missing value 
    property stopMYSQL : missing value 
    property restartMYSQL : missing value 
    property openDirMYSQL : missing value 
    property resetMYSQL : missing value 

#### APACHE CMDs #### 
    on startApache_(sender) 
     do shell script "/usr/sbin/apachectl start" with administrator privileges 
    end startApache_ 

    on restartApache_(sender) 
     do shell script "/usr/sbin/apachectl restart" with administrator privileges 
    end restartApache_ 

    on stopApache_(sender) 
     do shell script "/usr/sbin/apachectl stop" with administrator privileges 
    end stopApache_ 

    on editConfig_(sender) 
     do shell script "open -a /Applications/BBEdit.app /private/etc/apache2/httpd.conf" 
    end editConfig_ 

    on editVHosts_(sender) 
     do shell script "open -a /Applications/BBEdit.app /private/etc/apache2/extra/httpd-vhosts.conf" 
    end editVHosts_ 

    on openDir_(sender) 
     do shell script "open /Library/WebServer/Documents/" 
    end openDir_ 

    on resetConfig_(sender) 
     display dialog "Are you sure you want to reset the httpd.conf to it's default settings?\n\n This cannot be undone!" with icon stop with title "Reset Configuration File" 
     do shell script "/usr/sbin/apachectl stop" with administrator privileges 
     do shell script "cp /private/etc/apache2/httpd.conf.pre-update /private/etc/apache2/httpd.conf ; cp /private/etc/apache2/extra/httpd-vhosts.conf.default /private/etc/apache2/extra/httpd-vhosts.conf" with administrator privileges 
    end resetConfig_ 

#### PHP CMDs #### 
    on editPHP_(sender) 
     do shell script "open -a /Applications/BBEdit.app /etc/php.ini" 
    end editPHP_ 

    on resetPHPConfig_(sender) 
     display dialog "Are you sure you want to reset the php.ini to it's default settings?\n\n This cannot be undone!" with icon stop with title "Reset Configuration File" 
     do shell script "cp /etc/php.ini.default /etc/php.ini" with administrator privileges 
    end resetPHPConfig_ 

#### MYSQL CMDs #### 
    on startMYSQL_(sender) 
     do shell script "/usr/local/bin/mysql.server start" with administrator privileges 
    end startMYSQL_ 

    on restartMYSQL_(sender) 
     do shell script "/usr/local/bin/mysql.server restart" with administrator privileges 
    end restartMYSQL_ 

    on stopMYSQL_(sender) 
     do shell script "/usr/local/bin/mysql.server stop" with administrator privileges 
    end stopMYSQL_ 

    on openDirMYSQL_(sender) 
     do shell script "open /usr/local/var/mysql/" 
    end openDirMYSQL_ 

    on resetMYSQL_(sender) 
     display dialog "Are you sure you want to reset ALL MySQL databases to their default?\n\n This cannot be undone!" with icon stop with title "Reset All Databases" 
     display dialog "Type the new root password" default answer "" with hidden answer 
     set root_pass to text returned of result 
     if root_pass = "" then 
      display dialog "Root password cannot be blank!" buttons {"Cancel"} with icon Caution 
      error number -128 
     else 
      display dialog "MySQL DB will be recriated in the background.\n\nClick on reset and wait." buttons {"Cancel","Reset"} 
      do shell script "/usr/local/bin/mysql.server stop" with administrator privileges 
      do shell script "rm -rf /usr/local/var/mysql" with administrator privileges 
      do shell script "/usr/local/bin/mysqld --initialize-insecure" 
      do shell script "/usr/local/bin/mysql.server start" 
      do shell script "/usr/local/bin/mysqladmin -u root password '"&root_pass&"'" 
      display dialog "All done!\n\nDatabase reseted." buttons {"Ok"} with title "MySQL Reset Utility" 
     end if 
    end resetMYSQL_ 

    on applicationWillFinishLaunching_(aNotification) 
    end applicationWillFinishLaunching_ 

    on applicationShouldTerminateAfterLastWindowClosed_(sender) 
     return true 
    end applicationShouldTerminateAfterLastWindowClosed_ 

    on applicationShouldTerminate_(sender) 
     return current application's NSTerminateNow 
    end applicationShouldTerminate_ 

end script 
+1

構文は正確であり、その方法は機能するはずです。デリゲートはInterface Builderで正しく接続されていますか? – vadian

+0

おかげでvadian。うまく働いた。 –

答えて

0

:ファイルの所有者の代理人出口はアプリケーションデリゲートに接続されている場合は、見てください(あなたのスクリプト)を正しく:

File's Owner Outlet to App Delegate

ところで、これはデです新しいCocoaApplescript-Appを作成した後の不具合私はちょうどそのハンドラをコピーしました

on applicationShouldTerminateAfterLastWindowClosed_(sender) 
    return true 
end applicationShouldTerminateAfterLastWindowClosed_ 

スクリプトにすべてうまくいきました!

マイケル/ハンブルク

+0

ありがとう!働いた! –

関連する問題