Sign in to follow this  
Followers 0
Petr

SED, INF, DDF file format description

60 posts in this topic

Windows XP SP2 contains already newer Iexpress by default.

You are right, I was confused by the date of all files....

And even newer version is in Server 2003 SP1 - 6.00.3790.1830 (srv03_sp1_rtm.050324-1447).

Unfortunately there is no changelog.

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've got probably official information from Microsoft: Even in the Microsoft internal database, there is no idocumentation for IExpress.

Strange. The only possibility is to find the coder who writes IExpress then.

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've got probably official information from Microsoft: Even in the Microsoft internal database, there is no idocumentation for IExpress.

Strange. The only possibility is to find the coder who writes IExpress then.

Petr

Who told you that?

What's the Question needing documentation?

0

Share this post


Link to post
Share on other sites
also very useful link :thumbup

http://perso.wanadoo.fr/tmcd2/

sorry eGo®Z. that link is now a dead one.

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

The MSDN link is now dead. New MSDN link to Creating INF files:

http://msdn.microsoft.com/library/default....fb2d300.xml.asp

BTW - how do the slayout.inf, slayout1.inf, slayout2.inf files from the 98se SP work? how are they created? I like to learn because I may be willing to update the 98FE SP2 pack just this one time. I may post up a beta of the 98fe SP2 since nobody seems to be doing anything about it right now.

Edited by erpdude8
0

Share this post


Link to post
Share on other sites
BTW - how do the slayout.inf, slayout1.inf, slayout2.inf files from the 98se SP work? how are they created? I like to learn because I may be willing to update the 98FE SP2 pack just this one time. I may post up a beta of the 98fe SP2 since nobody seems to be doing anything about it right now.

Originally they were built manually, then I wrote simple batch file for auto-generation of most of the necessary files.

I used the following .BAT file, I hope it is correct:

echo .Set CabinetNameTemplate=files\SP2.CAB >sp2.ddf
echo .Set Compress=on >>sp2.ddf
echo .Set CompressionType=LZX >>sp2.ddf
echo .Set CompressionLevel=7 >>sp2.ddf
echo .Set CompressionMemory=21 >>sp2.ddf
echo .Set RptFileName=SP2.RPT >>sp2.ddf
echo .Set MaxDiskSize=CDROM >>sp2.ddf
echo .Set ReservePerCabinetSize=0 >>sp2.ddf
echo .Set DiskDirectoryTemplate= >>sp2.ddf
echo .Set Cabinet=ON >>sp2.ddf
echo .Set MaxCabinetSize=999999999 >>sp2.ddf
echo .Set InfFileName=files\SLAYOUT1.INF >>sp2.ddf
echo .Set InfHeader= >>sp2.ddf
echo .Set InfDiskHeader=";Auto generated file - do not edit!" >>sp2.ddf
echo .Set InfDiskHeader1=[Version] >>sp2.ddf
echo .Set InfDiskHeader2=Signature="$CHICAGO$" >>sp2.ddf
echo .Set InfDiskHeader3=SetupClass=BASE >>sp2.ddf
echo .Set InfDiskLineFormat= >>sp2.ddf
echo .Set InfCabinetHeader=[SourceDisksNames] >>sp2.ddf
echo .Set InfCabinetLineFormat=*cab#*="Unofficial Service Pack for Windows 98 SE","SP2.CAB",0 >>sp2.ddf
echo .Set InfFileHeader= >>sp2.ddf
echo .Set InfFileHeader1=[SourceDisksFiles] >>sp2.ddf
echo .Set InfFileLineFormat=*file*=*cab#*,,*size*,*csum* >>sp2.ddf
echo .Set InfFooter= >>sp2.ddf
echo .Set SourceDir=files\sp2 >>sp2.ddf
echo. >>sp2.ddf
dir /b /on files\sp2\*.* >>sp2.ddf

echo .Set CabinetNameTemplate=files\SUPP.CAB >SUPP.ddf
echo .Set Compress=on >>SUPP.ddf
echo .Set CompressionType=LZX >>SUPP.ddf
echo .Set CompressionLevel=7 >>SUPP.ddf
echo .Set CompressionMemory=21 >>SUPP.ddf
echo .Set RptFileName=SUPP.RPT >>SUPP.ddf
echo .Set MaxDiskSize=CDROM >>SUPP.ddf
echo .Set ReservePerCabinetSize=0 >>SUPP.ddf
echo .Set DiskDirectoryTemplate= >>SUPP.ddf
echo .Set Cabinet=ON >>SUPP.ddf
echo .Set MaxCabinetSize=999999999 >>SUPP.ddf
echo .Set InfFileName=files\SLAYOUT2.INF >>SUPP.ddf
echo .Set InfHeader= >>SUPP.ddf
echo .Set InfDiskHeader=";Auto generated file - do not edit!" >>SUPP.ddf
echo .Set InfDiskHeader1=[Version] >>SUPP.ddf
echo .Set InfDiskHeader2=Signature="$CHICAGO$" >>SUPP.ddf
echo .Set InfDiskHeader3=SetupClass=BASE >>SUPP.ddf
echo .Set InfDiskLineFormat= >>SUPP.ddf
echo .Set InfCabinetHeader=[SourceDisksNames] >>SUPP.ddf
echo .Set InfCabinetLineFormat=*cab#*="Unofficial Service Pack for Windows 98 SE","SUPP.CAB",0 >>SUPP.ddf
echo .Set InfFileHeader= >>SUPP.ddf
echo .Set InfFileHeader1=[SourceDisksFiles] >>SUPP.ddf
echo .Set InfFileLineFormat=*file*=*cab#*,,*size*,*csum* >>SUPP.ddf
echo .Set InfFooter= >>SUPP.ddf
echo .Set SourceDir=files\SUPP >>SUPP.ddf
echo. >>SUPP.ddf
dir /b /on files\SUPP\*.* >>SUPP.ddf

