Jump to content

How to install Windows from USB- WinSetupFromUSB with GUI


Recommended Posts



Why not a SEPARATE Auto-it .script "The8Steps4unattended.exe" ? ;)


I'll try to explain in details the way I see all this.

The project started as alternative method of installing Windows from USB. The known ones are winnt from DOS and winnt32 or it's variants as PE plugins, started from PE environment. As such alternative, it was rather interesting from experimenting and inventing point of view, rather than a practical sollution.

It turned out to be practical since Asus EeePC appeared and the interest boomed. Why- most of these users had no idea what BartPE or winnt32.exe is, neither what unattended install or winnt.sif is. Not to mention building BartPE, integrating mass storage drivers etc. They just needed one-off installation of their Windows source, whatever it is (slimmed down, unattended, with extra programs/addons...), from USB, with a few mouse clicks or a few answers, in the way they are used to- as if it was started from CD.

As this alternative method got polished/sophisticated and popularity increased, more and more experienced users became interested. And you have done A LOT for this to happen.

Following these thoughts I assume there are 2 types of 'potential users':

1) Who know what unattended (and slimming down or adding drivers/programs) Windows source is, and presumably know at least one of the popular methods to perform that:




XPPRO_CD\SUPPORT\TOOLS\DEPLOY.CAB\ref.chm + Notepad.exe-->winnt.sif

http://unattended.msfn.org/unattended.xp/ + Notepad.exe-->winnt.sif

www.google.com --> 'unattended windows setup'

2) Ones who have no clue what the above is, and want install from USB with a few mouse clicks, without being bothered with extra information or questions.

In case of 1)- Is there a point providing this functionality, overlapping famous and well documented/supported tools?

In case of 2)- Is it the time to go into that curve? Is he interested at all in these options or simply wants to install his Windows the way he knows?

Even if he is interested, I'd prefer to include the information in a ReadMe file and point to the right direction(above), rather than implementing this functionality in the program itself, overloading the main interface with checkboxes or messages.

Simple displaying winnt.sif entries I find useless for novices, as those entries also have to be explained what they mean with their alternative values.

Once he knows how many things could be done to his source, the problematic 8 entries will not be the only ones wanted. Same applies for LANG folder or CMPNENTS for MCE or Tablet, which absence could lead to fatal errors during or after installation, if one had already enough new information and on the next message chooses randomly yes/no, without reading a word. Believe me, this is what happens most of the time.

If the point to display winnt.sif is to use as reminder to the experienced user what is going to be used, I may add a button or message box "Do you want to display winnt.sif" and launch "notepad.exe winnt.sif". Contrary- we have there important entries, curious people according to practice and Murphy's law tend to mess exactly where they are not supposed to. Keeping out of focus winnt.sif, which performs the most important steps to be USB setup successful, is preferred.

As time goes by, a tab "advanced settings" could be added. For now I don't have the willingness and the spare time to do that, my mind simply refuses to think about concentrating on this subject. I'd rather spend more time on simplifying and automating install from PE environment, finding a way to protect files during Text mode in 2000/2003 versions, or making x64 version of rdummy.sys, than implement features, which are already well covered by other means. Don't forget that XP/2003 days are going to an end as well. Within a few years all this will be buried.

In addition- the program is run from normal Windows environment, and your toolbox(Internet, Notepad, Help files, NLite...) is full. If it was in PE environment, where tools are limited, then yes, it could be good option.

Another point, which is rather personal- I am an old schooler, prefer simplicity, small sizes and information thrown at user limited to the bare minimum. Hence my opinion what is a key factor a program to be successful and easily accepted.

Link to comment
Share on other sites

Can you explain better the problem?
The thing is once Text mode is selected in menu.lst, on next launch of grub4dos the second part(GUI) to be default, and eventually fully unattended installation performed.

Menu.lst is created dynamically and entries are added to an existing one, which if not present is created. On first run of the program one may not choose to add Windows source. Thus the entries number 0-3 for example will be occupied by Bart PE, Vista setup etc.

Next run- add windows source. This will add the pair as entry #4 and 5:

title First part (Text mode) of $version setup
chainloader /$win_nt$.~bt/setupldr.bin
savedefault fallback

title Second part (GUI mode) of $version setup
chainloader /ntldr

In order to set fallback entry AND set it default I need to know that last entry, for the GUI mode what number in menu.lst is. Why.

