Hi,

PAR::Packer executables are really just zip files on steroids.
So Perl510.dll et al get extracted and execute from temp directories at run 
time.

Static linking - now that you know that a PAR exec is just a zip, I guess your 
question would be 'can I wrap everything up in the zip' to which the answer is 
yes EXCEPT for anything the external par.exe itself is linked against. So, if 
you had a module compiled with MSVC2005 you could just wrap MSVCR90.dll in the 
par exec.
Anyway, the short answer to avoid an extra C/C++ runtime is use VC6 or MinGW - 
you might still end up having to use a module compiled with VC7 /8 /9.
This would be the case if the module author only targetted those compilers and 
you weren't in the mood to learn how to 'fix' the code to work with VC6 /MinGW. 
But you just ahve to add the appropriate runtime to the PAR.

By forcing you to distribute MSVCR90.dll with your app and install it to an application directory, MS avoids having to cope with version conflicts between, say, MSVCR90.dll original and MSVCR90.dll service pack 2. In the world of MSI installers and huge storage media, this is probably a good idea.
Nice work with the wiki entry.

Regards

Mark



Yuval Levy wrote:
So, here is my promised write up - correct me if I am wrong:
<http://wiki.panotools.org/Install_Panotools-Script_on_Windows#Infrastructure_to_build_the_.exe_tools_-_the_new_way>

I went the MinGW way (thank you, Mark!).

Jan Dubois wrote:
Setting of ccversion will be done automatically (at runtime) in ActivePerl build 823
(whenever 5.8.9 gets released) and in 1003 (probably out next week).

I may try this one at a later stage.


I would recommend using either VC++ 6 or MinGW to build Perl modules, and especially PAR binaries because these 2 compilers use MSVCRT.dll as the C runtime library, and this library is part of the OS, so there is no need to deploy it with your application. If you compile any module with VC 2008, then you will always have to include MSVCR90.dll with your applications too because it may not be present on a target machine.

that's quite an important detail. can anybody explain to me why Microsoft amputates its own O/S and does not include MSVCR90.dll?

and (correct me if my language is not precise, I'm a caveman) is there a way to bring statically linked Perl modules that don't need any of these dll?

the current ("legacy"/undocumented) way to ship compiled Perl modules with hugin is to bundle perl58.dll. I see with great pleasure that this is no longer necessary with PAR::Packer - my hello world test seems to run without it?

thanks a lot again!
Yuv


Reply via email to