I just fired up Xojo for the first time after updating to the developer version of High Sierra a couple of weeks ago and noticed that when I quit an application in the IDE (either correctly by using the Quit menu, or forcefully) the [appname].debug file doesn’t get automatically deleted, and requires me manually removing it before I can run in the IDE again. I’m not sure if this is High Sierra related or not - I’m not in the office and don’t have access to my other computers.
The icons aren properly deleted if you peek into the remaining app. And the updated IDE script to kill the dang thing:
[code]‘kill app if running
dim theCommand as String
theCommand = “ps -axwwopid,command | grep '” + PropertyValue(“App.MacOSXAppName”) +"’ | grep -v grep | awk ‘{print $1}’"
dim theResult as String
theResult = DoShellCommand(theCommand)
if theResult <> “” then
theCommand = "kill " + theResult
theResult = DoShellCommand(theCommand)
end if
'get path and app name
dim appNameForShell as string = PropertyValue(“App.MacOSXAppName”) + “.debug.app”
appNameForShell = getShellString(appNameForShell)
dim CountSlashes as Integer = CountFields(ProjectShellPath, “/”)
dim ProjectName as string = NthField(ProjectShellPath, “/”, CountSlashes)
dim ProjectPath as String = Left(ProjectShellPath, Len(ProjectShellPath) - Len(ProjectName))
The icons aren properly deleted if you peek into the remaining app. And the updated IDE script to kill the dang thing:
[code]‘kill app if running
dim theCommand as String
theCommand = “ps -axwwopid,command | grep '” + PropertyValue(“App.MacOSXAppName”) +"’ | grep -v grep | awk ‘{print $1}’"
dim theResult as String
theResult = DoShellCommand(theCommand)
if theResult <> “” then
theCommand = "kill " + theResult
theResult = DoShellCommand(theCommand)
end if
'get path and app name
dim appNameForShell as string = PropertyValue(“App.MacOSXAppName”) + “.debug.app”
appNameForShell = getShellString(appNameForShell)
dim CountSlashes as Integer = CountFields(ProjectShellPath, “/”)
dim ProjectName as string = NthField(ProjectShellPath, “/”, CountSlashes)
dim ProjectPath as String = Left(ProjectShellPath, Len(ProjectShellPath) - Len(ProjectName))
function getShellString(theString as String) as string
Return ReplaceAll(theString, " ", "\ ")
end Function[/code][/quote]
Thank you, I added this to my compile script and it works quite well, hopefully they can get this fixed so that we don’t need the work around.
Same thing here. Whether running Real Studio or Xojo, it’s not deleting the debug file. Every time before I can run, I have to delete the debug file or I will get a compilation error.
I had forgotten to do the lsof thing:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
iconservi 35313 beatrixwillius txt REG 1,5 255172 8610053725 /Users/beatrixwillius/Documents/Development/Mail Archiver/code current/Mail Archiver X.debug.app/Contents/Resources/App.icns
How can I whack iconservices into behaving? Or is this a MacOS bug?
For building the main projects this isn’t much of a problem because I delete the whole goulash anyway. But for testing or building only one app this problem really is a nuisance.
Not sure since when I debug the IDE it doesn’t do this
So I’m not sure what the root cause of iconservices holding onto this fie is
But, this isn’t the first time iconservices has caused issues for people
Google for “iconservicesagent” and you’ll find lots of questions about memory usage, cpu usage, etc over the years
Same here. After reading the user guide, I did the following steps:
Add a new script via Insert > Build Step > Script.
Copy the mentioned code to the script.
Drag the script in the navigator to macOS in the Build Settings section of the navigator.
Your script has to be above the Build entry in order to be executed before building; drag it there, if it is unter the Build entry.
This works perfectly for running a debug application, but I have the additional problem, that my application is not built as long as there is already an application build in the Builds folder. So I would like to add some lines of code to my build script to remove the Builds folder of my application before building it again.
By now I have no working result. Is there a way to extend Beatrix’ script for that?
on run
set DocumentsFolder to path to documents folder as string
set CodeFolder to DocumentsFolder & “xxxxx path to main projects folder”
set theFolder to (alias CodeFolder)
doSomethingWith(theFolder)
end run
on doSomethingWith(aFolder)
tell application “Finder”
set subFolders to every folder of aFolder
repeat with eachFolder in subFolders
my doSomethingWith(eachFolder)
end repeat
end tell
try
tell application "Finder"
delete (every item of aFolder whose name ends with "app" and name starts with "your app name")
delete (every item of aFolder whose name ends with "dmg")
end tell
on error error_message number error_number
display alert ("YIKES! Something's wrong!") message error_message & (" Error number ") & error_number & "."
end try
end doSomethingWith[/code]
This is called in an IDE communicator script:
[code]dim basePath as string
basePath = “/Users/xxx/Documents/xxx”
'delete old apps and dmg
dim theCommand as string = "osascript " + basePath + “xxxxxxxxx”
dim theResult as String = DoShellCommand(theCommand)[/code]
Change the paths and in the AppleScript the name of the app. Or take the condition out if you think that you don’t need it.
@Derk Jochems: not a setting. Seems to be a problem with the macOS hanging on to the icon file. I suspect that this is also the reason why quitting the debug app takes so very very long on High Sierra.