Info From ActiveState on a problem

View: New views
2 Messages — Rating Filter:   Alert me  

Info From ActiveState on a problem

by dwinkjr :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I was having a problem where a program when compiled with PerlApp caused a radio button to be blacked out.
It would only be blacked out if it was inside of a group box.  listbox.plAttached is the program and the explanation from Activestate.

David,

This problem should win a prize. I almost never see such a long explanation and workaround from the developers.  Warning- The workaround requires the Windows SDK. It was also tested on Vista, but XP should be much the same. Here
goes:

--------------------------------------------------------------------------
I know "why" it happens, but can't suggest a good workaround right
now: PerlApp will always bundle a manifest with the generated executable that directs it to use the themed versions of common controls when available.  This manifest is embedded in the executable and cannot be easily removed / replaced.  If you put the following text (without the "==============" divider lines) into a file called perl.exe.manifest right next to your perl.exe file in C:\Perl\bin then got the same effect with plain Perl:

==========================================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" processorArchitecture="*" version="6.0.0.0"
name="mash"/>
<description>Comctl32 Test App</description> <dependency>
   <dependentAssembly>
      <assemblyIdentity
           type="win32"
           name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
           language="*"
           processorArchitecture="*"
           publicKeyToken="6595b64144ccf1df"
      />
   </dependentAssembly>
</dependency>
</assembly>
==========================================================================

As a workaround, you can use mt.exe from the Windows SDK to replace the embedded manifest (I found no way to just remove the manifest).  I used this manifest that tells Windows Vista to run "asInvoker", which means "do not try to elevate privileges":

==========================================================================
<?xml version="1.0" encoding="utf-8" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86"
name="Sample" type="win32" />
<description>Sample Manifest Test Application</description> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" /> </requestedPrivileges> </security> </trustInfo> </assembly> ==========================================================================

I ran:

    perlapp -f listbox.pl
    mt -manifest my.manifest -outputresource:listbox.exe

And after that listbox.exe behaved "normally" again.  Unfortunately the Windows SDK is quite a huge download for achieving this.
------------------------------------------------------------------

So there you go. I hope that helps. We are planning to make some improvement to how PDK handles manifests in the near future. It's mostly to better handle Vista UAC, but it should also make workarounds like this one easier to implement.

The core issue is still in Win32-GUI, and you should probably get back to the Win32-GUI community and ask them to figure out why the module doesn't work nicely with the newer common controls enabled.

Best regards,





Parent Message unknown Re: Info From ActiveState on a problem

by Jeremy White-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi,

I dont have perl instaled on this machine so I can't test this at the moment. I assume this is with PerlApp 7.x? Would you be able to create a bug report via:

http://sourceforge.net/tracker/?group_id=16572&atid=116572

and I'll take a look at it.

There is a simpler way to view and edit resources within an exe:

http://www.angusj.com/resourcehacker/

I use this to add manifests (for XP styles), bitmaps, string tables and icons into a PerlApp generated exe. As well as the GUI, it also has a command line interface which makes the build process much easyer.

Cheers,

Jeremy.


> I was having a problem where a program when compiled with PerlApp caused a
> radio button to be blacked out.
> It would only be blacked out if it was inside of a group box.
> http://www.nabble.com/file/p17023512/listbox.pl listbox.pl Attached is the
> program and the explanation from Activestate.
>
> David,
>
> This problem should win a prize. I almost never see such a long explanation
> and workaround from the developers. Warning- The workaround requires the
> Windows SDK. It was also tested on Vista, but XP should be much the same.
> Here
> goes:
>
> --------------------------------------------------------------------------
> I know "why" it happens, but can't suggest a good workaround right
> now: PerlApp will always bundle a manifest with the generated executable
> that directs it to use the themed versions of common controls when
> available. This manifest is embedded in the executable and cannot be easily
> removed / replaced. If you put the following text (without the
> "==============" divider lines) into a file called perl.exe.manifest right
> next to your perl.exe file in C:\Perl\bin then got the same effect with
> plain Perl:
>
> ==========================================================================
>   xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
>  name="mash"/>
> Comctl32 Test App
>
>  type="win32"
> name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
> language="*"
> processorArchitecture="*"
> publicKeyToken="6595b64144ccf1df"
> />
>
>
>
> ==========================================================================
>
> As a workaround, you can use mt.exe from the Windows SDK to replace the
> embedded manifest (I found no way to just remove the manifest). I used this
> manifest that tells Windows Vista to run "asInvoker", which means "do not
> try to elevate privileges":
>
> ==========================================================================
>
>  manifestVersion="1.0">
>  name="Sample" type="win32" />
> Sample Manifest Test Application  xmlns="urn:schemas-microsoft-com:asm.v3">
>
>
>  
>  
> ==========================================================================
>
> I ran:
>
> perlapp -f listbox.pl
> mt -manifest my.manifest -outputresource:listbox.exe
>
> And after that listbox.exe behaved "normally" again. Unfortunately the
> Windows SDK is quite a huge download for achieving this.
> ------------------------------------------------------------------
>
> So there you go. I hope that helps. We are planning to make some improvement
> to how PDK handles manifests in the near future. It's mostly to better
> handle Vista UAC, but it should also make workarounds like this one easier
> to implement.
>
> The core issue is still in Win32-GUI, and you should probably get back to
> the Win32-GUI community and ask them to figure out why the module doesn't
> work nicely with the newer common controls enabled.
>
> Best regards,
>
>
>
>
>
> --
> View this message in context: http://www.nabble.com/Info-From-ActiveState-on-a-problem-tp17023512p17023512.html
> Sent from the perl-win32-gui-users mailing list archive at Nabble.com.
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> Don't miss this year's exciting event. There's still time to save $100.
> Use priority code J8TL2D2.
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> _______________________________________________
> Perl-Win32-GUI-Users mailing list
> Perl-Win32-GUI-Users@...
> https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
> http://perl-win32-gui.sourceforge.net/

_________________________________________________________________
Great deals on almost anything at eBay.co.uk. Search, bid, find and win on eBay today!
http://clk.atdmt.com/UKM/go/msnnkmgl0010000004ukm/direct/01/
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Perl-Win32-GUI-Users mailing list
Perl-Win32-GUI-Users@...
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
http://perl-win32-gui.sourceforge.net/
LightInTheBox - Buy quality products at wholesale price