VOGONS


First post, by wallythander

User metadata
Rank Newbie
Rank
Newbie

I have decided that I want to do with Windows 98 what I have done with XP, and that is to create an unattended install, with drivers I either always need, or often need included.

MSBatch.inf worked out pretty smoothly using the included utility, but I wanted to push further.

I started using rloew's Slipstream 1.4, and decided to start, I would try to slipstream enhanced DOSkey.com, and because I tend to use Windows 98 on anything Pentium 2 or newer, and starting off with just DOSKey, I decided to try to integrate Maximus Decimus's unofficial USB driver.

It has sort of worked, but I didn't really effectively manage to integrate the USB driver, and I suspect part of it is choosing something pretty ambitious. DOSKey is successfully slipstreamed, and the USB driver identifies USB 2 chipsets on real hardware, but has warnings on the drivers for NEC USB Open Host Controller (E13+), Standard Universal PCI to USB Host Controller, and USB 2.0 Root Hub. All with "The NTKERN.VXD device loader(s) for this device could not load the device driver. (Code 2)."

I think I got the layout*.inf, copy*.inf and subase.inf modifications done correctly, but I just used bone-stock INFs that I extracted from the unofficial USB driver installer.

Another interesting side-effect, but I seem to have kind of broken the Windows 98 SE install, I suspect with some of the ME files from the unofficial USB driver.

I get the usual screens for adding hardware during install, but it says "Windows Millennium Edition is now initializing its driver database," and when Windows 98 reboots for the first time, all hardware is discovered fresh and added one by one.

Has anyone successfully integrated the unofficial USB driver into Windows 98 SE, without using one of the solutions that replaces the Windows 98 installer?

I honestly want the experience of going through the official installer, even if I don't want to have to remember to install the USB stack every time. I was hoping to integrate a couple of drivers for other things, and I am kind of hoping those will be a bit easier, a couple of NIC drivers, Intel chipset drivers, and Via chipset drivers. Since they aren't as modern as the unofficial USB drivers.

Reply 1 of 14, by wallythander

User metadata
Rank Newbie
Rank
Newbie

Not trying to do the USB driver would have probably been a good idea. Trying with a simpler driver, the Realtek RTL8139C+, which I can emulate in 86box, I still run into an obstacle. When I look in the cab file, and the layout, I should have the requisite INF file for the driver copied over to the C:\Windows\INF folder. But it seems to be missing. The CAT file is in the CATALOG3.CAB file, and everything is right, so far as I can tell, in LAYOUT*.inf, COPY*.inf and SUBASE.inf. I am putting the two INF files in PRECOPY2.CAB, maybe that is an error in judgement, entirely likely the problem is PEBKAC, I will try again later.

I at least didn't kill the Windows 98 setup this time by replacing files!

I also tried adding drivers for an ADAPTEC ASC-39160, which I have handy and in a real hardware setup that I can test. I am not sure that worked either, but I think I should probably try to get the Realtek drivers working first, then try real hardware drivers.

Reply 2 of 14, by doshea

User metadata
Rank Member
Rank
Member

I've spent some time automating Windows 9x installs, with some Python code assembling the files, but I avoided doing what you're doing because modifying .CAB files just seems too painful! I only copied some drivers in bsetup.inf in a way that I have to set [System] Display="..." to force it to use the driver. Good enough for my "build an install directory for this specific machine", but not good enough if you want a generic kind of install that will work on multiple machines.

Instead of what you're doing, have you considered running driver installers automatically after Setup is done? Obviously that's not a great solution if the driver is for the disk you want to install onto, for example, but I imagine USB drivers are the kind of thing you could install later.

Reply 3 of 14, by Harry Potter

User metadata
Rank Oldbie
Rank
Oldbie

If you want DOS-based USB drivers, go to https://dosprograms.info.tt/indexall.htm then go to the Utils section, and you will find some USB drivers for DOS. I recommend copying the Windows CD to your hard drive then running it from there, as the driver is Shareware and will stop working after a short period of time.