What came in my head so far is to separate the entries by seeking for 'title', so everything between two 'title' is an entry. Then look in this entry if string 'ntldr' is present, ignoring the commented lines, and count what number it is. Then set this number as a fallback.

The problem is when a new Windows source is added to the USB disk. This will add another pair of entries.

The first entry will deffer as setupldr.bin will be in another folder, but the second entry will differ against the similar one only in it's title, where $version is used.

Creation of second entry (GUI mode) could be omitted, using one for all Windows sources, not adding for which version of Windows it is as that's only for guidance. But in this case menu.lst may end up like:

First part(Text Mode) of Windows XP professional

Second part(GUI Mode) of Windows Setup + Start it for a first time

First part(Text Mode) of Windows 2003 server

First part(Text Mode) of Windows 2000 standard

Start UBCD4Win from partition 3

I wanted to avoid that, as if one wants to install say Windows 2000, he'd expect second part to be below the first part, which is why I add them in pairs:
First part(Text Mode) of Windows XP professional

Second part(GUI Mode) of Windows XP professional Setup + Start it for a first time

First part(Text Mode) of Windows 2003 server

Second part(GUI Mode) of Windows 2003 server Setup + Start it for a first time

First part(Text Mode) of Windows 2000 standard

Second part(GUI Mode) of Windows 2000 standard Setup + Start it for a first time

Start UBCD4Win from partition 3

Now if first variant is better- with only one entry for the GUI mode, then will have to seek in menu.lst if 'Second part(GUI Mode) of Windows Setup + Start it for a first time' is present, and if not- add a new one.

If the second variant, with pairs, is better, then it's tricky, which entry should be set as fallback entry?

Another variant as I am thinking more on this- no need to use 'savedefault fallback', but rather 'savedefault X' and still use pairs. When adding new entries the program will count what number(Y) in menu.lst

"First part(Text Mode) of Windows 2000 standard" is, and set "savedefault X+1".

All the variants assume that entries above those lines are not deleted, or everything will get messed up. Thinking of that, wouldn't be easier and safer just to include in the ReadMe brief information how to be set up manually? So one will be aware what to change if wants GUI mode to be selected automatically, and if decides to delete entries.

I am puzzled :unsure:

What do you guys think?

Link to comment
Share on other sites

This is awesome! This is always something that I wanted to do, especially since I assume that installation from USB is not only more convenient, but faster than installing from DVD, or am I wrong? In any case, an nLite collaboration would be cool as well, to be able to nLite XP and then install it from USB!
Hope you like it :)

It is considerably faster, especially when using fast USB stick or hard disk and your BIOS supports USB boot in full 2.0 speed. In some cases NTFS is reported to perform times faster than FAT16/32, I guess this happens when Text mode setup tries to delete files from the write-protected USB disk and have no further explanation why exactly.

Keep in mind that not all BIOSes support boot from NTFS formatted USB disks, and NTFS on USB stick may 'wear it' sooner, depending on it's quality and usage.

Link to comment
Share on other sites

I'd rather spend more time on simplifying and automating install from PE environment,


Don't forget that XP/2003 days are going to an end as well. Within a few years all this will be buried.

Thanks for your extended reply.

I agree with you, that edit and display of XP Setup parameters can be part of future developments,

and that it is not necessary to change your program now for these options.

My approach in the project corresponds very well to yours, and at the moment I am also very interested in

the possibilities of Install of XP from PE Environment, which allows FREE choice of XP Source on any drive.

I don't think that XP will be buried very soon, unless there will come a complete new Windows OS,

which is better and smaller than Windows XP,

with e.g. SYSTEM and UserData well separated on different partitions and

build in Ghost-like SYSTEM Backup and Restore posibility.

The popular ASUS Eee PC proves that we are moving towards smaller and less complicated systems,

which are easy to manage.

Edited by wimb
Link to comment
Share on other sites


Just some of my "semi-random" ideas, mind you, but couldn't this be done "internally"? :unsure:


*** Newly implemented operators `&&' and `||' ***


This implementation is very simple. It does not handle operator nesting.

Usage of `&&':

command1 && command2


If command1 returns true, then command2 will be executed.

Usage of `||':

command1 || command2


If command1 returns false, then command2 will be executed.


is64bit && default 0

is64bit || default 1

Can we assume that a given file will be on the internal hard disk (and never on the USB stick) only after completion of the text mode setup?

Can we (deftly ;)) combine the above with the "default FILE" command:


