class101 Posted November 20, 2009 Share Posted November 20, 2009 (edited) how stupid Im, I should have tested to run mkisofs.exe before writingThis is just cygwin1.dll missing "This application has failed to start because cygwin1.dll was not found" Else I have shortened paths and exe name but the log didnt changed, I think that is just about the missing cygwin lib I dont have it Im much with mingw literso a workaround would be to find a mkisofs not cygwin-ed nor to include the lib. Edited November 20, 2009 by class101 Link to comment Share on other sites More sharing options...
ilko_t Posted November 20, 2009 Author Share Posted November 20, 2009 Nice catch, I should have included it...edit: I've uploaded a new version, link is in the first post. Link to comment Share on other sites More sharing options...
class101 Posted November 20, 2009 Share Posted November 20, 2009 I confirm the .iso is created with new version now I will do further test later I should go out to see a friend but as far I can see yet in logs it looks all good, the ERROR message is removed aswell2009/11/20 21:18:05- Copying completed. Took: 411.64418913577 seconds2009/11/20 21:18:05- Creating boot ISO2009/11/20 21:18:05- Launching MkMigrateInf4.cmd2009/11/20 21:18:06- Ensuring presetup is launched2009/11/20 21:18:06- setupORG.exe not found, replacing the original file2009/11/20 21:18:06- mkisofs.exe -iso-level 4 -volid ""WIN_SETUP"" -R -o C:\WinSetup\temp\XP_x64 C:\WinSetup\temp\2009/11/20 21:18:09- Checking sizes...2009/11/20 21:18:09- Total source size- 0 MB2009/11/20 21:18:09- Target space available- 27488 MB2009/11/20 21:18:09- Getting USB drives informationKeep it up that very helpful script , saves DVD and thats faster, good for the planet Link to comment Share on other sites More sharing options...
class101 Posted November 21, 2009 Share Posted November 21, 2009 (edited) yet testing a XP SP3 32bit in Qemu 0.11.x and virtual 10GB hdd, NTFS Primary Active partition for WinSetup files on hd0 and C: destination partition on the hd1 (been able to get C: that way good job )All seems fine until the Setup GUI is reached, is returned an unknown pathGLOBALROOT\Device\Harddisk0\Partition1\WIN_SETUP\XP\I386which is fixed just by adding \\?\ in front of the path, that way\\?\GLOBALROOT\Device\Harddisk0\Partition1\WIN_SETUP\XP\I386I have to repeat that ~30 times and the next parts of the install goes fineAt least I'm sure you should add \\?\ somewhere ilko because I have noted this small problem since the beginning of your project when it was called USB_MultiBoot_10 Edited November 21, 2009 by class101 Link to comment Share on other sites More sharing options...
ilko_t Posted November 21, 2009 Author Share Posted November 21, 2009 Uploaded a new version. Fixsrcpath.exe does not work that early in XP 32 bit, fixsrcpath.cmd is used instead. For 64-bit the exe is used.@class101The reason it didn't work is above, please use the new version.Adding \\?\ at front is a nice idea, I'll play with that a bit.As for USB-multiboot- it does not use any of this stuff, modifying boot and source paths, so no idea what exactly you have in mind. Link to comment Share on other sites More sharing options...
class101 Posted November 21, 2009 Share Posted November 21, 2009 (edited) I have partially solutionned the last problem with your last version ilkofor XP SP3 32bit, files copy + boot + txt setup ok, gui setup ok, installation 100% okfor XP SP2 64bit, files copy + boot + txt setup ok, gui setup wrong path and installation uncomplete, missing inf registration, unstable osXP x64 still has a wrong srcpath = \??\\WIN_SETUP\XP_x64\, it should be \\?\GLOBALROOT\Device\Harddisk1\Partition1\WIN_SETUP\XP_x64\AMD64 nor according to XP you are expecting D: to host it but thats not the case here I have checked all letters at setup gui boot they are all unaccessibleI have found out that it is linked to your precmd script and 64bit version because on xp 32bit your "pushd D:" correctly mounts the installation files to D: but under 64bit D: is accessible later during the Device setup when 34 minutes lasts, there is no possible ways to get install files from a drive letter at the very beginning of setup gui unlike xp 32bit.Thats probably why I get all these .inf problems because in the background, windows stores this wrong path for a later use and it does not alert if the path is wrong, it passes over giving an uncomplete and unstable Xp 64bitThe way you setup src path is to review I thinkpresetup.logsrcpath = \??\\WIN_SETUP\XP_x64\regopt.log************************************************************Region and Languages Options Unattended Mode Log ************************************************************/f:"C:\WINDOWS\system32\$winnt$.inf" /s:"GLOBALROOT\??\\WIN_SETUP\XP_X64\AMD64"Switch /F detected!Switch /S detected!In setup mode!The unattended mode file path is: \$winnt$.infSupplemental Language Support installation cancelled - The operation was canceled by the user.************************************************************Region and Languages Options Unattended Mode Log ************************************************************/I /s:"GLOBALROOT\??\\WIN_SETUP\XP_X64\AMD64"Switch /I detected!Switch /S detected!In setup mode!setupact.logThe external program RUNDLL32 shell32,Control_RunDLL intl.cpl,,/f:"C:\WINDOWS\system32\$winnt$.inf" /s:"GLOBALROOT\??\\WIN_SETUP\XP_X64\AMD64" returned exit code 0.Setup aborted processing the file queue because of the following error:The operation completed successfully. Edited November 22, 2009 by class101 Link to comment Share on other sites More sharing options...
ilko_t Posted November 22, 2009 Author Share Posted November 22, 2009 You've basically run into the problem we are trying to resolve since the beginning Yes, 64 bit versions do not mount and give drive letter to the USB drive early and this is the main problem. This leads to all kind la problems- every application during GUI, expecting a drive letter fails. Getting around this, using \\?\GLOBALROOT\Device\Harddisk1\Partition1\WIN_SETUP\XP_x64\AMD64 is not a solution, for example BTS driver pack will not install too, it expects to find the drive letter of the CD(USB) drive and extract files from there.srcpath = \??\\WIN_SETUP\XP_x64\ in presetup.log is a clear indication, that drive letter for the USB drive was not found. Look at presetup.cmd- srcpath = \??\%CDDRIVE%\...... in this case %CDDRIVE% was null.Srcpath should have been \??\D:\WIN_SETUP\XP_x64\, which is later (right after real setup is launched) translated to D:\WIN_SETUP\XP_x64\, saved as the value of dospath in $winnt$.inf and used for the rest of the setup.Pushd uses %CDDRIVE% variable too, but in this case it pushes nothing.Yesterday I managed to recreate the problem on 32 bit XP SP3 and another computer, using USB hard disk- same problem, USB partitions not mounted. Setup transferred to USB stick- everything normal, on the very same machine.The difference with 64 bit versions (2003 in particular), was that in XP 32 bit diskpart showed USB partitions as volumes, and I could assign a drive letter, whereas in 2003 x64 those volumes were not present at all.Played with BIOS setting how USB boot is performed- via a hotkey or hard coded in boot order- no difference.Tried also to start GUI from the internal disk directly changing BIOS settings as well- again no luck. You can play with that- when you see the error message asking for the source files hit SHIFT + F10 and start DISKPART, then issue "LIST VOL".This is still in experimental stage, looks quite promising method, avoiding all the limitations of the other methods, but still has to be fully explored.Have quite busy days at work, and although it's driving me nuts to find out what's happening exactly, will have to postpone tests for a while. Link to comment Share on other sites More sharing options...
cdob Posted November 22, 2009 Share Posted November 22, 2009 You've basically run into the problem we are trying to resolve since the beginning Yes.The only problems I got were with USB hard disk and 64-bit versions, this could be because of the IDEtoUSB adapter I am using. At start of GUI mode partitions on USB disk do not get drive letters.I've the same experience and no explanation still.XP SP2 64 bit:A average USB stick or SD card reader inserted:PNP does detect the SD card reader and load drivers.Found New HardareYour new hardware is installed and ready to useThis SD card reader does get a drive letter.The strange SD card reader inserted to new installed windows.PNP does detect the SD card reader and load drivers.However next there is a message: System settings ChangeWindows has finished installing new devices. The software that support your devices requires that you restart your computer. You must restart your computer ferfore the new settings will take effec.Do you want to restart your computer now?This SD card reader dosn't get a drive letter.USB hard disk dosn't get a dive letter too.All USB drivers are loaded (demand start by HKLM\SYSTEM\CurrentControlSet\Enum), but no letter assigned.At first reboot system is in SystemSetupInProgress mode, hence PE.This remids to: At PE a USB hard disk dosn't get a drive letter if connected after boot.Work arround: load USB drivers at [bootBusExtenders.Load] and disable at [inputDevicesSupport.Load].I used pyron's 64 bit debug fake setup for debug reasons: nice to get a output on screen.@echo offsetlocal EnableExtensions EnableDelayedExpansionSET TAGFILE=\WIN_SETUPFOR %%h IN (U C D E F G H I J K L M N O P Q R S T V W X Y) DO ( IF EXIST "%%h:%TAGFILE%" ( SET CDDRIVE=%%h: goto :CDDRIVE_found ))echo no %TAGFILE% drive found echo no %TAGFILE% drive found >> winsetup.log:CDDRIVE_foundset srcpath=\??\%CDDRIVE%\%TAGFILE%\XP_X64\echo CDDRIVE %CDDRIVE% - srcpath %srcpath%echo CDDRIVE %CDDRIVE% - srcpath %srcpath% >> winsetup.logecho adjust $winnt$.inf: sourcepath = \??\%CDDRIVE%\%TAGFILE%\XP_X64\ >> winsetup.logif exist $winnt$.new del /f $winnt$.newFOR /F "tokens=1* delims== " %%a in ($winnt$.inf) DO ( set line=%%a = %%b if %%b.==. set line=%%a IF /I sourcepath.==%%a. set line=sourcepath = "%srcpath%" IF /I dospath.==%%a. set line=; echo !line!>>$winnt$.new)if exist $winnt$.new ( ren $winnt$.inf $winnt$.0 if exist $winnt$.inf del $winnt$.inf ren $winnt$.new $winnt$.inf)rem start /min "USB keep mount work arround" pushd %CDDRIVE%REM +=======================================================+REM | Finally start the installation |REM |-------------------------------------------------------|if exist setupold.exe del /f setupold.exe >> winsetup.logif exist setup.exe ren setup.exe setupold.exeif exist setupORG.exe ren setupORG.exe setup.exerem often setup.exe -newsetupFOR /F "tokens=1-2*" %%a IN ('reg.exe query "HKLM\SYSTEM\Setup" /v "CmdLine"') DO ( set CmdLine=%%c)IF "%CmdLine:~-2%"=="\0" set CmdLine=%CmdLine:~0,-2%(echo. &echo run setup CmdLine: %CmdLine% - %date% %time%)(echo. &echo run setup CmdLine: %CmdLine% - %date% %time%) >> winsetup.logstart /WAIT %CmdLine%REM +=======================================================+In addition there are strange machines. USB hardware is initialized late at boot. No hardware to test. Link to comment Share on other sites More sharing options...
class101 Posted November 22, 2009 Share Posted November 22, 2009 (edited) I have managed to temporarily finish my XP X64 SP2 setup 100% done here.1) TXT setup2) with a famous bootcd copying install partition from hd0 to an unpartitioned space on h1 our destination windows with partition magic 8 for dos, dont hide and dont set active the newly created part, it will be D: on GUI setup3) GUI Setup works as on XP X32 SP3, no invalid paths warnings, cmd prompt is in D: so pushd D: worked4) Im yet inside X64 and all my past problems solved, IE windowsupdate and all other missing stufffs I had reported are installed correctly nowIn case you do not find a workaround dude that maybe enough to code a warning that on X64 you have to copy files between TXTsetup and GUI, it does not requires more hacks because I haven't edited at your files and it worked perfectly as for the 32bit version Edited November 22, 2009 by class101 Link to comment Share on other sites More sharing options...
Siginet Posted November 23, 2009 Share Posted November 23, 2009 Uploaded a new version. Fixsrcpath.exe does not work that early in XP 32 bit, fixsrcpath.cmd is used instead. For 64-bit the exe is used.@class101The reason it didn't work is above, please use the new version.Adding \\?\ at front is a nice idea, I'll play with that a bit.As for USB-multiboot- it does not use any of this stuff, modifying boot and source paths, so no idea what exactly you have in mind.I didn't think autoit3 files worked during the pre setup phase. In the past I tried creating a much better setup.exe based on pyrons method. But I was very dissapointed to find out it wouldn't work with autoit3 files. I almost thought you found a workaround. I hopefully will get some time to test out your mini iso idea later this week. I am very eager to try my idea with multiple mini ISO files. Link to comment Share on other sites More sharing options...
cdob Posted November 23, 2009 Share Posted November 23, 2009 In the past I tried creating a much better setup.exe based on pyrons method.Thanks, a volunteer Can you forward the command line?At fake setup: read the given command line and forward the command line to presetup.cmd?XP 64: still no USB hard disk explanation. Work arround updated: Boot driver settings enhanced at presetup.cmd.Txtsetup.sif can be adjuted at [bootBusExtenders.Load] and at [inputDevicesSupport.Load].This is not necessary.1) If USB drive is available, just continue.2) If USB drive is missing, set minimal USB driver settings and reboot. PNP overwrite the settings later. After installation there are default USB settings.3) If USB drive is missing still, set enhanced USB driver settings and reboot. There are non default settings after full installation.4) If USB drive is available still, no further trials, just continue and read the error.At pyron's fake, 64 bit compiled@echo offsetlocal EnableExtensions EnableDelayedExpansionSET TAGFILE=\WIN_SETUPFOR %%h IN (U C D E F G H I J K L M N O P Q R S T V W X Y) DO ( IF EXIST "%%h:%TAGFILE%" ( SET CDDRIVE=%%h: goto :CDDRIVE_found ))echo no %TAGFILE% drive foundecho no %TAGFILE% drive found >> winsetup.logREM +=======================================================+REM | prepare USB boot configuration |REM |-------------------------------------------------------|echo presetup fixBoot.USBset reboot=rem second trial: permanent USB changesif exist reboot.1 if not exist reboot.2 ( set reboot=true echo reboot ÚSB driver setting >reboot.2 echo prepare USB boot configuration %date% %time% - permanent changes >>winsetup.log call :set_usb_boot_setting_full SYSTEM CurrentControlSet reg.exe load HKLM\loaded_SYSTEM config\system.sav call :set_usb_boot_setting_full loaded_SYSTEM ControlSet001 reg.exe unload HKLM\loaded_SYSTEM)rem first trial: minimal, no permanent changesif not exist reboot.1 ( set reboot=true echo reboot ÚSB driver setting >reboot.1 echo prepare USB boot configuration %date% %time% - minimal changes>>winsetup.log call :set_usb_boot_setting SYSTEM CurrentControlSet reg.exe load HKLM\loaded_SYSTEM config\system.sav call :set_usb_boot_setting loaded_SYSTEM ControlSet001 reg.exe unload HKLM\loaded_SYSTEM)REM +=======================================================+REM | reboot the machine once, avoid endless loop |REM |-------------------------------------------------------|if defined reboot ( (echo reboot %date% %time% &echo.)>> winsetup.log goto :eof):CDDRIVE_found ===============================================set srcpath=\??\%CDDRIVE%%TAGFILE%\XP_X64\echo CDDRIVE %CDDRIVE% - srcpath %srcpath%echo CDDRIVE %CDDRIVE% - srcpath %srcpath% >> winsetup.logif exist $winnt$.new del /f $winnt$.newFOR /F "tokens=1* delims== " %%a in ($winnt$.inf) DO ( set line=%%a = %%b if %%b.==. set line=%%a rem requires a drive letter still rem IF /I sourcepath.==%%a. set line=sourcepath = "\\?\GLOBALROOT\Device\Harddisk1\Partition1\WIN_SETUP\XP_X64" IF /I sourcepath.==%%a. set line=sourcepath = "%srcpath%" IF /I dospath.==%%a. set line=; echo !line!>>$winnt$.new)if exist $winnt$.new ( ren $winnt$.inf $winnt$.0 if exist $winnt$.inf del /f $winnt$.inf ren $winnt$.new $winnt$.inf)findstr.exe "sourcepath" $winnt$.inffindstr.exe "sourcepath" $winnt$.inf >> winsetup.logrem required at all?rem start /min "USB keep mount work arround" pushd %CDDRIVE%REM +=======================================================+REM | Finally start the installation |REM |-------------------------------------------------------|if exist setupold.exe del /f setupold.exe >> winsetup.logif exist setup.exe ren setup.exe setupold.exeif exist setupORG.exe ren setupORG.exe setup.exerem often setup.exe -newsetupFOR /F "tokens=1-2*" %%a IN ('reg.exe query "HKLM\SYSTEM\Setup" /v "CmdLine"') DO ( set CmdLine=%%c)IF "%CmdLine:~-2%"=="\0" set CmdLine=%CmdLine:~0,-2%(echo. &echo run setup CmdLine: %CmdLine% - %date% %time%)(echo. &echo run setup CmdLine: %CmdLine% - %date% %time%) >> winsetup.logstart /WAIT %CmdLine%REM +=======================================================+EXITgoto :eof =============================================================:set_usb_boot_setting =================================================set Services=HKLM\%1\%2\Servicesecho onreg.exe query "%Services%\usbohci" | findstr.exe /I "Start" && ( reg.exe add "%Services%\usbohci" /f /t REG_DWORD /v "Start" /d 0 reg.exe add "%Services%\usbohci" /f /v "Group" /d "Boot Bus Extender")reg.exe query "%Services%\usbuhci" | findstr.exe /I "Start" && ( reg.exe add "%Services%\usbuhci" /f /t REG_DWORD /v "Start" /d 0 reg.exe add "%Services%\usbuhci" /f /v "Group" /d "Boot Bus Extender")reg.exe query "%Services%\usbehci" | findstr.exe /I "Start" && ( reg.exe add "%Services%\usbehci" /f /t REG_DWORD /v "Start" /d 0 reg.exe add "%Services%\usbehci" /f /v "Group" /d "Boot Bus Extender")reg.exe add "%Services%\usbhub" /f /t REG_DWORD /v "Start" /d 0reg.exe add "%Services%\usbhub" /f /v "Group" /d "System Bus Extender"reg.exe add "%Services%\usbstor" /f /t REG_DWORD /v "Start" /d 0reg.exe add "%Services%\usbstor" /f /v "Group" /d "System Bus Extender"@echo offgoto :eof === end set_usb_boot_setting ===============================:set_usb_boot_setting_full ============================================set CriticalDeviceDatabase=HKLM\%1\%2\Control\CriticalDeviceDatabaseset Services=HKLM\%1\%2\Servicesecho onreg.exe add "%CriticalDeviceDatabase%\PCI#CC_0C0300" /f /v "ClassGUID" /d "{36FC9E60-C465-11CF-8056-444553540000}"reg.exe add "%CriticalDeviceDatabase%\PCI#CC_0C0300" /f /v "Service" /d "usbuhci"reg.exe add "%CriticalDeviceDatabase%\PCI#CC_0C0310" /f /v "ClassGUID" /d "{36FC9E60-C465-11CF-8056-444553540000}"reg.exe add "%CriticalDeviceDatabase%\PCI#CC_0C0310" /f /v "Service" /d "usbohci"reg.exe add "%CriticalDeviceDatabase%\PCI#CC_0C0320" /f /v "ClassGUID" /d "{36FC9E60-C465-11CF-8056-444553540000}"reg.exe add "%CriticalDeviceDatabase%\PCI#CC_0C0320" /f /v "Service" /d "usbehci"reg.exe add "%CriticalDeviceDatabase%\USB#CLASS_08" /f /v "ClassGUID" /d "{36FC9E60-C465-11CF-8056-444553540000}"reg.exe add "%CriticalDeviceDatabase%\USB#CLASS_08" /f /v "Service" /d "usbstor"reg.exe add "%CriticalDeviceDatabase%\USB#CLASS_09" /f /v "ClassGUID" /d "{36FC9E60-C465-11CF-8056-444553540000}"reg.exe add "%CriticalDeviceDatabase%\USB#CLASS_09" /f /v "Service" /d "usbhub"reg.exe add "%CriticalDeviceDatabase%\USB#ROOT_HUB" /f /v "ClassGUID" /d "{36FC9E60-C465-11CF-8056-444553540000}"reg.exe add "%CriticalDeviceDatabase%\USB#ROOT_HUB" /f /v "Service" /d "usbhub"reg.exe add "%CriticalDeviceDatabase%\USB#ROOT_HUB20" /f /v "ClassGUID" /d "{36FC9E60-C465-11CF-8056-444553540000}"reg.exe add "%CriticalDeviceDatabase%\USB#ROOT_HUB20" /f /v "Service" /d "usbhub"reg.exe add "%Services%\usbohci" /f /v "Group" /d "Boot Bus Extender"reg.exe add "%Services%\usbohci" /f /t REG_DWORD /v "Tag" /d 3reg.exe add "%Services%\usbohci" /f /t REG_DWORD /v "ErrorControl" /d 1reg.exe add "%Services%\usbohci" /f /t REG_DWORD /v "Start" /d 0reg.exe add "%Services%\usbohci" /f /t REG_DWORD /v "Type" /d 1reg.exe add "%Services%\usbuhci" /f /v "Group" /d "Boot Bus Extender"reg.exe add "%Services%\usbuhci" /f /t REG_DWORD /v "Tag" /d 3reg.exe add "%Services%\usbuhci" /f /t REG_DWORD /v "ErrorControl" /d 1reg.exe add "%Services%\usbuhci" /f /t REG_DWORD /v "Start" /d 0reg.exe add "%Services%\usbuhci" /f /t REG_DWORD /v "Type" /d 1reg.exe add "%Services%\usbehci" /f /v "Group" /d "Boot Bus Extender"reg.exe add "%Services%\usbehci" /f /t REG_DWORD /v "Tag" /d 3reg.exe add "%Services%\usbehci" /f /t REG_DWORD /v "ErrorControl" /d 1reg.exe add "%Services%\usbehci" /f /t REG_DWORD /v "Start" /d 0reg.exe add "%Services%\usbehci" /f /t REG_DWORD /v "Type" /d 1reg.exe add "%Services%\usbhub" /f /v "Group" /d "System Bus Extender"reg.exe add "%Services%\usbhub" /f /t REG_DWORD /v "Tag" /d 2reg.exe add "%Services%\usbhub" /f /t REG_DWORD /v "ErrorControl" /d 1reg.exe add "%Services%\usbhub" /f /t REG_DWORD /v "Start" /d 0reg.exe add "%Services%\usbhub" /f /t REG_DWORD /v "Type" /d 1reg.exe add "%Services%\usbstor" /f /v "Group" /d "System Bus Extender"reg.exe add "%Services%\usbstor" /f /t REG_DWORD /v "Tag" /d 7reg.exe add "%Services%\usbstor" /f /t REG_DWORD /v "ErrorControl" /d 1reg.exe add "%Services%\usbstor" /f /t REG_DWORD /v "Start" /d 0reg.exe add "%Services%\usbstor" /f /t REG_DWORD /v "Type" /d 1@echo offgoto :eof === end set_usb_boot_setting_full ============================ Link to comment Share on other sites More sharing options...
ilko_t Posted December 8, 2009 Author Share Posted December 8, 2009 Thanks cdob.Run a few tests on real hardware with the same USB hard disk, using USB-IDE adapter. Added changes to txtsetup.sif for starting usb group earlier. Left changes to USB at start of GUI as a backup. None of the tested versions (2000-XP-2003 32 and 64 bit) required reboot at start of GUI and installed right to the end.Why did you give up on changing txtsetup.sif? Did you encounter any troubles using it only? Link to comment Share on other sites More sharing options...
ilko_t Posted December 10, 2009 Author Share Posted December 10, 2009 Beta version of WinSetupFromUSB if anyone wants to help testing:http://www.datafilehost.com/download-20d0545c.htmledit: Newest download link is in the first post. Link to comment Share on other sites More sharing options...
Siginet Posted December 10, 2009 Share Posted December 10, 2009 Beta version of WinSetupFromUSB if anyone wants to help testing:http://www.datafilehost.com/download-20d0545c.htmlWhat's different in this version? I'll test it tommorrow.Thanks Link to comment Share on other sites More sharing options...
ilko_t Posted December 10, 2009 Author Share Posted December 10, 2009 Txtsetup.sif amended and usb group starts earlier, thus in case of USB hard disk it's detected and a drive letters given at start of GUI.The rest is as per cdob's last post. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now