Hi Mark,

Wx::Perl::Packager should handle closing down as well. The 'rmtree failed' 
error on exit after the app has run OK is one of the specific cases 
Wx::Perl::Packager was built to handle.
The wxWidgets dlls have to be 'unloaded' by specific method and in a order. 
Wx::Perl::Packager handles loading and unloading the wxWidgets dlls at runtime 
in your packaged app.

I'll take a look to see if I can reproduce the problem with the versions you 
are using.

Regards

Mark

Mark Swayne wrote:
> Thank you for your prompt response, Mark.  I do use Wx::Perl::Packager,
> and it is a great help.  Without the benefit of this module, I would not
> be able to use WxPerl as a production library--the effort involved in
> producing compiled packages would too great.   It is an incredibly
> useful module, thank you also for the time you've put into developing
> and maintaining it.
> 
> I guess I wasn't clear enough in my problem description.  The 'rmtree'
> error sometimes shows up when a program crashes or dies due to missing
> libraries, and Wx::Perl::Packager would be exactly the right tool to use
> to address the issue.  This isn't what's happening in this case.  The
> packages get built and run properly, its just that they fail to clean up
> after themselves on shutdown.
> 
> After I've built the package, when I click 'Test it' to run my
> application, my app runs normally and without any problems.  When I exit
> the program, perlapp shows the 'rmtree failed' error.  When I look in
> the temp directory, I find the scratch directory PerlApp created to
> cache needed files in.  It invariably contains the same set of dlls:
> a25e484f72ddea79baa955627d488a39.dll
> mingwm10.dll
> perl58.dll
> wxbase28u_gcc_wxperl.dll
> wxmsw28u_adv_gcc_wxperl.dll
> wxmsw28u_core_gcc_wxperl.dll
> 
> When the app is running, the following dlls are present:
> 0858f617e1b241374d9f120bb26fb7b8.dll
> 0a57d12a652a9aa8a9a0b50b63eacf69.dll
> 0a5e4c87fa5c54c914abae722e8df846.dll
> 106d5d75037d32173224d1fcc756ac31.dll
> 1823e8f62785746fd29cf0b06c636600.dll
> 27c8e6827f78ba1831292105bb4b6e19.dll
> 40264fde9f2a92019910d137c9cc247d.dll
> 407508194147155aad116bbb9932f700.dll
> 465d2954d90fe6225ea61b3907c91da8.dll
> 5304c9fae7d015d0af26a6a68bdda3c7.dll
> 541cd9bc8060027290e90d3e07d19dcb.dll
> 690d4dd022c4e68f9fdfa754e2bcc404.dll
> 6c16bd625d9658445cc3dcebf15967ba.dll
> 8093d6335a3324a2d1afe442c6f3c959.dll
> 9d97b746759aac7b9b0fe180387eda8b.dll
> a07d047c3b9dd390896ae265d899a29b.dll
> a0cfb70acbca692b4e0caad1fdfc6c02.dll
> a25e484f72ddea79baa955627d488a39.dll
> ae04e4f42bab17aaf801b5d019ab471e.dll
> ae4c340263b2b4ae26334d8b3c9333dd.dll
> b0336f6abf3221f016118aeb84850b97.dll
> dc2e187d3b818b8feb5b041e4d3d9fb2.dll
> ddbdeb1a290b56117ad8fa58dd1134d5.dll
> ead249fbab5879aea60a50b9bd09d33d.dll
> f1aaa747ef35cd9d7cd122638684172e.dll
> f973edd0dd2693cdbb3dd630590f1d16.dll
> mingwm10.dll
> perl58.dll
> wxbase28u_gcc_wxperl.dll
> wxbase28u_net_gcc_wxperl.dll
> wxbase28u_xml_gcc_wxperl.dll
> wxmsw28u_adv_gcc_wxperl.dll
> wxmsw28u_aui_gcc_wxperl.dll
> wxmsw28u_core_gcc_wxperl.dll
> wxmsw28u_gl_gcc_wxperl.dll
> wxmsw28u_html_gcc_wxperl.dll
> wxmsw28u_media_gcc_wxperl.dll
> wxmsw28u_qa_gcc_wxperl.dll
> wxmsw28u_richtext_gcc_wxperl.dll
> wxmsw28u_stc_gcc_wxperl.dll
> wxmsw28u_xrc_gcc_wxperl.dll
> 
> So far I have one app that exhibits this behavior, that I can't share
> due to proprietary blah blah, and no clue how to even start producing a
> minimal, sharable test case.  I exit my program by calling Close() on
> the (only) main window, just like I do in my other wx applications, but
> for some reason with this app, I get the error.
> 
> I see I neglected to mention that I am using Alien::Wx::Widgets
> 0.32.42.5, Wx 0.79.42.6, and Wx::Perl::Packager 0.10 with Perl 5.8.8,
> build 819.
> 
> I'd appreciate any thoughts anyone has.
> 
> Thanks again,
> 
> --Mark Swayne
> 
> Mark Dootson wrote:
>> Hi,
>>
>> Try using module 'Wx::Perl::Packager'
>>
>> This should solve any problems you have with PerlApp.
>>
>> Regards
>>
>> Mark
>>
>> Mark Swayne wrote:
>>  
>>> I'm having problems with a bound application I wrote using wxperl with
>>> perlapp.  When I run my program through perlapp's "Test it" interface, I
>>> get the error message "rmtree failed because directory is not empty."
>>>
>>> When I check the temporary directory perlapp uses to cache its unpacked
>>> file ins, I can see the wx dlls have not been deleted.  I gather that
>>> this is happening because the wx dlls can't be deleted, because they
>>> haven't been unloaded from memory yet.
>>> Since this only happens with some of my perlapp projects, I have reason
>>> to hope that there is something I can do when I exit my script that will
>>> help signal the OS that I am done with the dlls and they can be
>>> unloaded.
>>>
>>> Does anyone have any suggestions?
>>>
>>> Thanks,
>>>
>>> --Mark Swayne
>>>     
>>
>>
>>
>>
>>   
> 


Reply via email to