Joseph Rose, a.k.a. Harry Potter
Working magic in the computer community

Reply 4 of 14, by wallythander

User metadata
Rank Newbie
Rank
Newbie

Instead of what you're doing, have you considered running driver installers automatically after Setup is done? Obviously that's not a great solution if the driver is for the disk you want to install onto, for example, but I imagine USB drivers are the kind of thing you could install later.

I might just do that, I think I would have to re-add the devices in Device Manager by hand that way. I found sweetlow's USB packages, and those look a bit more promising for integration to me (fewer files at least, and hopefully won't bork the setup).

I also realized, I had not added the network card inf to SETUPPP.INF, so I wonder if that explains the failure on the network card addition? I am purely doing it because 86box has that card, and so I can test more conveniently whether it worked.

I am rebuilding the cabs now to see.

modifying .CAB files just seems too painful!

I am really starting to think that might be the case, resealing the cabs using rloew's slipstream tool in 86box is fairly slow.

If you want DOS-based USB drivers, go to https://dosprograms.info.tt/indexall.htm then go to the Utils section

Interesting, I didn't know about those, that is really neat. Is there no way to pay for them at this point? I mostly just want USB 2.0 cards to kind of work out of the box in Windows, I like to use flash drives for file transfer between new and old. I also have a Pentium that I have DOS 6.22 installed on, and that would be pretty handy.

Reply 5 of 14, by Harry Potter

User metadata
Rank Oldbie
Rank
Oldbie

For the Windows version, Google "nusb36e.zip." As for DOS, just copy some files at a time, reboot your system then copy some more, as the drivers will stop working after a while, as they're Shareware. As for registering, I don't know either: I just looked and saw no information on registering. Sorry. 🙁

Joseph Rose, a.k.a. Harry Potter
Working magic in the computer community

Reply 6 of 14, by wallythander

User metadata
Rank Newbie
Rank
Newbie

The .INF file for the SCSI driver I added caused setup to have a fit. Then I tried removing the INF from setuppp.inf, and forgot to actually copy the modified file, and rebuilt all over again.

"Setup cannot open C:\WINSTO.400\Adpu160m.inf. The file may be missing or damaged, or there may not be enough memory to continue. Free some memory or increase your swap file size, and then try running Setup again. Message SU0410"

Reply 7 of 14, by wallythander

User metadata
Rank Newbie
Rank
Newbie

I did that two separate times.

I realize, other explicit SCSI drivers were not mentioned in SETUPPP.INF, and I think it was a mistake to include it at all. But I also don't think I have it setup to work (if I were to install it on real hardware, with that adapter).

Even when I successfully removed Adpu160m.inf from SETUPPP.inf, the Realtek RTL8139C+ is still not detected properly, I wonder if I need to modify the .inf file from the Realtek drivers to get it to work?

Reply 8 of 14, by wallythander

User metadata
Rank Newbie
Rank
Newbie

I tried to do it the infinst way, and it turned out poorly.

Reply 9 of 14, by doshea

User metadata
Rank Member
Rank
Member
wallythander wrote on 2025-07-13, 22:07:

Instead of what you're doing, have you considered running driver installers automatically after Setup is done? Obviously that's not a great solution if the driver is for the disk you want to install onto, for example, but I imagine USB drivers are the kind of thing you could install later.

I might just do that, I think I would have to re-add the devices in Device Manager by hand that way.

Worst case, I'd imagine you should be able to install the drivers, then use an AutoHotkey script to click through the "Add New Hardware" wizard or something. I haven't tried that but I imagine AutoHotkey should be able to do it - I've managed it to interact with stuff during Windows 9x setup, which seems like it would be less likely to work.

Regarding the errors you're seeing, I have a vague memory that there might be a size limit for some setup .INF file, but I couldn't find anything in my notes. It may well be that the limit is for Windows 3.1 - I've automated quite a few different old installs and don't remember where I saw this. However, I suspect that the phase of install you're seeing those in is one where it's 16-bit, so perhaps there's a 64K limit on the size of the .INF file there? I could be completely wrong though. I'd check old TechNet articles for you if I had time.

