Windows error 32 - SOLVED

Scott Morrow scott at elementarysoftware.com
Thu Jan 6 22:09:47 EST 2011


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     scott at elementarysoftware.com
------------------------------------------------------





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
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list