[Tool] ConvertWin9xSKUs - Convert Windows 9x SKUs (v0.3)

Discussion in 'Windows XP / Older OS' started by example12345678912345678, Feb 10, 2025.

  1. Sajjo

    Sajjo MDL Member

    Feb 6, 2018
    2,771
    3,911
    90
    Similare to present a Windows 95 directory for the installer...
     
  2. Sajjo

    Sajjo MDL Member

    Feb 6, 2018
    2,771
    3,911
    90
    Me neither explisit, but it adds a PID (partial anyway)
     
  3. example12345678912345678

    Dec 29, 2019
    606
    375
    30
    @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).
     
  4. Sajjo

    Sajjo MDL Member

    Feb 6, 2018
    2,771
    3,911
    90
    @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)
    :)
     
  5. example12345678912345678

    Dec 29, 2019
    606
    375
    30
    #65 example12345678912345678, Jun 13, 2025 at 16:42
    Last edited: Jun 14, 2025 at 16:31
    (OP)
    @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.
    VirtualBox_Windows 98_13_06_2025_18_29_22.png
    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(?)
     
  6. xkai2013

    xkai2013 MDL Novice

    Mar 16, 2020
    32
    25
    0
    #67 xkai2013, Jun 14, 2025 at 06:26
    Last edited: Jun 14, 2025 at 07:06
    @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.
    QQ20250614131751.jpg

    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
    Windows 95-2025-06-14-13-00-01.png

    btw, 0.2a works fine for Chinese version of Windows 98 now.
     
  7. Sajjo

    Sajjo MDL Member

    Feb 6, 2018
    2,771
    3,911
    90
    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.
    :hug2:
     
  8. example12345678912345678

    Dec 29, 2019
    606
    375
    30
    @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.
    VirtualBox_Windows 95_15_06_2025_10_17_34.png VirtualBox_Windows 95_15_06_2025_10_24_00.png
     
  9. xkai2013

    xkai2013 MDL Novice

    Mar 16, 2020
    32
    25
    0
    #70 xkai2013, Jun 15, 2025 at 14:05
    Last edited: Jun 15, 2025 at 15:30
    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.
     
  10. xkai2013

    xkai2013 MDL Novice

    Mar 16, 2020
    32
    25
    0
    #71 xkai2013, Jun 15, 2025 at 15:47
    Last edited: Jun 15, 2025 at 16:11
    And for Windows Me you'd better modify w9xsetup.bin, String 10, 144 together.