It would probably be sufficient to support PAR. Even if ActiveState gave you the free copy, it isn't likely they'd give it to everyone, so everyone is more likely to use PAR, in the long term (once it's growing pains are over). Of course, if AS does supply you a free copy, I have no objections to your support of it, along with PAR.

Looking at the global issue, I wonder if it might not be possible to create a DLL containing all the resources for a particular Win32::GUI program, and then, whether the program is running via perl.exe, or via PAR, or even Perl2Exe or PerlApp, that somehow that one DLL would be referenced for all the resource needs of the program.


On approximately 2/19/2004 2:02 AM, came the following characters from
the keyboard of Stephen Pick:

I didnt mean to suggest we start modifying the perl exe :) That would be crazy. I meant that microsoft provides certain functions that let you add, remove and update resources in an executable, you just have to pass the handle to the module who's executable file needs to have its resources played with. There are ways of finding what this handle is for the current running thread (although I'm not sure what they are right now), but I'm not sure what file it would pick up as the current running thread when running under perl.exe -- it may pick up GUI.dll, or it may pick up perl.exe. So while, say, an UpdateResource call may work in the real executable it will probably cause unexpected results when running under perl.exe. Another problem that I've yet to test is to do with the various pl -> exe converters out there. I'm not sure of PerlApp (the best, but $400, so sod that...) or Perl2Exe (also costly) but PAR executables are simply a depacker that unpacks a perl interpreter and appropriate packages to a temporary directory then runs that perl interpreter to execute your program. It's a good chance that UpdateResource commands (and even LoadBitmap et al) would not pick up the exe file that you actually executed when searching for resources, but would actually pick up the perl interpreter or GUI.dll that had been packed into the PAR executable. As a developer of Win32::GUI I'm sure ActiveState would be very happy to give me a free copy of the Perl Dev Kit to aid in my work! (yeah, right.) Steve
    -----Original Message-----
    From: [EMAIL PROTECTED]
    [mailto:[EMAIL PROTECTED] Behalf
    Of Jez White
    Sent: 19 February 2004 09:46
    To: Steve Pick; Win32-GUI
    Subject: Re: [perl-win32-gui-users] Shipping resources with your exe

    I agree with your analysis - I especially like the idea of bitmaps,
    Icons and cursors to check for resources first, and then to look at
    the file system (would solve the problem of running in "dev" mode
    with the perl command line, or running the exe direct).
How easy would it to be load other binary objects in from the exe?
    For example, having other image formats or storable created objects.
As for adding resources - I can see the benefits of having a native
    solution, but it would create massive scope to mess around with the
    perl exe:) Perhaps the first step is to point to ResHacker, with a
    step by step guide on how to use it?
jez.
        ----- Original Message -----
        From: Steve Pick <mailto:[EMAIL PROTECTED]>
        To: Jez White <mailto:[EMAIL PROTECTED]> ; Win32-GUI
        <mailto:perl-win32-gui-users@lists.sourceforge.net>
        Sent: Wednesday, February 18, 2004 10:40 PM
        Subject: Re: [perl-win32-gui-users] Shipping resources with your exe

        I'd find this functionality kinda handy. Loading resources from
        the exe is very simple, and it would not be too difficult to
        extend the Win32::GUI::Bitmap, Icon, etc. objects to accept an
        additional argument that indicates that the resource should be
        loaded from the exe rather than from a real file on disk (in
        fact, it would actually be a trivial matter to do this).
What is less trivial is getting the resources in there in the
        first place. While ResHacker lets you do it, it'd be nice to see
        a Win32::GUI native way of doing it. Microsoft provides
        functions for adding, deleting and replacing resources in
        executable files and I propose we either:
1. Add this update/add/delete functionality into Win32::GUI so
        that applications can fiddle with their own resources. This may
        be an exceptionally bad idea (what exe file will it think it's
        using when running straight from Perl? We dont want it messing
        with perl.exe's resources)
2. Create a small tool that is distributed with Win32::GUI to
        pack resources into the exe. I doubt we can re-dist ResHacker
        with win32::gui and it'd be nice if there was this functionality
        provided. The Win32::GUI::Bitmap, Icon and Cursor objects could
        then be modified to first check for a resource identified by the
        given filename in the current running exe, and if it's not found
        attempt to use the given filename to load an external file. This
        seems the best mode of operation to me.
Steve

            ----- Original Message -----
            From: Jez White <mailto:[EMAIL PROTECTED]>
            To: Win32-GUI
            <mailto:perl-win32-gui-users@lists.sourceforge.net>
            Sent: Wednesday, February 18, 2004 6:34 PM
            Subject: [perl-win32-gui-users] Shipping resources with your exe

            Hi,
One the problems I have when I ship my exe is ensuring that
            all the resources (bitmaps, cursors and config files)
            are valid when my app starts up. Typically, just including
            them in a sub directory can cause problems since the user
            could delete or alter them. The ideal solution would be to
            package the resources into the exe and extract them at
            runtime. See:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources.asp Adding the resources to the exe is quite straightforward
            (with reshacker) but I'm not sure how easy it would be to
            implement these function calls (or even it is possible),
            would anyone find this kind of functionality useful?
Cheers, jez.

--
Glenn -- http://nevcal.com/
===========================
The best part about procrastination is that you are never bored,
because you have all kinds of things that you should be doing.


Reply via email to