"C:\Program Files\IEAK6\tools\makecab.exe" /f sp2.ddf
"C:\Program Files\IEAK6\tools\makecab.exe" /f supp.ddf

"C:\Program Files\IEAK6\tools\iexpress.exe" /n 21sesp.sed

del sp2.rpt
del supp.rpt
del sp2.ddf
del supp.ddf

and the following 21sesp.sed file:

[Version]
Class=IEXPRESS
SEDVersion=3
[Options]
PackagePurpose=InstallApp
ShowInstallProgramWindow=0
HideExtractAnimation=0
UseLongFileName=0
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=I
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
TargetName=%TargetName%
FriendlyName=%FriendlyName%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles
TargetWin9xVersion=4.10.2222
TargetNTVersion=0
MultiInstanceCheck=1
[Strings]
InstallPrompt=
DisplayLicense=files\LICENSE.TXT
FinishMessage=
TargetName=sesp211en.exe
FriendlyName=Windows98 SE SP 2.1.1 (English)
AppLaunched=INFEX.EXE
PostInstallCmd=<None>
AdminQuietInstCmd=SPUPDATE.INF
UserQuietInstCmd=SPUPDATE.INF
FILE0="WUINFO.INF"
FILE1="891711UN.INF"
FILE2="ASPI.INF"
FILE3="CRLUPD.EXE"
FILE4="DOSHERE.INF"
FILE5="GETVER.EXE"
FILE6="INFEX.EXE"
FILE7="INFEX.INI"
FILE8="INSTMSIA.EXE"
FILE9="LICENSE.TXT"
FILE10="LOGO.INF"
FILE11="NOTEPAD.INF"
FILE12="PRESERVE.INF"
FILE13="Q329414.EXE"
FILE14="ROOTSUPD.EXE"
FILE15="RUNPOST.BAT"
FILE16="SCR56.INF"
FILE17="SHELL.INF"
FILE18="SHELLRB.BAT"
FILE19="SHELLRB.INF"
FILE20="SLAYOUT1.INF"
FILE21="SLAYOUT2.INF"
FILE22="SLEEK.INF"
FILE23="SP2.CAB"
FILE24="SPUNINST.INF"
FILE25="SPUPDATE.INF"
FILE26="SUPP.CAB"
FILE27="TWEAKS.INF"
FILE28="TWEAKUI.CNT"
FILE29="TWEAKUI.CPL"
FILE30="TWEAKUI.HLP"
FILE31="TWEAKUI.INF"
FILE32="W2KCOLOR.INF"
FILE33="WBEM15UP.INF"
[SourceFiles]
SourceFiles0=files\
[SourceFiles0]
%FILE0%=
%FILE1%=
%FILE2%=
%FILE3%=
%FILE4%=
%FILE5%=
%FILE6%=
%FILE7%=
%FILE8%=
%FILE9%=
%FILE10%=
%FILE11%=
%FILE12%=
%FILE13%=
%FILE14%=
%FILE15%=
%FILE16%=
%FILE17%=
%FILE18%=
%FILE19%=
%FILE20%=
%FILE21%=
%FILE22%=
%FILE23%=
%FILE24%=
%FILE25%=
%FILE26%=
%FILE27%=
%FILE28%=
%FILE29%=
%FILE30%=
%FILE31%=
%FILE32%=
%FILE33%=

The required directory structure is as follows:

top level - just these two files (and later the generated file is here too)

1st level subdirectory: "files" contains complete unpacked service pack (with or without the following files, they are generated automatically or not required: sp2.cab, supp.cab, slayout1.inf, slayout2.inf, advpack.dll, W95inf16.dll, W95inf32.dll)

2nd level subdirectory (inside the "files" directory): There are two directories, sp2 and supp, containing files belonging to sp2.cab and supp.cab respectively.

How it works? The .bat file does the following tasks:

1. create sp2.ddf and supp.ddf files

