Sign in to follow this  
Followers 0
Petr

SED, INF, DDF file format description

60 posts in this topic

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.10

recommended 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%:OK

But what does this mean exactly? Does it work for more versions and more files?

There is also

CDFVersion=3

instead of regular

SEDVersion=3

What 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 at

http://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 DDK

http://msdn.microsoft.com/library/en-us/in...72ebb16.xml.asp

http://msdn.microsoft.com/library/en-us/in...b9d8dbb.xml.asp

but it seems to be a bit driver oriented, I'm not sure if there is everything.

Does anybody know any better description?

Petr

Edited by Petr
0

Share this post


Link to post
Share on other sites

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 using

TargetWin9xVersion=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 be

TargetWin9xVersion=4.10.1998

As far as I can tell TargetWin9xVersion= [or TargetNTVersion=] must have full OS build in this form:

x.x.xxxx

or

x.xx.xxxx

otherwise won't work.

If using

TargetWin9xVersion=0

the patch won't install on any 9x OS.

Similarly, if using

TargetNTVersion=0

the 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.sed

is actually taken from NT Option Pack:

http://www.gpick.net/sbr/asp/page103.asp

respectively from this CAB file [right-click to save it]:

ftp://tiger.gpick.com/NTOptionPack/windows95/rasics.cab

SED = Self Extraction Directive

CAB SDK + IEAK:

http://www.mdgx.com/add.htm#DEV

Edited by MDGx
0

Share this post


Link to post
Share on other sites

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,

download.gifHere 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 :blink:

Edited by eGo®Z
0

Share this post


Link to post
Share on other sites
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.exe

ieak6: 6.00.2800.1106

win 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.exe

ieak6: 6.00.2800.1106

win 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: unchanged

advpack.dll

ieak6: 5.1.2600.1106

win 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.exe

ieak6: 5.1.2600.1106

win 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: unchanged

extrac32.exe

ieak6: 4.11.0603.3

win 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: unchanged

Appareatly 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

0

Share this post


Link to post
Share on other sites
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 using

TargetWin9xVersion=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 be

TargetWin9xVersion=4.10.1998

As far as I can tell TargetWin9xVersion= [or TargetNTVersion=] must have full OS build in this form:

x.x.xxxx

or

x.xx.xxxx

otherwise won't work.

If using

TargetWin9xVersion=0

the patch won't install on any 9x OS.

Similarly, if using

TargetNTVersion=0

the 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.

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.ll

it 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 as

TargetWin9xVersion=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 W9x

TargetWin9xVersion= or no line at all: will install always on W9x

TargetWin9xVersion=4.10.1998- means 4.10.1998 and above

TargetWin9xVersion=4.10.1998 is the same as TargetWin9xVersion=4.10.1998-4.10.1998

Commonly used version ranges by Microsoft:

TargetWin9xVersion=4.0.950-4.0.1212 - Windows 95

TargetWin9xVersion=4.10.1998-4.10.2222 - Windows 98

TargetWin9xVersion=4.90.3000 - Windows ME

the same for TargetNTVersion

Is anybody able to test it?

Petr

Edited by Petr
0

Share this post


Link to post
Share on other sites

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%:OK

I'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 = FFFFFFFF

OSVersions are coded as 3 doublewords (12 bytes total) ordered naturally, no limit is FFFFFFFFFFFF.

Petr

Edited by Petr
0

Share this post


Link to post
Share on other sites

Does anybody know how to make very long list of "CopyFiles" in INF files?

If I make very long line like:

[DefaultInstall]
SmartReboot          = N
CustomDestination    = CustomDestination.Section
CopyFiles            = 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 by Petr
0

Share this post


Link to post
Share on other sites
Does anybody know how to make very long list of "CopyFiles" in INF files?

If I make very long line like:

[DefaultInstall]
SmartReboot          = N
CustomDestination    = CustomDestination.Section
CopyFiles            = 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

Petr,

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.asp

and 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,CKB891711

This 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 by MDGx
0

Share this post


Link to post
Share on other sites
Is there any known length limit?

from http://msdn.microsoft.com/library/en-us/in...fb2d300.xml.asp :

"INF Size Limits

A 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 of

any INF file field is 512 characters (including a terminating NULL character).

Note, however, that Plug and Play may impose a more restrictive limit

for certain INF file fields that it recognizes or uses, such as device description,

driver provider, and device manufacturer."

HTH

Andreas

0

Share this post


Link to post
Share on other sites

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.EXE