*** New Syntax for the DEFAULT/SAVEDEFAULT Commands ***


In addition to the original usage of "default NUM" and "default saved", now

there is a new usage of "default FILE", like this:

default (hd0,0)/default

Note that FILE must have a valid DEFAULT file format. A sample DEFAULT file

is included in the release. You may copy it to wherever you like, but you

should avoid modifying its content manually. The DEFAULT file may be used

in this way:

(1) First, you should copy a default file with valid format to somewhere in

your operating system.

(2) Secondly, you should use the "default FILE" command of GRUB to announce

the use of FILE as our new default file for being written by "savedefault".

(3) Then, you may use "savedefault" command to save the desired entry number

into this new default file.

(4) OK, at next boot, you may read the saved entry number by using the same

"default FILE" command as mentioned in above (2).

And with the "configfile FILE" directive?


1) We have the normal "menu.lst" in root, it contains only entries of this type:

title Win2k install
default /2kdefault
find /tagfile && setdefault 1
configfile /Win2k.lst

title XP install
default /xpdefault
find /tagfile && setdefault 1
configfile /xp.lst


2) the configfile of each OS have only two entries:

title text mode

title GUI mode

In other words, each configfile only has two entries, 0 for text mode and 1 for GUI mode.

Would something like this work? :unsure:


Link to comment
Share on other sites


Thanks, that's very good idea.

Using tag file could be tricky- I can't think of any file in root, which gets renamed or deleted after install is completed. If it's in a folder, then may be yes, but what about people changing their windows or program files folders...

May this is a solution, even though we are getting into too many submenus:


title Windows Install
configfile /windows.lst


default /windefault

title Text mode Windows XP
chainloader ....
savedafault 1

title GUI mode Windows XP
chainloader /ntldr

title Text mode Windows 2003
chainloader ....
savedafault 1

title GUI mode Windows 2003
chainloader /ntldr

All Text mode entries will make default the second entry, even though it's name is for XP, but it loads the same NTLDR/BOOT.INI.

Then the second entry will open BOOT.INI entries, which makes one more menu. I will try to put all that and see how it feels when using it.

Link to comment
Share on other sites

  • 3 weeks later...

I agree with ilko_t, keep it simple.

All I want to do is able to install my nlited + driverpacks Windows XP from a USB Stick exactly as I would from a CD/DVD drive with no changes or as little changes as possible. No extra options or such..

Nice work ilko_t and everyone who contributed to and inspired this project.. Keep up the good work.


Link to comment
Share on other sites

I'm stuck

I managed to create the a bootable USB-stick with windows XP and BartPE.

I'm using my friends asus eee.

I get into the grub4dos menu and select the first line... it did not work, it simply reloads the grub4dos menu.

The second line, part 2 of windows setup simply won't work without the first part, it says no OS basically when I try it.

The third line, BartPE worked...

Any ideas whats wrong and or how I can be more verbose?


Link to comment
Share on other sites

Can you attach your log file:

- detailed log file is created in the folder, where program is executed from. Use it for troubleshooting. Upon next execution if log file is found, it's compressed in MS cab format, removed to BACKUPS folder and renamed with current DATE/TIME stamp.

as well as screenshot of contents or result of dir X: of USB stick root directory, and contents of menu.lst again in USB root.

Did you run the program multiple times or everything was done in one go?

Edited by ilko_t
Link to comment
Share on other sites

I've tried several times, with only XP, with HP format util, PEtoUSB util, ie fat32, NTFS & fat16..

With XP, BartPE, gparted...

But when i try to select "First part of Windows XP Professional setup from partition 0", it prints out:

Filesystem type is fat, partition typ 0xc

and goes back to GRUB4DOS

I've attached the log file.

Here is the content of menu.lst without the comments:

color black/cyan yellow/cyan
timeout 30
default /default

title First part of Windows XP Professional setup from partition 0
root (hd0,0)
chainloader (hd0,0)/$WIN_NT$.~BT/SETUPLDR.BIN

title Second part of XP Professional setup+Start it first time from part 0
root (hd0,0)
chainloader (hd0,0)/ntldr

title Start BartPE/WinBuilder from partition 0
root (hd0,0)
chainloader /minint/setupldr.bin

Here is the content of the USB-stick:

 Volume in drive K has no label.
Volume Serial Number is 62E8-2568

Directory of K:\

