tomasz86 Posted August 2, 2012 Share Posted August 2, 2012 (edited) I've found some more "issues" regarding driver INF files and the [sourceDiskFiles] section. I'll try to figure out what the problem is about. I'm also going to test the SATA driver integration (btw, I don't like this name "SATA drivers" because I'm actually testing it with SAS drivers, not SATA ). I've been studying how nLite does it but I think nLite's integration is FAR from perfect because not everything is installed during the setup but rather after the system is started for the first time. I think it would be nice to have everything installed before the first boot Anyway, first I need to fix my system because it's barely running at the moment and I can't even browse the web without the browser crashing :/@GeejI'm not sure if HFSLIP can integrate drivers like this. I'll try to check it later but as far as I know HFSLIP is capable of adding files to driver.cab but I've got doubts whether it can install them automatically.Edit: This is a list of various topics/websites I used when I was testing the method described in #41. I think some of them may be useful:http://www.msfn.org/board/topic/14852-switches-in-txtsetupsif/ (a good one) (check #2)http://www.osronline.com/ddkx/install/inf-format_0icy.htm (crucial info) Edited August 2, 2012 by tomasz86 Link to comment Share on other sites More sharing options...
tomasz86 Posted August 2, 2012 Share Posted August 2, 2012 (edited) I've managed to successfully integrate and install drivers for:Realtek RTL8111EnVIDIA GeForce 6600Sound Blaster Live! 24-bitHere is an updated version of the script:SETLOCAL ENABLEDELAYEDEXPANSIONECHO/>>I386\TXTSETUP.SIFECHO>>I386\TXTSETUP.SIF [SourceDisksFiles]ECHO/>>I386\DOSNET.INFECHO>>I386\DOSNET.INF [Files]ECHO/>>i386\drvindex.infECHO>>i386\drvindex.inf [driver]RD/Q/S i386\driver >NUL 2>&1MD i386\driverEXPAND i386\driver.cab -F:* i386\driverFOR /F "tokens=* delims=" %%I IN ('DIR/AD/B/S drivers') DO ( ECHO>>i386\drvindex.inf ;%%~nI FOR /F "tokens=* delims=" %%J IN ('DIR/A-D/B/S "%%I\*.inf" "%%I\*.cat"') DO ( SET EXT=%%~xJ cabarc -m lzx:21 N "i386\%%~nJ!EXT:~0,-1!_" "%%J" ECHO>>I386\TXTSETUP.SIF %%~nxJ = 1,,,,,,,20,0,0 ECHO>>I386\DOSNET.INF d1,%%~nxJ ) FOR /F "tokens=* delims=" %%J IN ('DIR/A-D/B/S "%%I"') DO ( IF /I NOT "%%~xJ"==".inf" IF /I NOT "%%~xJ"==".cat" ( COPY "%%J" i386\driver ECHO>>i386\drvindex.inf %%~nxJ ) ))CABARC -m lzx:21 N i386\driver.cab i386\driver\*RD/Q/S i386\driverPAUSEFiles will be listed like this in i386\drvindex.inf:[driver];nVIDIA GF6600nv4_disp.dllnv4_mini.sysnvapi.dllnvcod.dllnvcpl.dllnvcpl.hlpnvhwvid.dllnvmccs.dllnvmctray.dllnvnt4cpl.dllnvoglnt.dllnvwcplen.hlpnvwddi.dll;Realtek RTL8111ERtenic.sysRtNicprop32.DLLRTNUninst32.dll;SoundBlaster Live 24-bitA3d.dllct2mgm.sf2CtDvInst.dllctoss2k.sysctsfm2k.sysP17.dllP17.sysP17CPI.dllP17res.dllPfmodnt.syssfman32.dllsfms32.dllso you can easily check which files belong to which driver.For testing purposes you can use lower compression rate (=faster compression time) in this line:CABARC -m lzx:15 N i386\driver.cab i386\driver\*When testing for the first time the drivers for SB Live didn't install because the INF file couldn't find its source files. I checked it and this is how it looked like (after adding the lines in [sourceDisksNames]:[SourceDisksNames]101 = %DriverDisk%,driver.cab,,"..\driver cache\i386"[SourceDisksFiles]P17.sys = 101,I386Pfmodnt.sys = 101,I386ctoss2k.sys = 101,I386ctsfm2k.sys = 101,I386sfman32.dll = 101,I386sfms32.dll = 101,I386CtDvInst.dll = 101,I386ct2mgm.sf2 = 101A3d.dll = 101P17.dll = 101P17CPI.dll = 101P17res.dll = 101This ",I386" was the problem. I had to edit it like this:[SourceDisksFiles]P17.sys = 101Pfmodnt.sys = 101ctoss2k.sys = 101ctsfm2k.sys = 101sfman32.dll = 101sfms32.dll = 101CtDvInst.dll = 101ct2mgm.sf2 = 101A3d.dll = 101P17.dll = 101P17CPI.dll = 101P17res.dll = 101After doing so they were correctly installed I think now only at msfn forum can a user find a solution even if they google hard.That's true. I couldn't find any detailed information in Google. In most places everyone simply said that it was "impossible" or people were giving different suggestions but I couldn't see anything describing how to add drivers directly to driver.cab (and install them automatically). Frankly speaking, I was surprised myself that it was so easy and that editing layout.inf / patching other system files was not necessary. Edited August 2, 2012 by tomasz86 Link to comment Share on other sites More sharing options...
tnx Posted August 2, 2012 Author Share Posted August 2, 2012 Last night I was adding ALL my drivers to DOSNET,TXTSETUP and HIVESFT also amended my WINNT too. It took me ages to sort them all out and I put the instll files onto my usb stck ready for a test install.Today though I have been too busy to mess with my PC so not had chance to test the install. As soon as time allows I will see what happens and reportt back.The way I have done would allow me to easily add new ones or indeed remove any unwanted ones.I have also as a side project been making an up to date disc too. With all the hotfixes,critical updates manually intergrated too. I have yet to test this.I am hopefully going to end up to install discs.One for me to use purely on my machine and one to use on other folks PC'sNO MORE nLite for me..... Link to comment Share on other sites More sharing options...
tomasz86 Posted August 2, 2012 Share Posted August 2, 2012 If you want to manually update the drivers later then of course putting them into separate folders is better... but it's also extremely time-consuming, isn't it? I think it's much easier to use the script and just start once again from the beginning with a default driver.cab when adding/updating drivers. The process is done automatically and doesn't take too much time anyway.At the moment I'm working on SATA/SCSI driver integration. It's a little bit more tricky but not too difficult once you know the rules. Link to comment Share on other sites More sharing options...
tnx Posted August 2, 2012 Author Share Posted August 2, 2012 Well after intergrating all of my drivers,TEN in total.From graphics,audio to the Abit Guru drivers.One error popped up. A file connected to the graphics driver was not copied at install and the PC picked up on this and wrned me it was missing.It didn't seem to stop the graphics drivers working.Apart from that it woked like a charm. So I will look into why the file wont copy. Probebly I may of just simply missed copying it into the source foder.I am feeling pretty pleased with my self I can tell you. Link to comment Share on other sites More sharing options...
tnx Posted August 3, 2012 Author Share Posted August 3, 2012 Found the problem. Dont know why but while compressing the driver file it lost some of it's name ???Been thinking of why the drivers have to be compressed. Is it just simply to save disc space.If it is well by adding all the updates,hotfixes and all my drivers it becomes far too big to fit on a cd-r anyway. So it has to fit on a dvd-r and therefore compressing the drivrers is no longer necessary as there is plenty of room on a dvd-r.So with this in mind I am going to do another test and use regular driver files.This does how work in my favour. Seing I have allready done all the hard work of adding all the info needed to the DOSNET,TXTSETUP and HIVESFT all I need to do is make a duplcate source "MyDrvrs" with duplicate subfolders containg normal driver files then simple swap the folder on the source for my new one. I wont delete the old one but keep it save. Meaning I will have two virtually identical folders\subfolders to choose from.Will report back with my findings.Jess is about to start off in the Olympic park so telly becons.... Link to comment Share on other sites More sharing options...
tnx Posted August 3, 2012 Author Share Posted August 3, 2012 Well I recon that will be my final test for this little project.I swapped all the compressed driver files for NONE compressed driver files and it worked like a charm. NO errors. No warnings. Nothing. Just one re-boot just after the initial install and everything is working fine and when I look into the system hardware there is no unknown devices..I can say...JOB DONE..... Thanks to every body who had input on this. This has been a fun and very worth while project.... Link to comment Share on other sites More sharing options...
tomasz86 Posted August 3, 2012 Share Posted August 3, 2012 (edited) For me it's actually FAR from the end yet After doing more tests I've managed to easily integrate SATA/SCSI drivers. It requires more lines to be added to txtsetup/dosnet/hivesys but eventually seems to work fine. I'll describe it later... because at the moment I'm fighting with automatic driver installation but not during the Windows setup but later when the system is already running. The problem is that the system is unable to automatically find driver files in driver.cab. It can do it during the system installation but cannot when a driver is to be installed in a running system. I think that modyfing layout.inf is inevitable. I've just tested it any all files are installed perfectly fine when they are listed in both layout.inf and drvindex.inf (this is the moment when drvindex.inf starts to play a role).I'll explain everything in details after doing more tests.Edit: I think there is a workaround which does not require to "patch" other system files because of breaking layout.inf's signature.Edit2: Indeed, there is a workaround. It's too funny to be real... Edited August 3, 2012 by tomasz86 Link to comment Share on other sites More sharing options...
tomasz86 Posted August 4, 2012 Share Posted August 4, 2012 (edited) This is my "final" solution. I'll try to describe everything in details basing on the following example.Realtek 10/100/1000 PCI-E NIC Family driver (already mentioned before)1) List of files:netrtle.catNetrtle.infRtenic.sysRtNicprop32.DLLRTNUninst32.dll2) I said in #53 that modifying layout.inf was inevitable. This is only partially true. A proper answer should be that the drivers must use a layout file in order to be automatically installed during the Windows setup and also in a running system when a device is being connected. The method described before didn't work in the second case. The solution to this problem is very simple. Instead of editing the original layout.inf (which is digitally signed) you can just create a new layout file for the drivers. Let's name it "layout2.inf". This is how its basic structure should look like:layout2.inf[Version]Signature="$Windows NT$"[SourceDisksNames]1=,,,\i386[SourceDisksFiles]3) Normally 3rd party (non-M$) drivers check for files by using the path set in [sourceDisksNames] in their INF files. In order to make them use the structure from layout2.inf you have to:- add "LayoutFile=layout2.inf" under [Version]- remove [sourceDisksNames] and [sourceDisksFiles] sections completelyBefore:[version]Signature = "$Chicago$"Compatible = 1Class = NetClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}Provider = %Realtek% CatalogFile.NT = netrtle.cat ;;for WHQL certifiedDriverVer = 02/22/2012,5.794.0222.2012[SourceDisksNames]1=%DISKNAME%,,,[SourceDisksFiles]Rtenic.sys = 1Rtenicxp.sys = 1Rtenic64.sys = 1RTNicProp32.dll = 1RTNicProp64.dll = 1RTNUninst32.dll = 1RTNUninst64.dll = 1After:[code][version]Signature = "$Chicago$"Compatible = 1Class = NetClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}Provider = %Realtek% CatalogFile.NT = netrtle.cat ;;for WHQL certifiedDriverVer = 02/22/2012,5.794.0222.2012LayoutFile = layout2.inf4) Now you should add the driver files to dosnet.inf, txtsetup.sif, layout2.inf and drvindex.inf:dosnet.inf (only layout2.inf, *.cat and *.inf)[Files]d1,layout2.infd1,Netrtle.infd1,netrtle.cattxtsetup.sif (only layout2.inf, *.cat and *.inf)[SourceDisksFiles]layout2.inf = 1,,,,,,,20,0,0Netrtle.inf = 1,,,,,,,20,0,0netrtle.cat = 1,,,,,,,20,0,0layout2.inf (no *.cat and *.inf)[Version]Signature="$Windows NT$"[SourceDisksNames]1=,,,\i386[SourceDisksFiles]Rtenic.sys = 1,,,,,,,,3,3RtNicprop32.DLL = 1,,,,,,,,3,3RTNUninst32.dll = 1,,,,,,,,3,3drvindex.inf (no *.cat and *.inf)[driver]Rtenic.sysRtNicprop32.DLLRTNUninst32.dll"[driver]" means here that the files are located in driver.cab.5). Now you can add the files to driver.cab, pack layout2.inf, other *.inf and *.cat and move them to i386. Details about how to do it are available in #41.In case of mass storage (SATA, SCSI, etc.) drivers more edition is required and I'm going to explain everything in details next time (as I'm running out of time now). I also need to check one thing about the proper location of *.cat files of each driver because they seem not to be signed now... Anyway, the method described above is really exactly the same as the one used by M$. The only difference is that the layout file's name is not "layout.inf" but "layout2.inf" Edited August 4, 2012 by tomasz86 Link to comment Share on other sites More sharing options...
tnx Posted August 4, 2012 Author Share Posted August 4, 2012 Well written......Great job..... Link to comment Share on other sites More sharing options...
tomasz86 Posted October 6, 2012 Share Posted October 6, 2012 (edited) Edit: Wrong topic Edited October 10, 2012 by tomasz86 Link to comment Share on other sites More sharing options...
Piley Posted September 27, 2020 Share Posted September 27, 2020 (edited) Hi, I'm still using an old PC with Windows XP and I need some help finding some missing DLL Files for Windows Media Player and for Microsoft Word/Excel. Or the best way is to uninstall them and then Install them again from a new source? I found some DLL files on one site named dllinstaller but I don't know will that fix my problem. Edited September 29, 2020 by Piley 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