Q249824.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.EXE

This 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=249824

Direct download [105 KB, English]:

http://www.mdgx.com/files/Q249824.EXE

Posted here:

http://www.mdgx.com/web.htm#98SE

I've tried them and they work properly with 98 SE and 98 FE.

0

Share this post


Link to post
Share on other sites

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 installation

YesNo: No is selected by default, Yes will start the installation

Example:

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%:OK

For more files:

TargetFileVersion=@FileSectionList
[FileSectionList]
1=#S\BROWSEUI.DLL:5.0.3314.2100-5.0.3537.700:%BrowserWarn%:OK
2=#S\INSENG.DLL:5.0.3314.2101-5.0.3533.2600:%BrowserWarn%:OK
3=#S\MSHTML.DLL:5.0.3314.2100-5.0.3541.2700:%BrowserWarn%:OK
4=#S\MSRATING.DLL:5.0.3314.2100-5.0.3539.2200:%BrowserWarn%:OK
5=#S\PNGFILT.DLL:5.0.3314.2100-5.0.3541.2700:%BrowserWarn%:OK
6=#S\SHDOCVW.DLL:5.0.3314.2100-5.0.3537.700:%BrowserWarn%:OK
7=#S\SHLWAPI.DLL:5.0.3314.2100-5.0.3900.7033:%BrowserWarn%:OK
8=#S\URLMON.DLL:5.0.3314.2100-5.0.3537.700:%BrowserWarn%:OK
9=#S\WININET.DLL:5.0.3314.2100-5.0.3539.1800:%BrowserWarn%:OK

#W = %windir%

#S = %windir%\SYSTEM

#A = Application, full patch is checked

If 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-explanatory

KeepCabinet=1 - do not delete the CAB file after package creation

MultiInstanceCheck=1 - not tested yet

CheckAdminRights=1 - probably for NT only

Here 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 iexpress

EXTRACTOPT - HideExtractAnimation

FILESIZES - generated by iexpress

FINISHMSG - FinishMessage

INSTANCECHECK - MultiInstanceCheck

LICENSE - DisplayLicense

PACKINSTSPACE - PackageInstallSpace(KB)

POSTRUNPROGRAM - PostInstallCmd

REBOOT - RebootMode

RUNPROGRAM - AppLaunched

SHOWWINDOW - 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

0

Share this post


Link to post
Share on other sites

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.html

ConvRegToInf 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.zip

ConvRegToInf 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:

0x1

0x2

0x3

0x4

etc

instead of MS default usage:

HKLM\Software

HKCU

HKU\.Default

HKCR

etc

Also, 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.EXE

posted here:

http://www.mdgx.com/add.htm#PNT

Open the EXE in PowerArchiver or WinZip 9.xx:

http://www.mdgx.com/toy.htm#ZIP

extract 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 by MDGx
0

Share this post


Link to post
Share on other sites

I've found the newest set of iexpress and other tools here:

http://download.microsoft.com/download/E/D...AEA77/mpedp.exe

There 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.dll
W32i   APP ENU   5.1.2600.2172 shp     85,504 06-17-2005 makecab.exe
W32i   APP ENU   6.0.2900.2172 shp    114,688 06-17-2005 iexpress.exe
W32i   APP ENU   6.0.2900.2172 shp     65,536 06-17-2005 wextract.exe
W16    DLL ENU      4.71.704.0 shp      2,272 06-17-2005 w95inf16.dll
W32i   APP ENU       4.71.16.0 shp      4,608 06-17-2005 w95inf32.dll

W32i   APP   -     1.50.2421.1 shp     50,688 06-17-2005 msiinfo.exe
W32i   APP ENU      5.0.2195.1 shp     45,056 06-17-2005 uuidgen.exe
W32i     -   -               -   -     12,288 06-17-2005 wixgen.exe
W32i     -   -               -   -     53,248 06-17-2005 snapreg.exe
W32i     -   -               -   -    172,032 06-17-2005 mpedp.exe
W32i     -   -               -   -     12,656 06-17-2005 rebootchk.exe
W32i   APP ENU      5.0.2090.1 shp      4,880 06-17-2005 sleep.exe
W32i   APP ENU      5.2.3754.0 shp     14,336 06-17-2005 filever.exe
W32i   APP ENU      6.0.2600.0 shp    130,048 06-17-2005 nullvis.exe

Petr

0

Share this post


Link to post
Share on other sites

Windows XP SP2 contains already newer Iexpress by default.

0

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.