2008-05-07 00:45 188 049 grldr
2008-08-05 18:07 2 447 menu.lst
2007-10-15 23:18 2 048 default
2008-08-05 20:35 232 BOOT.INI
2008-04-14 00:02 250 560 NTLDR
2008-04-13 22:13 47 564 NTDETECT.COM
2008-06-02 03:08 482 043 TXTSETUP.SIF
2008-08-05 18:07 <DIR> $WIN_NT$.~BT
2008-08-05 18:07 <DIR> $WIN_NT$.~LS
2001-09-28 14:00 4 952 BOOTFONT.BIN
2008-08-05 19:50 <DIR> OEM
2008-08-05 19:54 <DIR> minint
2008-08-05 20:21 <DIR> programs
8 File(s) 977 895 bytes
5 Dir(s) 863 223 808 bytes free



Link to comment
Share on other sites

For some reason program fails to create the folder and copy from D:\Private\Projekt\USB\WinSetupFromUSB\TEMP\ where ~BT files are placed temporarily.

What windows are you using? Do you have rights to write in this folder?

Are you using limited account?

Is the folder TEMP created and only copy to it fails?

Can you try to install the program in let's say D:\WinSetupFromUSB and see if the long path is the problem?

To save time and write cycles to the USB stick you may use COPY BOOT FILES ONLY option and eventually QEMU option to test until the problem is fixed.

Link to comment
Share on other sites

What windows are you using? Do you have rights to write in this folder?

Are you using limited account?

Is the folder TEMP created and only copy to it fails?

Can you try to install the program in let's say D:\WinSetupFromUSB and see if the long path is the problem?

Vista x64

Yes, I have rights

Administrator privilege account

Yeah TEMP is created

Tried from D:\WinSetupFromUSB, did not help, same error messages.

Edited by Raboo
Link to comment
Share on other sites

Ok I manually copied & extracted all files that failed to copy using WinSetupFromUSB. And the TXT setup starts but I run into another problem now.. while loading drivers/controllers when it reaches Silicon image SATA something... SI3132B4.sys

It says roughly translated:

Not enough memory for SI3132B4.sys.
Press any key to continue.

And when I do that it says

Installation Failed. Press any key to reboot.

I don't think the whole 1 gb of ram would be full with drivers.. :S

And somehow it worked with USB MultiBoot 10.

The question is, is it the memory or something else?

Did I do something wrong while i copied the missing files?

The $WIN_NT$.~BT is 24mb so I don't really think that the drivers takes 1 gb of ram....

Link to comment
Share on other sites

The parsing of dosnet.inf fails. The double quotes are the problem.

Try to copy first complete XP Source from CD/DVD to Folder on Harddisk e.g. F:\XPR3

Then run WinSetupFromUSB again.

2008/08/05 18:07:25- ERROR!!!----F:"\I386"\ntdetect.com could not be copied to D:\Private\Projekt\USB\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
Edited by wimb
Link to comment
Share on other sites


Thanks Wimb, I should have seen that, guess jet lag is killing me more than I realize.

It's an AutoIt issue with x64 or Vista, under XP i386 using DVD/CD as source does not fail in that part, I took care of that while coding. Just tested it again under XP with Windows files in CD:

2008/08/06 01:27:39- DOSNET.INF parsed, 125 files for ~BT folder
2008/08/06 01:27:39- D:\I386\disk1---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\disk101
2008/08/06 01:27:39- D:\I386\ntdetect.com---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:40- D:\I386\ntkrnlmp.ex_ ---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:40- D:\I386\setupldr.bin---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:40- D:\I386\txtsetup.sif---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:40- D:\I386\biosinfo.inf---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:40- D:\I386\disk1---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\disk102
2008/08/06 01:27:40- D:\I386\hal.dl_ ---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:40- D:\I386\halacpi.dl_ ---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:40- D:\I386\halapic.dl_ ---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:41- D:\I386\halaacpi.dl_ ---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:41- D:\I386\drvmain.sdb---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\
2008/08/06 01:27:41- D:\I386\setupreg.hiv---> C:\WinSetupFromUSB\TEMP\$WIN_NT$.~BT\

At the same time I tested a while ago the program under XP x64 with source on the hard disk and that worked fine.

Quites are not needed in AutoIt for file paths and are not added in the script anywhere, I am curious where they came from.

May have to compile separate version for x64 when I get back home, will investigate further.

Thanks for the accurate reports Raboo, it's pleasure responding to such.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    • No registered users viewing this page.

  • Create New...