@Sajjo For some reason I can't match sizes of all .cab files. I can match precopy1.cab size, precopy2.cab size (only if precopy3.cab doesn't exist) but not precopy3.cab. Code: ; Diamond_Directive File ; .Option Explicit .Set SourceDir=".\precopy1" .Set DiskDirectoryTemplate=".\" .Set DiskLabel1=1 .Set DiskLabel2=2 .Set DiskLabel3=3 .Set CabinetName1=PRECOPY1.CAB .Set CabinetName2=PRECOPY2.CAB .Set CabinetName3=PRECOPY3.CAB .Set MaxDiskSize1=135680 .Set MaxDiskSize2=1802240 .Set CabinetFileCountThreshold=0 .Set FolderFileCountThreshold=0 .Set FolderSizeThreshold=1000000 .Set UniqueFiles=OFF .Set RptFileName=nul .Set InfFileName=nul .Set cabinet=ON .Set Compress=ON .Set CompressionType=lzx .Set CompressionMemory=21 .Set ReservePerCabinetSize=0 ; PRECOPY1.CAB dblspace.bat defrag.bat drvspace.bat scandisk.bat sucheck.bat sufail.bat coll0.bin coll1.bin coll10.bin coll11.bin coll12.bin coll13.bin coll14.bin coll15.bin coll16.bin coll17.bin coll18.bin coll19.bin coll2.bin coll3.bin ; PRECOPY2.CAB 1394.inf 9xmig.dll adapter.inf amovie.inf apcompat.inf applets.inf applets1.inf atitunep.inf atixbar.inf awfax.inf awupd.inf bt829.inf cemmf.inf certify.inf cfgwiz.dll cfgwiz32.exe coll4.bin coll5.bin coll6.bin coll7.bin coll8.bin coll9.bin comctl31.dll command.com commctrl.dll commdlg.dll complinc.dll content.inf copy.inf copy1.inf copy2.inf cwbaud98.inf dbc.inf del.inf del1.inf del2.inf deskmgmt.inf dindi.dll diskdrv.inf dlcndi.dll dosbox.inf drivers.ddb drvspace.bin dskmaint.dll dvd.inf dxati.inf dxchips.inf dxcirrus.inf dxglint.inf dxi128.inf dxmedia.inf dxmga.inf dxmm3dfx.inf dxneom.inf dxnvidia.inf dxpmedia.inf dxrend.inf dxs3.inf dxtrans.inf dxtrid.inf dxtseng.inf dxwd.inf enable.inf ethpcmdm.inf ethpcmf.inf ethpcnet.inf eudcedit.inf f3audio.inf fefonts.inf fommctrl.dll fonts.inf gps.inf guid.inf hiddev.inf hwinfo.exe ibm4mir.inf ibmeimp.inf ics.inf icshare.inf icsharep.inf icw97.inf ie.inf iedat16.inf iefiles.inf ieshell.inf image.inf ime.inf inetmail.inf infrared.dll infrared.inf instcm16.inf issetup.dll isupport.inf joystick.inf keyboard.inf kommctrl.dll ks.inf kscaptur.inf ksfilter.inf locale.inf lzexpand.dll machine.inf machine2.inf mdacinst.inf mdm3cusb.inf mdmgl001.inf mdmgl002.inf mdmgl003.inf mdmgl004.inf mdmgl005.inf mdmgl006.inf mdmgl007.inf mdmgl100.inf mdmluc.inf mf.inf mf8020m.inf mfcem28.inf mfcem33.inf mfosi.inf midi.inf modems.inf monitor.inf monitor2.inf monitor3.inf monitor4.inf monitor5.inf monitor6.inf monitor7.inf monitr10.inf monitr11.inf motown.inf mpcodecs.inf mplay98.inf msbase.inf mscdrom.inf msddraw.inf msdet.inf msdisp.inf msdos.inf msdsound.inf msdv.inf msdxwin.inf msfdc.inf msinfo.inf msjava16.inf msmail.inf msmouse.inf msnclnup.inf msports.inf msprint.dll msprint.inf msprint2.dll msprint2.inf msprint3.inf msprint4.inf mstask.inf mstcp.dll mtd.inf mullang.inf multilng.inf ndiswan.inf ndswan16.dll ndswan32.dll net100i.inf net2xnet.inf net3c562.inf net3c575.inf net3c589.inf net3com.inf net3comt.inf net557.inf net8020m.inf neta351.inf netamd.inf netapi.dll netatki.inf netblue.inf netbw.inf netcable.inf netcbdec.inf netcbe.inf netce2.inf netce3.inf netcem.inf netcem28.inf netcem33.inf netcli.inf netcli3.inf netcpq.inf netcrc.inf netdec.inf netdef.inf netdi.dll netdl660.inf netdlc.inf nete100i.inf nete10p.inf netee16.inf netejet.inf netel59x.inf netel5x9.inf netel90x.inf netenet.inf netepc.inf netex10.inf netfake.inf netfam.inf netfar.inf netfjvi.inf netfjvj.inf netfl32.inf netflex.inf netfore.inf netgen.inf nethp.inf nethpind.inf nethppci.inf nethppnd.inf netibm.inf netibm1.inf netibm2.inf netibmv.inf neticard.inf netinfo.inf netlane.inf netm16a.inf netm32a.inf netmadge.inf netmatmc.inf netmdyp.inf netmhz.inf netnepls.inf netnf3.inf netnice.inf netnovel.inf neto100.inf netoca1p.inf netoce3x.inf netoce4x.inf netoli.inf netos.dll netosi.inf netpci.inf netppp.inf netpptp.inf netpro10.inf netprot.inf netrnsf.inf netrptip.inf netrt.inf netrtf.inf netservr.inf netsilc.inf netsmc.inf netsmc1.inf netsmc2.inf netsmctr.inf netsnip.inf netsock.inf netstrm.inf nettcc.inf nettdkp.inf nettlan.inf nettpro.inf netxir.inf nodriver.inf ntmap.inf nwnds.dll oce2xmf.inf octkmf.inf octknet.inf oe9x50.inf ole2.inf oobeinst.inf osr2.inf osrcln.inf pcmcia.inf pcmciamf.inf pidgen.dll powercfg.inf pppndi.dll predrv.inf prtupd.inf pwsinfo.inf regwiz.inf ren.inf rna.inf rnaserv.dll rnasetup.dll sb16awe.inf sbp2.inf scanreg.exe scsi.inf sctools.inf shell.dll shell.inf shell2.inf subackbb.bin suexpand.dll sulfnbk.exe suwin.exe sysdetmg.dll ver.dll verx.dll win3x.csb win95.csb win95bb.dll win98.csb win98u.csb winsock.dll wsock32.dll ; PRECOPY3.CAB appletpp.inf atmuni.inf axa.inf cabpayie.inf cchat25.inf clip.inf cxpdfgo.inf cxpdfpci.inf decpsmw4.inf default.sfc didiva.inf digiisdn.inf diwan.inf drvspace.sys easyisdn.inf grouppol.inf ieeula.chm iesupp.chm imagevue.inf infoisdn.inf layout.inf layout1.inf layout2.inf license.chm license.txt lic_help.txt mfdfgo.inf mfdfpci.inf mmopt.inf mpsupp.hlp msdxddex.inf mshdc.inf msnetmtg.inf mtshelp.chm ncplatfm.inf ncwandis.inf ndscli.inf net.inf netaic59.inf netcd.inf netcmdr.inf netdca.inf netdet.ini netdfgo.inf netdfpci.inf netdlc32.inf neteni25.inf netevx.inf netibmtb.inf netncr.inf netracal.inf netsmc32.inf nettrans.inf nettulip.inf netub.inf netznote.inf ols.inf precopy.inf pws_main.htm rplimage.dll sampler.inf scanreg.pif setupc.inf setuppp.inf setupx.dll shell3.inf support.txt swdir16.inf swenum.inf swflsh16.inf taishid.inf tapi.inf themes.inf themes1.inf themes2.inf timezone.inf tour98.inf tshoot.inf umaxusd.inf unimodv.inf unknown.inf usb.inf usbcdc.inf usbwave.inf usp10.inf vdolive.inf vgx.inf vidcap.inf wab9x50.inf wan.tsp wave.inf wbem.inf wdmaudio.inf wdmfs.sys webfdr16.inf webhelp.chm win95bb.ini winboot.sys winver.inf winver1.inf wmidrv.sys wordpad.inf wpwin98.inf ws2atmsp.inf wsh.inf What should I do? 795.7 KB(814,846 Bayt) vs. 812.7 KB(832,188 Bayt).
@example12345678912345678 Can't you just use some of the coding i presented for 2 precopy cab's and 3 precopy cab's? They work perfectly in size comparison. I would suggest in the sequence where you unpack original cab's to echo output to directive file Code: Set MaxDiskSize1=%~z1 Set MaxDiskSize2=%~z2 Turn on echo and add a few breaks in your script, see if you can catch the culprit. If you like, PM me you're script and whitch files you use and I can help you (the best i can ofc)
@Sajjo, @liliactr I finally released v0.2a the bugfix update. I struggled to match precopy3.cab sizes. Another thing is a 4.cab file was being created on my attempts which is unexpected and unwanted. After some researches, code changes and finally executable replacements I finally did it. Even though precopy3.cab filesize does not exactly match. 784 KB (original) vs. 820 KB (repacked) despite being closer than previous attempts 784 KB (original) vs. ~1.3MB (repacked). @xkai2013 This release now should fix your problem with precopy3.cab on Windows 98. Even though I never got any errors during the installation, some warnings and "illegal operation" errors forced me to boot to the safe mode in my screenshot. Spoiler: Windows 98 Internal Simp Chinese P.S: I don't wanna get warned or banned, so I censored some parts of the product key. But I have original screenshot with full product key shown. Support for Windows 95 conversions are planned, will be released in v0.3 as long as there're no other problems arise. ProductType value can take (1-9) and CCP value can take (0-1), I'm planning to offer 9x2=18 different options in Windows 95 conversions. Maybe this can help us to identify the unknown ProductType values 5 and 6, maybe create custom stuff like Internal Upgrade CD(?)
@example12345678912345678 0.2a: While compressing Precopy1.cab in Windows Me (which includes Precopy1.cab only), it gets the following errors Microsoft (R) Diamond Disk Layout Tool - Version (32) 1.00.0530 (03/29/95) Copyright (c) Microsoft Corp 1993-1995. All rights reserved. 11,266,421 bytes in 473 files Total files: 473 Bytes before: 11,266,421 Bytes after: 3,388,854 After/Before: 30.08% compression Time: 1.31 seconds ( 0 hr 0 min 1.31 sec) Throughput: 8385.95 Kb/second A duplicate file name exists, or the file cannot be found. The system cannot find the file specified. The system cannot find the file specified. Microsoft (R) Diamond Disk Layout Tool - Version (32) 1.00.0530 (03/29/95) Copyright (c) Microsoft Corp 1993-1995. All rights reserved. Parsing directives (Diamond_Directive.ddf: 1 lines) Diamond_Directive.ddf(17): ERROR: Could not find file: 1394.inf Diamond_Directive.ddf(18): ERROR: Could not find file: 61883.inf Diamond_Directive.ddf(19): ERROR: Could not find file: 9xmig.dll Diamond_Directive.ddf(20): ERROR: Could not find file: acelpacm.inf Diamond_Directive.ddf(21): ERROR: Could not find file: adapter.inf Diamond_Directive.ddf(22): ERROR: Could not find file: agt20.inf Diamond_Directive.ddf(23): ERROR: Could not find file: amovie.inf Diamond_Directive.ddf(24): ERROR: Could not find file: apcmpat2.inf Diamond_Directive.ddf(25): ERROR: Could not find file: apcmpat3.inf Diamond_Directive.ddf(26): ERROR: Could not find file: apcompat.inf Diamond_Directive.ddf(27): ERROR: Could not find file: appletpp.inf Diamond_Directive.ddf(28): ERROR: Could not find file: applets.inf Diamond_Directive.ddf(29): ERROR: Could not find file: applets1.inf Diamond_Directive.ddf(30): ERROR: Could not find file: atitunep.inf Diamond_Directive.ddf(31): ERROR: Could not find file: atividin.inf Diamond_Directive.ddf(32): ERROR: Could not find file: ativmdxx.inf Diamond_Directive.ddf(33): ERROR: Could not find file: atixbar.inf Diamond_Directive.ddf(34): ERROR: Could not find file: ati_9xaa.inf Diamond_Directive.ddf(35): ERROR: Could not find file: ati_9xae.inf Diamond_Directive.ddf(36): ERROR: Could not find file: atmuni.inf ERROR: Diamond aborted: MaxErrors (20) exceeded The system cannot find the file specified. Completed. Please replace the generated the cab files back to the original installation media. And it seems not to use Quantum compression because the compression process is very fast, more quickly than that of Windows 98, and re-generated precopy1.cab is much larger than before(for example, 3256 kb vs 2605 kb, for OEM version of Windows Me Chinese Simp.) Fortunately, the file setupx.dll and suwin.exe have been modified in re-generated precopy1.cab. But while installing, after preparing the Setup Wizard, Setup prompts the following btw, 0.2a works fine for Chinese version of Windows 98 now.
Don't patch suwin.exe. When I tested this i only patched setupx.dll. Have not tested latest v0.2a btw. Changing Product Type in setupx.dll is sufficient based on my experience. Hope it helps.
@Sajjo, @liliactr, @xkai2013 I pulled both v0.2 and v0.2a, uploaded as v0.3 with Windows 95 support. I realized some syntax errors with brackets, also it started to combine PRECOPY*.CABs again since some values were not printed to the .ddf file. However using for %%a instead of for /f %%a fixed the size error. Hopefully this will be the perfect final version with no need for a v0.4. I tested some Windows 95, 98 (all Chinese, English and Turkish) and Me, .cab creation went well. The problem is there're a few kb differences between original PRECOPY2/3.CAB and newly generated one. I also tried to generate Windows 95 as Internal Upgrade CD, it worked perfectly. I tried Windows 95 with unused or unknown ProductTypes 5 and 6. Likely to be a retail version. But the famous 111 key was invalid there. However it offered me to ignore it and continue to install. Spoiler: Windows 95 ProductType 5
In my tests, the above error of setupx.dll mismatch still occurs in Windows Me's conversion, I tested both Chinese Simp. Windows Me OEM & Retail versions. But English versions work well. I can't understand why. I found that suwin.exe, Resource String 96, 1526 is not modified in the re-generated one. I tried many times and found that in Windows Me you have to modify both setupx.dll and suwin.exe String 96, 1526 to change the product type. I modified them manually (with eXeScope) and got OK. But strangely, I use setupx.dll modified by Convert9xSKUs and suwin.exe the one modified by myself but the error still occurs.