Hi Mark,

The attached example script does what you describe. It packs with PerlApp no 
problem for me.
It is difficult to help further without seeing the code that breaks.

Perhaps you could alter the example to look more like your app in terms of 
loading controls, hiding / showing etc. and see if you can produce same problem?

Regards

Mark


Mark Swayne wrote:
> Mark,
> 
> 1.  Yes it is.  I just doubled checked.
> 2.  I'm not sure what it is.  I believe it is one of the many dlls
> PerlApp creates.  I'm not sure what tool you are using to inspect dlls,
> and I can't find the entry for the debug library.  I did find out that
> it depends on the 3 .*wxperl dlls as well as perl58.dll.
> 
> The list of functions includes a long list of wxEVT.* constants and the
> names of various controls, and it exports _boot_Wx and boot_Wx.  The dll
> also contains quite a few resources: icons, cursors and so forth.  I
> think the file is PerlApp's wrapped up version of Wx.pm.
> 
> If there's a specific tool I can to get a more definitive answer for
> you, I am happy to use it.  I can also send you the dll if that will help.
> 
> Further experimentation with my code, shows that in one case, the app
> will close cleanly.  I'll describe a bit of my app below, as well as the
> single case where cleanup works.
> 
> My application is along the lines of a "Wizard"-it guides the user
> through a series of screens and then exits.  I am not using the wxWizard
> class, becuase I needed more control of presentation than it afforded. 
> I display different pages of the wizard by showing and hiding different
> children of a sizer that contains each page.
> If I close the application without changing pages, cleanup happens as
> expected.  However as soon as I move to a different screen, the cleanup
> fails, even if I move back to the first screen.
> 
> Thank you,
> 
> --Mark Swayne
> 
> Mark Dootson wrote:
>> Hi,
>>
>> I have tested all wxPerl XS modules and all seems to be OK. I can't
>> reproduce the problem.
>>
>> The only things left to check are:
>>
>> 1) 'use Wx::Perl::Packager;' really is the first line in your script.
>>
>> 2) In the files left behind when the app exits, what is
>> a25e484f72ddea79baa955627d488a39.dll ?
>>
>> You should be able to take a look at the file contents and tell.
>> If it is an ActivePerl dll, you can tell by the last entry in the file
>> which is the location of the debug library.
>>
>> If it is one of the gcc built wxPerl dlls, it should be obvious from
>> the file content.
>>
>>
>> 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
>>>>>             
>>>>
>>>>
>>>>         
>>
>>
>>
>>
>>   
> 

Attachment: wizard.pl
Description: Perl program

Reply via email to