Hi,
Just a note in case anyone is thinking of working on Win32::Exe and has
progressed further than I have.
I have spent the time understanding Parse::Binary better so I have been
able to wrap the PE+ / COFF specification for 64bit binaries in
Win32::Exe. It turned out to be reasonably simple once you understand
Parse::Binary :-). The fact that Parse::Binary already knows that the
PE+ spec exists and looks for a PEPlus handler made things quite
straightforward.
All tests pass so that bit is complete.
I'm currently working on the embedded manifest handling. It is currently
an all or nothing process. I think most people will want to use the
manifest for the following:
1) Request elevated startup permissions.
2) Embed a dependency on a themed common controls version.
Also, it would be nice if Win32::Exe could parse any existing manifest
(such as embedded by Visual Studio) and just add the extra bits you want.
So, I'll add some options:
manifest_perms => <asInvoker|requestAdministrator|highestAvailable|*>
manifest_themed => 1
manifest_name => Your.App.Name
The existing methods that input and output the entire manifest xml will
still exist so if you have more complex requirements you can handle them
via that.
When that is complete, that will be it for Win32::Exe for now. I'll need
somewhere to post a zip though. I've added some new binary content
(small execs and an icon) used for testing - so can't post a patch.
On to PAR::Packer - I've got 64 bit .obj and .coff files so I just need
to fix the makefile generation to choose the right one. Then I need to
add a couple of steps to the build in the right places whereby
Win32::Exe is used to ensure the PAR executables have an embedded
manifest that includes 'asInvoker' - which will depend on the compiler
used. The reason for this is the same as having a manifest in Perl
itself - without one the process gets 'virtualized'. Having no manifest
at all is not the same as having one that specifies 'asInvoker'
Finally, should I add
--manifest_perms
--manifest_themed
--manifest_name
as options to pp?
I probably should, I think. Just 'perms' and 'named' getting added to
the 'outer' executable manifest, with all three added to the 'inner'.
So - if someone is already doing this, pipe up and I'll stop !
If there are some other manifest options you think are needed on pp
command line, then let me know. (or perhaps you feel strongly they
shouldn't be added at all!)
regards
Mark