Unresolved symbols in MSVCRT.DLL when running a py2exe packaged program.

Tom NoSpam at NoSpam.com
Fri Mar 2 15:27:09 EST 2001


"Tim Peters" <tim.one at home.com> wrote in message
news:mailman.983556668.16192.python-list at python.org...
> [Tom]
> > I disagree.
> >
> > You can distribute system dll's.  You are expected to, and sometimes you
> > have to.  You must insure that the version you load is at least
> > equal to the version that you linked against.
> >
> > I have done this (distribute system DLL's) on all windows except WinME
and
> > the 16bit ones.  Unfortunately I can't say how I did it precisely,
because
> > I just used InstallShield.
>
> And Python just uses the Wise installer.  They aren't that fancy under the
> covers, though -- they just "follow the rules", checking version numbers,
> bumping refcounts on refcounted DLLs, and arranging for a reboot if they
need
> to replace something.  But that stuff is ineffective on the newer systems
> with SFP.
>
> > But I believe that, where SFP exists, you must use specific and new
> > API's to replace DLL's, otherwise the system will back out your changes.
>
> My understanding is that SFP isn't so easily fooled; e.g.,
>
>     http://support.microsoft.com/support/kb/articles/Q253/5/71.ASP
>
>     http://www.microsoft.com/hwdev/sfp/wfp.htm
>
> SFP won't allow replacement of protected files via just using API tricks;
it
> also sucks in a digital signature scheme, and only MS can supply
signatures
> that work.

I didn't mean to suggest 'fooling' it - I agree that safeguards like SFP are
needed - I meant that one had to do it according to the rules.

As for not being able to update the DLL's, this would be a problem.  If a
service pack for VC6 updates the MFC or CRT DLL's (which SP's usually do),
and you ship an app build with it, then you must update these DLL's on your
target system.  Perhaps this is where the new ability to run 'personal'
instances of DLL's comes in: ie. you can't update the system32 version the
DLL, but you can install your own personal copy.

Tom.

> > One solution is to specify the changes in an .INF file and let the
system
> > worry about these details (but this has its limitations).
> >
> > I assume that Python itself updates the MSVCRT.dll.
>
> The PythonLabs Windows installer tries to, yes.
>
> > Might look at how it does it on Win2K.
>
> My understanding is that it can't (but Win2K ships with a "good enough"
set
> of DLLs, so the version check shouldn't trigger there -- yet).
>
> BTW, I'm *glad* MS is doing SFP!  Whatever Windows Life may be in theory,
> DLLs in practice cannot be mixed and matched -- you need a self-consistent
> set else Very Strange Things Happen.  And with about 1,000 DLLs under a
> typical Windows system directory, that's just impossible for app
developers
> to keep straight.  May well be impossible for MS to keep straight too, but
at
> least it's no longer impossible for them to *try* to keep 'em straight
now.
>
> something-to-ponder-each-time-your-win9x-crashes-ly y'rs  - tim
>
>





More information about the Python-list mailing list