demerphq wrote:
On 1/30/06, Linda W <[EMAIL PROTECTED]> wrote:
demerphq wrote:
We dont need this behaviour as we arent going to be dealing with any
DLL's that will be started prior to perl starting. Move at boot
behaviour is only required for dlls that are loaded at boot. Since the
files we care about are only locked because of Perl we only need close
perl.
---
        The Windows API "MoveFileEx" is used to move _any_ DLL that is
locked in memory.  It isn't something primarily used by device drivers,
but by any "setup" or install program that replaces "DLL"s loaded in
memory.

Hmm, I dont see anything about moving dll's that are locked in memory
specifically. I do see the MOVEFILE_DELAY_UNTIL_REBOOT stuff tho.
Which is as you've pointed out a useful thing. (Or horrible kludge,
whatever :-)
---
        Yeah...a bit kludgey, I'd agree.  There isn't anything specifically
written about rename being allowed: it just works and makes sense on NT
given that it backs demand paged executable images either from its paging
file or directly from a suitable image-file using (device,startblock,#blocks).

        The "MoveFileEx" API is supported on both win-nt and win-95 based
systems.

Heh. The documentation on MoveFileEx specifies that the function isn't
available under Win95. So that is wrong in your experience?
---
My bad, the full quote was "Windows 95 and Windows NT each provide a unique method for helping applications to remove, replace, or rename files and directories that are in use. "

        I certainly can't say much about Win95...the article is unclear
about the behavior in 98, 98SE & ME.  It's hard to imagine the
recommended procedure on 98SE & ME being limited to storing renames in a
'wininit.ini' file, but I no longer have a win98 installation to test this on.
Hmmm.


The original issue stems from the fact that MB uses Cwd to do its
business, but MB is the module that is responsible for installing Cwd.
The bigger issue that multiple perl sessions (or other processes)
could also lock the DLL's actually never occured to me. The chicken
and egg problem however was hard to avoid. :-)
---
        Yep.  The conveniences we are used to on *nix. :-)

Anyway, attached is a patch for ExtUtils::MakeMaker::Install that is
capable of installing Pathtools (ie Cwd) by doing the rename trick
with MoveFileEx for deletion of the old copy. If the rename fails is
arranges to do the whole thing at reboot.
---
        Cool!  Just thinking about testing on WinME/9x gives me a
headache though.

Linda

Reply via email to