Reply 10 of 14, by wallythander

User metadata
Rank Newbie
Rank
Newbie

Woooooo!

I got the Realtek ethernet driver integrated. With infinst. I meant to attach a screenshot of netrts5.inf throwing the same message as the Adaptec SCSI driver.

I manually removed the NT 5 parts of the INF file, but looking back at my screenshots, I don't have one of netrts5.inf throwing the same message, but pretty sure I tried that, and got the same message.

Reply 11 of 14, by wallythander

User metadata
Rank Newbie
Rank
Newbie

Pretty sure I must have made a mistake, I think the issue was with Adpu160m.inf itself, as I got it from Adaptec.

It has a signature of "$Windows 95$" which installing from Windows 98 seemed to be ok with, but the Windows 98 installer really didn't like it. Once I changed it to "$Chicago$" it worked when I added it with infinst. On real hardware, my fancy AHA-3960D Ultra 160 PCI-X SCSI card was seen and properly added in Windows before first boot.

My next step was adding Intel Pro 100/1000 ethernet drivers, and that went off without a hitch. Also using infinst.


I proceeded to extract the contents of the Intel Chipset Drivers 6.3.0.1007 installer, infinst_enu.exe, and used the "/A" parameter with the setup.exe file within to get the INF files out. Intel sticks them into a folder for you in Programs when you do that.

I was able to use infinst to add all the Intel chipset drivers. When adding INFs for core chipset drivers, it would complain about not being able to find some of the files mentioned in the INFs, but I recognized a lot of them (and Googled the rest) as Windows 98 system files. I assumed that the drivers would have access to those files after install. It failed, because of a largely unrelated obstacle. Apparently, the maximum size for a .inf file is 64kb (or maybe just under)

Just as doshea suggested

doshea wrote on 2025-07-15, 10:57:

Regarding the errors you're seeing, I have a vague memory that there might be a size limit for some setup .INF file, but I couldn't find anything in my notes. It may well be that the limit is for Windows 3.1 - I've automated quite a few different old installs and don't remember where I saw this. However, I suspect that the phase of install you're seeing those in is one where it's 16-bit, so perhaps there's a 64K limit on the size of the .INF file there? I could be completely wrong though. I'd check old TechNet articles for you if I had time.

And infinst had made "machine.inf" larger than that, by repeatedly commenting out the same piece of the inf file. Each INF I added I think, added a comment in that file, in front of the last inf's comment, which caused it to blow past 64kb. Removing those comments (and what they were commenting out) brought the file well into the acceptable size range. infinst also did that to varying extents in different ich#core.inf and ich#corm.inf files, so I also trimmed those down, making all my .inf files from adding the Intel chipset drivers smaller than 45kb or so. Seems like a lot of space gain, especially for machine.inf, but it worked.


After those wins, I decided to try nusb36e again. I did not integrate "NODRIVER.INF," but am not sure that made a difference. infinst complained that some files that I did not recognize were missing and mentioned in the inf. I erred on skipping. I only integrated the files mentioned in the INF files, I did no swapping of any other files like explorer.exe. It worked better than it did before by using infinst, it didn't break the setup at all, but there were issues with the drivers failing to load, again. Same error "The NTKERN.VXD device loader(s) for this device could not load the device driver. (Code 2)." on some of the USB devices, and my flashdrive didn't work. I have always used nusb36e, but I remembered somewhere in the back of my head, that some people objected to how much 36 changed (something about how much of the Server 2003 USB stack it uses?), and preferred nusb33e. I don't have any sort of purity objection to that, but maybe the Windows 9x setup did?

So I tried nusb33e.exe. This time, I integrated "NODRIVER.INF" and ignored the files it mentioned that infinst couldn't find, hoping that it would work out in a fully setup Windows 98 setup. Otherwise essentially exactly the same process. It worked! First boot, and boom, everything is good in device manager.

