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 >>> >> >> >> >> >> >
