tomasz86 Posted July 16, 2011 Author Share Posted July 16, 2011 (edited) Thank you I know it's still the very alpha stage of your script but if it can be utilised even now then why not? By using it I can check if I merged everything correctly in Update Rollup 2 for example. It can also be used to remove all the unnecessary spaces and reduce the size of the update.inf file.I'll try to prepare such a difficult update.inf and upload it for you.I also have an another question: Is it possible to select sections that I would like to merge?For example, I want to merge only these sections[save.Reg.For.Uninstall][Product.Del.Reg][Product.Add.Reg]Nevermind, I got it. You can select them from the SPLIT_XXX folder after doing splitinf.btw, what are the two pauses in splitinf for?Your script is quite CPU hungry It uses both cores of an Athlon II x2 250 at >60%. Edited July 16, 2011 by tomasz86 Link to comment Share on other sites More sharing options...
jaclaz Posted July 16, 2011 Share Posted July 16, 2011 (edited) Hopefully fixed:the "<=" and "=>" issuesthe [TAB] issuethe two PAUSE (leftover from tests)I don't think the batch is particularly CPU hungry, I presume is the "normal" problem with CMD.EXE (or if you prefer Command Prompt).On my PC running split_inf.cmd raises cpu's usage to around 40%, with peak at around 55%The poorman's way for similar problems has been traditionally that of editing the settings in the \Windows\_default.pif, but cannot really say if it affects "pure batch" execution. (and anyway it rarely does *much* difference)You may want to experiment with :http://mion.faireal.net/BES/jaclazsplit_inf_3.zip Edited July 16, 2011 by jaclaz Link to comment Share on other sites More sharing options...
tomasz86 Posted July 17, 2011 Author Share Posted July 17, 2011 "Echo is off." still present update.inf Link to comment Share on other sites More sharing options...
jaclaz Posted July 17, 2011 Share Posted July 17, 2011 "Echo is off." still present update.infNot here , using on the above file splitinf.cmd dated 16/07/2011, I can find no "ECHO" in any of the files in the "SPLIT_" directory.Nor, after having used join_dedupe_inf.cmd dated 15/07/2011 in the "JOINED_" .inf.BUT there was a problem (NOT related to the ECHO) in beautify.cmd (forgot a few x's, my bad )Find atttached the SAME splitinf.cmd and join_dedupe_inf.cmd with a corrected beautify.cmdTry again.jaclazsplit_inf_4.zip Link to comment Share on other sites More sharing options...
tomasz86 Posted July 21, 2011 Author Share Posted July 21, 2011 (edited) I haven't prepared the update.inf yet but I have some information about deduping sections.Generally, all [*.files] sections can be deduped without any problems.[sourceDisksNames] & [sourceDisksFiles] can be also deduped.As for the strings I wrote about a few days ago it's like this: The basic structure:[Save.Reg.For.Uninstall] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE% HKLM,SOFTWARE\Microsoft\Updates\Windows 2000\SP%SERVICE_PACK_NUMBER%\%SP_SHORT_TITLE%[Product.Add.Reg] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Installed",0x10001,1 HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Comments",0,%SP_TITLE% HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Backup Dir",0,"" HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Fix Description",0,%SP_TITLE% HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Installed By",0,"" HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Installed On",0,"" HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Service Pack",0x10001,%SERVICE_PACK_NUMBER% HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Valid",0x10001,1 HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%\File 1\,"Flags",0,"" HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%\File 1\,"New File",0,"" HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%\File 1\,"New Link Date",0,"" HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%\File 1\,"Old Link Date",0,"" HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%,"ReleaseType",0,Hotfix HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%,"RegistryLocation",0,"HKLM\SOFTWARE\Microsoft\Updates\Windows 2000\SP%SERVICE_PACK_NUMBER%\%SP_SHORT_TITLE%" HKLM,SOFTWARE\Microsoft\Updates\Windows 2000\SP%SERVICE_PACK_NUMBER%\%SP_SHORT_TITLE%,"Description",,%SP_TITLE%; Plugin.ocx HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%","DisplayIcon",0x00020000, "%windir%\System32\msiexec.exe"Without any loss of necessary data it can be reduced to[Save.Reg.For.Uninstall] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE% HKLM,SOFTWARE\Microsoft\Updates\Windows 2000\SP%SERVICE_PACK_NUMBER%\%SP_SHORT_TITLE%[Product.Add.Reg] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Installed",0x10001,1This lineHKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%","DisplayIcon",0x00020000, "%windir%\System32\msiexec.exe"should be reduced and go to both [save.Reg.For.Uninstall] & [Product.Del.Reg].Final thing should look like this:[Save.Reg.For.Uninstall] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE% HKLM,SOFTWARE\Microsoft\Updates\Windows 2000\SP%SERVICE_PACK_NUMBER%\%SP_SHORT_TITLE% HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%[Product.Del.Reg] HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%[Product.Add.Reg] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Installed",0x10001,1Finally, SP%SERVICE_PACK_NUMBER% should be changed to SP5 (all Win2k updates after SP4 are listed as SP5).So if we add ex. KB123456 it should be[Save.Reg.For.Uninstall] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB123456 HKLM,SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB123456 HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB123456[Product.Del.Reg] HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB123456[Product.Add.Reg] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB123456,"Installed",0x10001,1The line HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB123456in [Product.Del.Reg] is necessary to remove KB123456 from the list of installed updates. On the other hand, HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB123456,"Installed",0x10001,1is needed to tell Windows Updates that KB123456 is installed.Is is also important to note that the basic structure I put above is also needed but in the case of a merged update it will be related to the name of the merged update, not the updates included in it.I'll give an example. Let's say we merge two updates - KB123456 & KB234567. The merged info should be[Save.Reg.For.Uninstall] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB123456 HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB234567 HKLM,SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB123456 HKLM,SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB234567 HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB123456 HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB234567[Product.Del.Reg] HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB123456 HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB234567[Product.Add.Reg] HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB123456,"Installed",0x10001,1 HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB234567,"Installed",0x10001,1I hope you understand what I mean. Please tell me if my explanation is unclear or too complicated Edited July 21, 2011 by tomasz86 Link to comment Share on other sites More sharing options...
jaclaz Posted July 21, 2011 Share Posted July 21, 2011 I hope you understand what I mean. Please tell me if my explanation is unclear or too complicated Yes/no. As I see it it is out of "current scope". All that seems to me like something that may be "post-processed". (and consequently to be tackled later, ONCE we have "basic" functionalities working).Current scope (as I see it) is to "consolidate" and "merge" whatever is in the "source" files into a "monolithic" file with NO CHANGES to the contents WHATSOEVER (apart removing crazy blank spaces and [TAB]'s). jaclaz Link to comment Share on other sites More sharing options...
tomasz86 Posted July 21, 2011 Author Share Posted July 21, 2011 (edited) I see So far I haven't seen any other problems connected with merging. I used your script to merge many update.inf files from Win2k updates and everything seems to work fine unless the update.inf itself has different structure (ex. IE/OE updates or WMP updates are different). Edited July 21, 2011 by tomasz86 Link to comment Share on other sites More sharing options...
tomasz86 Posted July 22, 2011 Author Share Posted July 22, 2011 (edited) I found a freeware program called CMSort which is able to sort files and remove duplicates from them.cmsort.exe /D 1.txt 1.sorThe problem is that the file has to be specified, i.e. it doesn't seem possible to use it for multiple files at once.I wonder if it is possible to modify your script to have it sort all files in %Split_dir% one by one as they are created.EDITOnce again I tried to use the HFSLIP string mentioned in the beginning of this topic@ECHO OFFIF EXIST SPLIT_update\*.inf ( MD SPLIT_update\CMSORT DIR/B/A-D/OGN/ON SPLIT_update\*.inf>CMSORT.TXT SET CMSORT= FOR /F %%I IN (CMSORT.TXT) DO (SET CMSORT=%%I&IF DEFINED CMSORT CALL :CMSORT) DEL/Q/S CMSORT.TXT)IF NOT EXIST SPLIT_update\*.inf ( EXIT):CMSORTcmsort /D /H=2 SPLIT_update\%CMSORT% SPLIT_update\CMSORT\%CMSORT%xcopy/Y SPLIT_update\CMSORT\%CMSORT% SPLIT_update\ECHO.IF NOT EXIST CMSORT.TXT ( RD/Q/S SPLIT_UPDATE\CMSORT)The only problem is that [1ndex]update.inf should be excluded from sorting as it contains list of sections in their original order.EDITjaclaz,there is strange line in KB918118, KB925902, KB926247, KB927891, KB928843, KB935839 for Win2k. In [strings] the last line isKODAK_DIR = "Windows NT\Accessories\ImageVue"@i:@u: [WatsonManifestMode.Cancel]Because of this [strings] & [WatsonManifestMode.Cancel] get mixed when processed by your script. Edited July 22, 2011 by tomasz86 Link to comment Share on other sites More sharing options...
jaclaz Posted July 22, 2011 Share Posted July 22, 2011 The only problem is that [1ndex]update.inf should be excluded from sorting as it contains list of sections in their original order.That is NOT a problem, add::CMSORT IF "%CMSORT%"=="[1ndex]update.inf" GOTO :EOFcmsort /D /H=2 SPLIT_update\%CMSORT% SPLIT_update\CMSORT\%CMSORT% xcopy/Y SPLIT_update\CMSORT\%CMSORT% SPLIT_update\ ECHO. IF NOT EXIST CMSORT.TXT ( RD/Q/S SPLIT_UPDATE\CMSORT )Still waiting for the "fake" problematic .inf .... jaclaz Link to comment Share on other sites More sharing options...
tomasz86 Posted July 22, 2011 Author Share Posted July 22, 2011 Actually I haven't found any other problems except this oneKODAK_DIR = "Windows NT\Accessories\ImageVue"@i:@u: [WatsonManifestMode.Cancel]which I mentioned above Link to comment Share on other sites More sharing options...
tomasz86 Posted July 23, 2011 Author Share Posted July 23, 2011 (edited) An emty file "2.53" gets created because of this line:; These files are installed even if MDAC > 2.53 is present.It's just an explanatory note I wrote.This lineHKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion","Plus! ProductId"is changed toHKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion","Plus ProductId""!" is gone.Also this update.inf has many informative strings starting with ; and it gets messed pretty badly after running your script Edited July 23, 2011 by tomasz86 Link to comment Share on other sites More sharing options...
jaclaz Posted July 26, 2011 Share Posted July 26, 2011 Also this update.inf has many informative strings starting with ; and it gets messed pretty badly after running your script Try the attached.jaclazsplit_inf_5.7z Link to comment Share on other sites More sharing options...
tomasz86 Posted July 26, 2011 Author Share Posted July 26, 2011 (edited) Thank you It seems to be OK now.There is still this problem with [WatsonManifestMode.Cancel] which causes lines in [strings] to be divided into two separate sections.You can see it if you process this update.inf through your script.BTW, I did this:CMSORTTOOLS\cmsort.exe /D /H=2 SPLIT_update\%CMSORT% SPLIT_update\CMSORT\%CMSORT%IF EXIST SPLIT_update\CMSORT\[1ndex]update.inf DEL/Q SPLIT_update\CMSORT\[1ndex]update.inf IF EXIST SPLIT_update\CMSORT\*Add.Reg]update.inf DEL/Q SPLIT_update\CMSORT\*Add.Reg]update.infIF EXIST SPLIT_update\CMSORT\*AddReg]update.inf DEL/Q SPLIT_update\CMSORT\*AddReg]update.infxcopy/Y SPLIT_update\CMSORT\%CMSORT% SPLIT_update\ECHO.instead of IF "%CMSORT%"=="[1ndex]update.inf" GOTO :EOFAdd.Reg sections also shouldn't be sorted and deduped as newer updates may update the older ones. After using CMSORT their order may be wrong. Edited July 26, 2011 by tomasz86 Link to comment Share on other sites More sharing options...
jaclaz Posted July 27, 2011 Share Posted July 27, 2011 Thank you It seems to be OK now.There is still this problem with [WatsonManifestMode.Cancel] which causes lines in [strings] to be divided into two separate sections.Try the attached. Add.Reg sections also shouldn't be sorted and deduped as newer updates may update the older ones. After using CMSORT their order may be wrong.And still this belongs to the actual merging command ( which is yet to be written).jaclazsplit_inf_6.7z Link to comment Share on other sites More sharing options...
tomasz86 Posted July 27, 2011 Author Share Posted July 27, 2011 Add.Reg sections also shouldn't be sorted and deduped as newer updates may update the older ones. After using CMSORT their order may be wrong.And still this belongs to the actual merging command ( which is yet to be written).I know I was to talking in the relation to CMSORT in case someone else will use it to dedupe these sections. 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