I came across this topic from a thread on the MSFN.org thread for Universal Extractor and replied there:
http://www.msfn.org/board/Universal-Extrac...467#entry742467Summary:
{nitro322}AutoIt and Windows 9x seem to have a whole lot of difficulty agreeing on the PATH{/nitro322}
{shaddam}
i also tried to pindown the problem....
'winset.exe' works... for instance, if start uniextractor with this bat:
start.bat
''winset path2=%path%;c:\uniextractor;c:\uniextractor\bin
uniextractor.exe
winset path=%path2%''
... the path variable is recovered succesful & not destroyed (but uniextractor is also not working.... :/)
{/shaddam}
{IIsi 50MHz}
Avoid using "start" as a batch file name because it can conflict with START.EXE. The second line of your batch file should be "start /wait uniextractor.exe".
I am able to consistently preserve the PATH variable on Win98SE, regardless of AutoIt error state, by running it from a batch file set to hide its window and output:
univextr.bat:
@SET PATH1=%PATH%
@START /wait Uniextract %1 %2 %3 %4 %5 %6 %7 %8 %9
@WINSET PATH=%PATH1%
@SET PATH1=
{/IIsi 50MHz}
Given that this technique works when launching the AutoIt-based Universal Extractor directly and using the open script's window as a drop-target for files, perhaps the generic way around the problem (not specific to UE) is to wrap one instance of AutoIt inside another. Just as the batch file wraps AutoIt/UE, waits for it to exit, and the cleans up...perhaps AutoIt could save a local copy of the %PATH% with "envget('path')", launch the second instance of AutoIt with the main script, wait for that second instance to close, and then clean up with winset.exe.
(The %1...%9 aren't really necessary, but let the batch file function as a short-names-only drop handler of a sort)