私は、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
構文は正確であり、その方法は機能するはずです。デリゲートはInterface Builderで正しく接続されていますか? – vadian
おかげでvadian。うまく働いた。 –