Joost -
I dropped the following code in, replacing the EW_GETTEMPFILENAME case with:
case EW_GETTEMPFILENAME:
{
char *textout=var0;
int n = 100;
while (n--)
if (GetTempFileName(temp_directory,"nst",0,textout))
return 0;
g_flags.exec_error++;
*textout=0;
}
return 0;
The behavior is only slightly modified - NOT fixed. When doing the install-with-reboot followed immediately by an install again (still on NT4), it now gets one complete cycle without any problems... but on the third install (so we are saying install-with-reboot ... install-with-reboot ... install-attempt -> error), we get the same error with "\\ioSpecial.ini" and the abort-retry-ignore dialog. With the original version of the temp-file code, it fails on the SECOND install.
I do still go along with the idea that this has
something to do with temp files/folders... it just wasn't quite this simple. 🙁
A question for you and kickik: when I was looking at the project settings in VS6 prior to doing the new build (based on my BETA "3a" sources that came with that release), I noticed that the SINGLE-threaded C libraries are being used... I am not sure
I would be brave enough to build this way but still spawn and execute additional threads!😱
I wonder if this has anything to do with that reported SMP problem where the user never followed up ("[ 676056 ] Currupted Exe's with SMP machines")? Threading problems are notorious for not showing up until you actually run on a multi-processor machine, given that most of us still develop and test on uni-processor. 😉
Let me know if I can run any more tests for you, but be aware of one thing - the makensis.exe that I built is ~3KB larger than the "release" BETA 3 version! I run VS6 with SP5 AND the latest Platform SDK, so
something about this environment is causing the difference, even though I only changed the above source and no project settings.