Hello Richard, Thanks for posting your solution. I ran into the same issue a while back. I'm looking forward to being able to improve my code now.
Scott Morrow Elementary Software (Now with 20% less chalk dust!) web http://elementarysoftware.com/ email [email protected] ------------------------------------------------------ On Dec 18, 2010, at 7:15 AM, Richard Gaskin wrote: > If any of you ever need to do anything like this, the solution turned out to > be quite simple: > > I noticed that I could use the same "delete folder" command from within LC to > delete the folder in question, just not from the app that originates in the > problem folder. > > Since the OS error is 32 (obtained from LC's sysError function, a godsend for > anything related to file I/O), it occurred to me that the issue is that the > deletion process is beginning with an app that resides in that folder, and > therefore is using that folder as the current working directory. Apparently, > even though it quits before the copy in temp takes over, because the original > copy in that application folder is what launched the app in temp, the current > working directory had not changed, and the OS was simply doing its job of > preserving objects in use. > > So the fix is a one-liner, added just before the original app launches the > copy in the temp folder: > > set the directory to tTempFolder > > tTempFolder is obtained with LC's specialFolderPath("temporary"), and used to > create the file name of the copy of the app that does the actual uninstall. > > By changing the working directory before launching the copy, the original > folder in Program Files is now free to be deleted. Works a treat. > > -- > Richard Gaskin > Fourth World > LiveCode training and consulting: http://www.fourthworld.com > Webzine for LiveCode developers: http://www.LiveCodeJournal.com > LiveCode Journal blog: http://LiveCodejournal.com/blog.irv > > Yesterday I wrote: > >> I'm making an uninstaller for one of my apps on Windows, and >> everything's working swell except for one detail: >> >> I can delete all files and folders related to the install with ease, but >> when I try to delete the application folder sysError returns 32, which >> means it's in use by another process. >> >> Here's the setup: >> >> The uninstaller works as we're required to do on Windows: when launched >> it makes a copy of itself into the temp folder, and launches that copy >> after which the original quits. We have to do that because of course an >> app can't delete itself. The copy has the UI that the user clicks to >> start the uninstall. >> >> That copy in temp works great, and clears out everything, even the >> original uninstaller that launched it. >> >> The one thing it can't do is delete the folder the app was originally >> in, which is in the Program Files directory, e.g.: >> >> C:\Program Files\MyApp\ >> >> It seems weird to me that I can so easily delete all the contents of >> that folder, even all the nested subfolders that were in it, yet not the >> folder itself. >> >> And yes, I've checked: the folder is indeed empty. >> >> Even weirder, I can open LC afterward and run this in the Message Box: >> >> delete folder "C:/Program Files/MyApp/" >> >> ...and it deletes as expected without complaint. >> >> My first hunch was that since the original uninstaller app is launching >> the one doing the deleting, maybe I could add another layer of >> misdirection by having a copy of that app make another app in temp just >> to delete the damn folder. No go, same error 32. >> >> Any of you come across something like this before? How did you get >> around it? > > > _______________________________________________ > use-livecode mailing list > [email protected] > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
