Petr Posted June 24, 2005 Posted June 24, 2005 (edited) Does anybody have detail description of the SED (Self Extraction Directive) files used by IEXPRESS?Several thing are unclear to me. For example, how to set the target OS to both Windows 98 first and second editions? I tried TargetWin9xVersion=4.10recommended here, but it does not work. Then there is some possibility to test a version of specific file, I have found one example at http://www.lv.kernel.org/pub/recommended/l...tnew/latnet.sed :TargetFileVersion=#A\IEXPLORE.EXE:4.70.0.1155-:%BrowserWarn%:OKBut what does this mean exactly? Does it work for more versions and more files?There is alsoCDFVersion=3instead of regularSEDVersion=3What this could mean?And other unclarities.Is there any decompiler of IEXPRESS packages that would extract the license, the messages and other settings, not just the files in the CAB inside?Regarding MAKECAB, I've found http://support.microsoft.com/?id=310618 (d/l athttp://download.microsoft.com/download/pla...n-us/cabsdk.exe )This is March 1997 version and it contains 33-page Makecab.doc documentation describing the DDF files too.No newer file was found.And regarding INF files, there are several sources like Windows 98 DDKhttp://msdn.microsoft.com/library/en-us/in...72ebb16.xml.asphttp://msdn.microsoft.com/library/en-us/in...b9d8dbb.xml.aspbut it seems to be a bit driver oriented, I'm not sure if there is everything.Does anybody know any better description?Petr Edited June 24, 2005 by Petr
MDGx Posted June 24, 2005 Posted June 24, 2005 (edited) I'm wondering if anybody [except MS] has such info at all, I've also been searching the net, but unfortunately found nothing.erpdude8 suggested I should email MS, so I can build hotfixes that would install on more than 1 particular 9x OS, because if usingTargetWin9xVersion=4.10.2222[example], the patch will only install on 98SE, but not on 98FE.To make it install on 98FE [but not on 98SE], this line must beTargetWin9xVersion=4.10.1998As far as I can tell TargetWin9xVersion= [or TargetNTVersion=] must have full OS build in this form:x.x.xxxxorx.xx.xxxxotherwise won't work.If usingTargetWin9xVersion=0the patch won't install on any 9x OS.Similarly, if usingTargetNTVersion=0the patch won't install on any NTx OS.U can combine these 2 lines by adding 1 of each in your SED file, but u can't use more than 1 of each to specify multiple OSes.BTW:Newest versions of IEXPRESS.EXE, MAKECAB.EXE + WEXTRACT.EXE [the ones I'm using] are from XP SP2. They work for 9x/ME patches too.I believe 2003 Server also has these files, but haven't tried.The SED file you mention:http://www.lv.kernel.org/pub/recommended/l...tnew/latnet.sedis actually taken from NT Option Pack:http://www.gpick.net/sbr/asp/page103.asprespectively from this CAB file [right-click to save it]:ftp://tiger.gpick.com/NTOptionPack/windows95/rasics.cabSED = Self Extraction DirectiveCAB SDK + IEAK:http://www.mdgx.com/add.htm#DEV Edited June 25, 2005 by MDGx
eGo®Z Posted June 25, 2005 Posted June 25, 2005 (edited) some years ago i've found so much different manuals on inf-coding,unfortunately the most of the sources are dead now,one of 'em is www.crucifer.net - site is under construction more than year,Here is my local copy of such web manual from that site.Of course it's not the latest inf-description and sed-files are described not completely, but it is quite good manual. - hope this helps Edited June 25, 2005 by eGo®Z
Petr Posted June 25, 2005 Author Posted June 25, 2005 Newest versions of IEXPRESS.EXE, MAKECAB.EXE + WEXTRACT.EXE [the ones I'm using] are from XP SP2. They work for 9x/ME patches too.I believe 2003 Server also has these files, but haven't tried.Yes, there are really many versions:iexpress.exeieak6: 6.00.2800.1106win xp: 6.00.2600.0000 (xpclient.010817-1148)win xp sp2: 6.00.2900.2180 (xpsp_sp2_rtm.040803-2158)win 2003: 6.00.3790.0 (srv03_rtm.030324-2048)win 2003 sp1: 6.00.3790.1830 (srv03_sp1_rtm.050324-1447)wextract.exeieak6: 6.00.2800.1106win xp: 6.00.2600.0000 (xpclient.010817-1148)win xp sp2: 6.00.2900.2180 (xpsp_sp2_rtm.040803-2158)win 2003: 6.00.3790.0 (srv03_rtm.030324-2048)win 2003 sp1: unchangedadvpack.dllieak6: 5.1.2600.1106win xp: 6.00.2600.0000 (xpclient.010817-1148)win xp sp2: 6.00.2900.2180 (xpsp_sp2_rtm.040803-2158)win 2003: 6.00.3790.0 (srv03_rtm.030324-2048)win 2003 sp1: 6.00.3790.1830 (srv03_sp1_rtm.050324-1447)makecab.exeieak6: 5.1.2600.1106win xp: 5.1.2600.0 (xpclient.010817-1148)win xp sp2: 5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)win 2003: 5.2.3790.0 (srv03_rtm.030324-2048)win 2003 sp1: unchangedextrac32.exeieak6: 4.11.0603.3win xp: 5.1.2600.0 (xpclient.010817-1148)win xp sp2: 5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)win 2003: 5.2.3790.0 (srv03_rtm.030324-2048)win 2003 sp1: unchangedAppareatly all versions works fine on Windows 98.I was not able to locate any difference in resources - ut ther must be raeson for so many versions?Petr
Petr Posted June 26, 2005 Author Posted June 26, 2005 (edited) I'm wondering if anybody [except MS] has such info at all, I've also been searching the net, but unfortunately found nothing.erpdude8 suggested I should email MS, so I can build hotfixes that would install on more than 1 particular 9x OS, because if usingTargetWin9xVersion=4.10.2222[example], the patch will only install on 98SE, but not on 98FE.To make it install on 98FE [but not on 98SE], this line must beTargetWin9xVersion=4.10.1998As far as I can tell TargetWin9xVersion= [or TargetNTVersion=] must have full OS build in this form:x.x.xxxxorx.xx.xxxxotherwise won't work.If usingTargetWin9xVersion=0the patch won't install on any 9x OS.Similarly, if usingTargetNTVersion=0the patch won't install on any NTx OS.U can combine these 2 lines by adding 1 of each in your SED file, but u can't use more than 1 of each to specify multiple OSes.<{POST_SNAPBACK}>Elementary, my dear Watson. Some deductive works and tests and here is the result:TargetWin9xVersion=aa.bb.cc-dd.ee.ff,gg.hh.ii-jj.kk.llit means from version aa.bb.cc to version dd.ee.ff and from version gg.hh.ii to version jj.kk.ll.Can be simplified asTargetWin9xVersion=aa.bb.cc,gg.hh.ii (it means just versions aa.bb.cc and gg.hh.ii)TargetWin9xVersion=aa.bb.cc-dd.ee.ff (it means versions between aa.bb.cc and dd.ee.ff)TargetWin9xVersion=0 means version 0 only => never wil install on W9xTargetWin9xVersion= or no line at all: will install always on W9xTargetWin9xVersion=4.10.1998- means 4.10.1998 and aboveTargetWin9xVersion=4.10.1998 is the same as TargetWin9xVersion=4.10.1998-4.10.1998Commonly used version ranges by Microsoft:TargetWin9xVersion=4.0.950-4.0.1212 - Windows 95TargetWin9xVersion=4.10.1998-4.10.2222 - Windows 98TargetWin9xVersion=4.90.3000 - Windows MEthe same for TargetNTVersionIs anybody able to test it?Petr Edited June 26, 2005 by Petr
Petr Posted June 26, 2005 Author Posted June 26, 2005 (edited) And just to add how it appears to be with the TargetFileVersion directive:Example is:TargetFileVersion=#A\IEXPLORE.EXE:4.70.0.1155-:%BrowserWarn%:OK#A means probably application#S means system file (located in %windir%\system)Maybe ther are other possibilities, I don't know.For version number(s) it the same as for TargetWin9xVersion, but versipn has 4 parts, i.e. it can look like:TargetFileVersion=#A\APPLICATION.EXE:1.2.3.4-3.4.5.6,5.6.7.8-6.7.8.9:%AppWarning%:OKI'm still not sure what means the "OK" at the end and what are other possibilities.BTW, some coder could write very simple tool that would just show the required OS version and FileVersion for given iexpress package. FileVersions are coded as 4 words (8 bytes total) is the following sequence: For version a.b.c.d the order in the file is b,a,d,c,, no limit = FFFFFFFFOSVersions are coded as 3 doublewords (12 bytes total) ordered naturally, no limit is FFFFFFFFFFFF.Petr Edited July 6, 2005 by Petr
Petr Posted June 27, 2005 Author Posted June 27, 2005 (edited) Does anybody know how to make very long list of "CopyFiles" in INF files?If I make very long line like:[DefaultInstall]SmartReboot = NCustomDestination = CustomDestination.SectionCopyFiles = Copy.Boot,Copy.Cab, Copy.Command, Copy.EBD, Copy.Font, Copy.Grphflt, Copy.Grphflt2, Copy.Help, Copy.HT, Copy.Inf, Copy.IOSubSys, Copy.Machine, Copy.Media, Copy.MSADC, Copy.MSDA, Copy.msinfo, Copy.MUI, Copy.System, Copy.System32, Copy.SysBckup, Copy.TC, Copy.Triedit, Copy.Tvviewer, Copy.VMM32, Copy.KB891711(white spaces added not to break msfn page layout)I will get rundll/advack crash.Is there any known length limit?How to avoid this? I have only one idea - to chain 2 INF files, not very nice.Petr Edited June 27, 2005 by Petr
MDGx Posted June 27, 2005 Posted June 27, 2005 (edited) Does anybody know how to make very long list of "CopyFiles" in INF files?If I make very long line like:[DefaultInstall]SmartReboot = NCustomDestination = CustomDestination.SectionCopyFiles = Copy.Boot,Copy.Cab, Copy.Command, Copy.EBD, Copy.Font, Copy.Grphflt, Copy.Grphflt2, Copy.Help, Copy.HT, Copy.Inf, Copy.IOSubSys, Copy.Machine, Copy.Media, Copy.MSADC, Copy.MSDA, Copy.msinfo, Copy.MUI, Copy.System, Copy.System32, Copy.SysBckup, Copy.TC, Copy.Triedit, Copy.Tvviewer, Copy.VMM32, Copy.KB891711(white spaces added not to break msfn page layout)I will get rundll/advack crash.Is there any known length limit?How to avoid this? I have only one idea - to chain 2 INF files, not very nice.PetrPetr,Wow, looks like u solved the SED "Targetxx" problem.Many thanks for your hard work.I'll try your tips to recreate some of my iexpress packages to make them install on both 98FE + 98SE.I found something about INF "CopyFiles" directive length limit @ MSDN:http://msdn.microsoft.com/library/en-us/in...fb2d300.xml.aspand other good to know INF limits.But here is my idea [besides deleting all spaces, which I'm sure you've done already]:try to shorten each string to 1, 2 or 3 characters.Example [applies to the 1 u posted] = broken in half by 1 space so it will fit in this page:CopyFiles=CBT,CCB,CMD,CEB,CF,CGR,CGR2,CHL,CHT,CIN,CIO,CMA,CME, CMS,CMI,CMU,CS,CS32,CSB,CTC,CTR,CTV,CVM,CKB891711This way string length was reduced from 285 chars to 102 chars [not counting the "CopyFiles" string]. Now it should work ok.Hope this helps. Edited June 27, 2005 by MDGx
ack-hh Posted June 27, 2005 Posted June 27, 2005 Is there any known length limit?from http://msdn.microsoft.com/library/en-us/in...fb2d300.xml.asp :"INF Size LimitsA Windows 9x/Me INF file cannot be larger than 64 kilobytes.There is no practical limit to the size of an INF file for NT-based systems.Unless otherwise restricted in this documentation, the maximum length ofany INF file field is 512 characters (including a terminating NULL character).Note, however, that Plug and Play may impose a more restrictive limitfor certain INF file fields that it recognizes or uses, such as device description,driver provider, and device manufacturer."HTH Andreas
MDGx Posted June 28, 2005 Posted June 28, 2005 Petr,All your "TargetWinxx=" directive tips checked out ok.Many thanks.Therefore I repacked these iexpress updates [same file sizes as old files]:98KRNLUP.EXE = replaces both FEKRNLUP.EXE + SEKRNLUP.EXEQ249824.EXE = replaces both F249824.EXE + old Q249824.EXE* Unofficial Windows 98/98 SE KRNL386.EXE build 4.10.1999 Fix [172 KB, English]:http://www.mdgx.com/files/98KRNLUP.EXEThis Fix may correct Kernel errors after installing Cursor + Icon Handling Fixes.* Unofficial Windows 98/98 SE 255 Devices Additions + Removals Error VOLTRACK.VXD build 4.10.1999 Fix:http://support.microsoft.com/?id=249824Direct download [105 KB, English]:http://www.mdgx.com/files/Q249824.EXEPosted here:http://www.mdgx.com/web.htm#98SEI've tried them and they work properly with 98 SE and 98 FE.
Petr Posted July 6, 2005 Author Posted July 6, 2005 Some additional observations reagrding iexpress SED files:Extended syntax for Taget OS check:TargetWin9xVersion=4.10.1999-4.10.2222:%OSWarn%:YesNo%OSWarn% is text that is displayed The last parameter may be OK, YesNo or OKCancel, it describes the behavior in case of error:OK: just OK button is shown and install will not start.OKCancel: Cancel is selected by default, OK will start the installationYesNo: No is selected by default, Yes will start the installationExample:TargetWin9xVersion=4.10.2222:%OSWarn%:OK[Strings]OSWarn="This Service Pack is for Windows 98 Second Edition Only!"The same can be used for TargetFileVersion. The syntax seems to be:For one file:TargetFileVersion=#A\IEXPLORE.EXE:4.72.3110.0:%BrowserWarn%:OKFor more files:TargetFileVersion=@FileSectionList[FileSectionList]1=#S\BROWSEUI.DLL:5.0.3314.2100-5.0.3537.700:%BrowserWarn%:OK2=#S\INSENG.DLL:5.0.3314.2101-5.0.3533.2600:%BrowserWarn%:OK3=#S\MSHTML.DLL:5.0.3314.2100-5.0.3541.2700:%BrowserWarn%:OK4=#S\MSRATING.DLL:5.0.3314.2100-5.0.3539.2200:%BrowserWarn%:OK5=#S\PNGFILT.DLL:5.0.3314.2100-5.0.3541.2700:%BrowserWarn%:OK6=#S\SHDOCVW.DLL:5.0.3314.2100-5.0.3537.700:%BrowserWarn%:OK7=#S\SHLWAPI.DLL:5.0.3314.2100-5.0.3900.7033:%BrowserWarn%:OK8=#S\URLMON.DLL:5.0.3314.2100-5.0.3537.700:%BrowserWarn%:OK9=#S\WININET.DLL:5.0.3314.2100-5.0.3539.1800:%BrowserWarn%:OK#W = %windir%#S = %windir%\SYSTEM#A = Application, full patch is checkedIf not found, search is repeated with .DLL suffix added.Two examples for SE SP:TargetFileVersion=#A\IEXPLORE.EXE:6.0.2800.1106:%BrowserWarn%:OKCancel[Strings]BrowserWarn="Internet Explorer 6.0 SP1 should be installed before SESP!"TargetFileVersion=#S\VERSION.DLL:4.90.0.3000:%MEWarn%:YesNo[Strings]MEWarn="98SE2ME seems to be installed, do you want to continue?"Both may be combined.Other possible directives in [Options] section, not used in SESP SED file:PackageInstallSpace(KB)=10000 - self-explanatoryKeepCabinet=1 - do not delete the CAB file after package creationMultiInstanceCheck=1 - not tested yetCheckAdminRights=1 - probably for NT onlyHere I don't know the purpose:VersionInfo=VersionSection [VersionSection]ProductName=%ProductName%and also not tested wher and how to use:AppErrorCheck AlwaysPropogateCmdExitCode PropogateCmdExitCode UpdateAdvDlls PlatformDir It seems I should really ask Microsoft if there is any detail specification of SED/CDF files.And something about iexpress packages. They are created by adding resources to WEXTRACT.EXE, so any resource editor can be used check what the package contains and what it does. It can be used for checking unknown packages or testing if everyting is correct for newly built package before distributing.The resource type is RCData and there are the following resources, some of them are optional:ADMQCMD - AdminQuietInstCmd CABINET - full cabinet file, generated by iexpressEXTRACTOPT - HideExtractAnimation FILESIZES - generated by iexpressFINISHMSG - FinishMessage INSTANCECHECK - MultiInstanceCheckLICENSE - DisplayLicense PACKINSTSPACE - PackageInstallSpace(KB) POSTRUNPROGRAM - PostInstallCmd REBOOT - RebootModeRUNPROGRAM - AppLaunchedSHOWWINDOW - ShowInstallProgramWindow TITLE - FriendlyName UPROMPT - InstallPrompt USRQCMD - UserQuietInstCmd VERCHECK - TargetNTVersion, TargetWin9xVersion, TargetFileVersion So any coder could easily write small utility that would re-create SED file from existing iexpress package and/or display all the settings.Petr
MDGx Posted July 7, 2005 Posted July 7, 2005 (edited) Petr, Gape, Tihiy + other developers, you might find this useful:somebody made a small GUI tool [works with all Win9x/ME editions, even if it is meant for NTx] which converts REG files into INF files [GNU GPL open source]:http://www.paraglidernc.com/12142.htmlConvRegToInf is designed specifically for Bart's PEBuilder tool [works only with NTx OSes]:http://www.nu2.nu/pebuilder/Download ConvRegToInf [11 KB]:http://www.paraglidernc.com/plugins/ConvRegToInf02.zipConvRegToInf requires NFR 1.0 or newer already installed:http://msdn.microsoft.com/netframework/dow...s/framework1_1/ConvRegToInf's INF file HKXX [HKEY_XXX_XXX] Hive Keys entries are in hex code, eg:0x10x20x30x4etcinstead of MS default usage:HKLM\SoftwareHKCUHKU\.DefaultHKCRetcAlso, if using any REG_SZ [string Value], you need to modify the resulting INF file to add an extra comma [ , ] before "Value Data" to make it work properly:ConvRegToInf outputs to:0x1,"SubKey_Name","REG_SZ Value Name","Value Data"needs to be modified to:HKLM,"SubKey_Name","REG_SZ Value Name",,"Value Data"I found ConvRegToInf very useful with huge REG files that need to be loaded in INF format.If anybody cares to see an example of using ConvRegToInf, please d/l GRPHFLTS.EXE [1.65 MB, packed with iexpress]:http://www.mdgx.com/files/GRPHFLTS.EXEposted here:http://www.mdgx.com/add.htm#PNTOpen the EXE in PowerArchiver or WinZip 9.xx:http://www.mdgx.com/toy.htm#ZIPextract GF.INF, then open GF.INF into Notepad and look under the [RF] section.And if u wish to obtain my GF.REG file, please email me.Hope this helps. Edited July 7, 2005 by MDGx
Petr Posted July 13, 2005 Author Posted July 13, 2005 I've found the newest set of iexpress and other tools here:http://download.microsoft.com/download/E/D...AEA77/mpedp.exeThere is also nice tool for displaying version numbers filever.exe, this is its output for all executables in this package:W32i DLL ENU 6.0.2900.2172 shp 99,840 06-17-2005 advpack.dllW32i APP ENU 5.1.2600.2172 shp 85,504 06-17-2005 makecab.exeW32i APP ENU 6.0.2900.2172 shp 114,688 06-17-2005 iexpress.exeW32i APP ENU 6.0.2900.2172 shp 65,536 06-17-2005 wextract.exeW16 DLL ENU 4.71.704.0 shp 2,272 06-17-2005 w95inf16.dllW32i APP ENU 4.71.16.0 shp 4,608 06-17-2005 w95inf32.dllW32i APP - 1.50.2421.1 shp 50,688 06-17-2005 msiinfo.exeW32i APP ENU 5.0.2195.1 shp 45,056 06-17-2005 uuidgen.exeW32i - - - - 12,288 06-17-2005 wixgen.exeW32i - - - - 53,248 06-17-2005 snapreg.exeW32i - - - - 172,032 06-17-2005 mpedp.exeW32i - - - - 12,656 06-17-2005 rebootchk.exeW32i APP ENU 5.0.2090.1 shp 4,880 06-17-2005 sleep.exeW32i APP ENU 5.2.3754.0 shp 14,336 06-17-2005 filever.exeW32i APP ENU 6.0.2600.0 shp 130,048 06-17-2005 nullvis.exePetr
Acheron Posted July 13, 2005 Posted July 13, 2005 Windows XP SP2 contains already newer Iexpress by default.
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now