I don't get the add/remove devices options in the taskbar, but my USB 2.0 flashdrive just works on first boot after install. I wonder if I could create a simplified nusb installer, that runs at the very end of setup, that does some of the file replacements (like to explorer.exe) the full installer does that I am not replicating. Or maybe upgrade to nusb36e (using it's full installer), potentially? A batch script to copy the files perhaps? I haven't exactly made up my mind on how I want to setup the rest of the pieces for USB, but I am kind of hopeful I can get it to work.


After USB, I am hoping to integrate Via 4in1, ALi chipset drivers, and Microsoft Intellivision 5 button wheel mouse drivers. My end goal is to have a Windows 98 install that isn't just unattended, but essentially only requires installing video and sound drivers after first boot.

Reply 12 of 14, by myne

User metadata
Rank Oldbie
Rank
Oldbie

I had some misadventures with infs and updates a while back before I got bored.

There's some powershell scripts that you might find useful here

https://forums.overclockers.com.au/threads/sh … .1311910/page-7

I built:
Convert old ASUS ASC boardviews to KICAD PCB!
Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11+tcp+vbe_svga auto-install iso template
Script to backup Win9x\ME drivers from a working install
Re: The thing no one asked for: KICAD 440bx reference schematic

Reply 13 of 14, by wallythander

User metadata
Rank Newbie
Rank
Newbie
myne wrote on Yesterday, 05:22:

I had some misadventures with infs and updates a while back before I got bored.

There's some powershell scripts that you might find useful here

https://forums.overclockers.com.au/threads/sh … .1311910/page-7

Interesting! I seem to be having success with infinst, so your powershell script is just making a batch file to replace an inf for installing drivers? I am not very familiar with Powershell.

Today, I did some surgery to nusb33e, I removed all references to the drivers, leaving only the replacement files behind, and new files to add that are not drivers, or explicitly mentioned in the INFs.

It worked when I used the _start.bat file from the disassembled nusb, with a modified _nusb.inf post install with my modified WIN98 folder with all the drivers already included. Everything seemed great, I got the add/remove hardware dialogue in systray. Woohoo!

So I thought my next step was to try to use IExpress to create a modified single .exe installer file for those non-driver files.

I cannot mange to get it to work. If I try to use Internet Express 2 (the "outdated" version from MGDx's list), I get errors about being unable to find any of the files, asking me to insert a disk titled with SrcDiskName, which in this case is "Native USB-flashdisk for Windows 98 3.3 Eng include 242975." I definitely added all the files into the exe through the wizard.

When I try to use a newer version, I just get an advanced INF error. As opposed to not being able to find the files, so at least that is different. I haven't installed the latest 9x compatible update to IExpress yet, maybe that will fix it?

That way, I can run the EXE as a part of msbatch.inf, at least that is the end goal. USB drivers integrated, and get picked up by PnP setup. Then files replaced at the end of that first boot, and I reboot into Windows 98 to add my display.

Reply 14 of 14, by myne

User metadata
Rank Oldbie
Rank
Oldbie

Yeah more or less.

A inf really only does 2 basic things.

Add/remove files
Add/remove reg keys

There's obviously logic to sort which path to take (Eg $Chicago$ vs $x.Nt) , but the result always amounts to that.

So once you know what files and what reg keys, it's not that hard to convert to bat.

Powershell isn't that hard and I like to imagine my code uses variable and function names that make it easy to follow.

There's a zipped iso in there that contains all the ME updates and the reg/bat files to "install" them from dos.

Ie, it takes a fresh install and makes it the same as a fully updated one in a couple of minutes from dos.

Those may give you ideas too. Eg bats are trivial vs 3rd party installer configs

I built:
Convert old ASUS ASC boardviews to KICAD PCB!
Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11+tcp+vbe_svga auto-install iso template
Script to backup Win9x\ME drivers from a working install
Re: The thing no one asked for: KICAD 440bx reference schematic