2. makecab will use these files to create slayout1.inf, slayout2.inf, sp2.cab and supp.cab

3. iexpress will package everything together to the final package

4. all temporary files are deleted.

Maybe it is nice solution - but it wors, and is not dependent on the location of the root directory.

I hope it is correct - I did it more than half year ago.

Petr

0

Share this post


Link to post
Share on other sites

@Petr,

that is the batch file I use for the ME SP. It works fine for me.

the_guy

0

Share this post


Link to post
Share on other sites
@Petr,

that is the batch file I use for the ME SP. It works fine for me.

the_guy

thanks Petr & the_guy.

BTW - the_guy, the link to ME Service Pack 2 beta 3 is now dead. Are you almost ready to post up beta 4 of ME SP?

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

and what will happen when %BrowserWarn% or %AppWarning% is used? What kind of message will %BrowserWarn% or %AppWarning% be displayed if you have defined one?

-erpdude

0

Share this post


Link to post
Share on other sites
and what will happen when %BrowserWarn% or %AppWarning% is used? What kind of message will %BrowserWarn% or %AppWarning% be displayed if you have defined one?

-erpdude

It will display what you will define.

This is an example taken from some older IE 5.01 update:

TargetWin9xVersion=4.10.1998-:%OSWarn%:OK
TargetNTVersion=0:%OSWarn%:OK
TargetFileVersion=@FileSectionList

[FileSectionList]
1=#S\BROWSEUI.DLL:5.0.3314.2100-5.0.3537.700:%BrowserWarn%:OKCancel
2=#S\INSENG.DLL:5.0.3314.2101-5.0.3533.2600:%BrowserWarn%:OKCancel
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

[Strings]
OSWarn=The version of Windows you have installed does not match the update you are trying to install.
BrowserWarn=The version of Internet Explorer you have installed does not match the update you are trying to install.

In this example if you will try to install the package on any Windows 9x with lower version number than 4.10.1998 (i.e. Windows 95", you will receive "The version of Windows you have installed does not match the update you are trying to install." error message. If you will try to install this package on a system that contains wrong version of the a.m. files then you will receive "The version of Internet Explorer you have installed does not match the update you are trying to install." error message.

Is this explanation sufficient?

Petr

0

Share this post


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

I wouldnt use that kind of TargetWin9xVersion setting for Windows 95. That may not work for Win95 B/C systems with the USB Supplement Update installed which updates Win95 OSR2 to either version 4.03.1212 or 4.03.1214.

personally I prefer 'TargetWin9xVersion=4.00.950-4.03.1214' when making patches for Win95

see MS KB article 158238 on the 9x versions of Windows being used:

http://support.microsoft.com/kb/158238

thanks MDGx for posting up the INF + IExpress guide.

Edited by erpdude8
0

Share this post


Link to post
Share on other sites

some of the stuff written in MS article 197147 about Command-line switches for IExpress packages is incorrect. For example the /r:s switch, which supposed to make the package restart the computer without asking the user after install, does NOT really restart the computer automatically. Reading the INF + IExpress web guide about the 'Smart Reboot' switches, it's actually 'AS' [or /r:as]. If you want to force and IExpress package like any Win98 hotfix to automatically restart the computer specify the /r:as switch (or even the /r:is switch if the files that are being updated are in use by the Windows OS).

0

Share this post


Link to post
Share on other sites
Windows XP SP2 contains already newer Iexpress by default.

Windows Server 2003 SP1 contains even NEWER IExpress.exe file than in XP SP2. WinServ2k3 SP1 has 6.00.3790.1830. Too bad M$ did not include updated makecab.exe and wextract.exe files in Service Pack 1 of Windows Server 2003.

0

Share this post


Link to post
Share on other sites
Windows Server 2003 SP1 contains even NEWER IExpress.exe file than in XP SP2. WinServ2k3 SP1 has 6.00.3790.1830. Too bad M$ did not include updated makecab.exe and wextract.exe files in Service Pack 1 of Windows Server 2003.

Windows Server 2003 SP2 (beta) contains even NEWER IExpress.exe - 6.00.3790.2725. Again no updated makecab.exe and wextract.exe files.

Petr

0

Share this post


Link to post
Share on other sites

Windows Server 2003 SP1 contains even NEWER IExpress.exe file than in XP SP2. WinServ2k3 SP1 has 6.00.3790.1830. Too bad M$ did not include updated makecab.exe and wextract.exe files in Service Pack 1 of Windows Server 2003.

Windows Server 2003 SP2 (beta) contains even NEWER IExpress.exe - 6.00.3790.2725. Again no updated makecab.exe and wextract.exe files.

Petr

that sucks doesnt it Petr for MS not to include updated makecab.exe and wextract.exe files? I think Win2003 SP2 may come out either late this year or early next year. There will be an XP SP3 sometime in 2007. MS definitely needs to address the date problems when creating CAB or self-extracting CAB files with the Windows Server 2003 version of makecab.exe.

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.