ValaV, I'd encourage any SharePoint developer to use WSPBuilder to avoid having to deal with DDF files altogether.
Of course, if you're forced to deal with CAB files for other purposes you're SOL
Wednesday, July 08, 2009 6:54:00 AM
DDF files as used in SharePoint to create Solution (WSP) files are an anachronistic throwback to an ancient Microsoft technology: CAB files. Since CAB files predate the era of blogging, it is not particularly straightforward to find documentation on DDF files. Unless you actually read the documentation provided by Microsoft, that is... Relevant excerpts from the MakeCab.doc included in the Microsoft Cabinet Software Development Kit are included below: "4.2.2. Command Summary "The following table provides a summary of the MakeCAB Directive File syntax. Directives begin with a period (“.”), followed by a command name, and possibly by blank delimited arguments. Note that a File Copy command is distinguished from a File Reference command by the setting of the GenerateInf variable. Command Syntax Description ; Comment (anywhere on a DDF line) src [dest] [/inf=yes|no] [/unique=yes|no] [/x=y ...] File Copy command dest [/x=y ...] File Reference command .Define variable=[value] Define variable to be equal to value (see .Option Explicit) .Delete variable Delete a variable definition .Dump Display all variable definitions .InfBeginDisk | Cabinet | Folder Copy lines to specified INF file section .InfEnd End an .InfBegin section .InfWrite string Write “string” to file section of INF file .InfWriteCabinet string Write “string” to cabinet section of INF file .InfWriteDisk string Write “string” to disk section of INF file .New Disk | Cabinet | Folder Start a new Disk, Cabinet, or Folder .Option Explicit Require .Define first time for user-defined variables .Set variable=[value] Set variable to be equal to value %variable% Substitute value of variable<blank line> Blank lines are ignored "4.2.3. Variable Summary Standard Variables Description Cabinet=ON | OFF Turns Cabinet Mode on or off CabinetFileCountThreshold=count Threshold count of files per Cabinet CabinetNamen=filename Cabinet file name for cabinet number nCabinetNameTemplate=template Cabinet file name template; * is replaced by Cabinet number ChecksumWidth=1 | 2 | ... | 8 Max low-order hex digits displayed by INF csum parameter ClusterSize=bytesPerCluster Cluster size on diskette (default is 512 bytes) Compress=ON | OFF Turns compression on or off CompressedFileExtensionChar=char Last character of the file extension for compressed files CompressionType=MSZIP Compression engine DestinationDir=path Default path for destination files (stored in cabinet file) DiskDirectoryn=directory Output directory name for disk nDiskDirectoryTemplate=template Output directory name template; * is replaced by disk number DiskLabeln=label Printed disk label name for disk nDiskLabelTemplate=template Printed disk label name template; * is replaced by disk number DoNotCopyFiles= ON | OFF Controls whether files are actually copied (ACME ADMIN.INF) FolderFileCountThreshold=count Threshold count of files per Folder FolderSizeThreshold=size Threshold folder size for current folder GenerateInf=ON | OFF Control Unified vs. Relation INF generation mode InfXxx=string Set default value for INF Parameter Xxx InfCabinetHeader[n]=string INF cabinet section header text InfCabinetLineFormat[n]=format string INF cabinet section detail line format InfCommentString=string INF comment string InfDateFormat=yyyy-mm-dd | mm/dd/yy INF date format InfDiskHeader[n]=string INF disk section header text InfDiskLineFormat[n]=format string INF disk section detail line format InfFileHeader[n]=string INF file section header text InfFileLineFormat[n]=format string INF file section detail line format InfFileName=filename Name of INF file InfFooter[n]=string INF footer text InfHeader[n]=string INF header text InfSectionOrder=[D | C | F]* INF section order (disk, cabinet, file) MaxCabinetSize=size Maximum cabinet file size for current cabinet MaxDiskFileCount=count Maximum count of files per Disk MaxDiskSize[n]=size Maximum disk size MaxErrors=count Maximum errors allowed before pass 1 terminates ReservePerCabinetSize=size Base amount of space to reserve for FCRESERVE data ReservePerDataBlockSize=size Amount of space to reserve in each data block ReservePerFolderSize=size Amount of additional space in FCRESERVE for each folder RptFileName=filename Name of RPT file SourceDir=path Default path for source files UniqueFiles=ON | OFF Control whether duplicate desintation file names are allowed Details of selected commands and variables: .Define variable=[value] Define variable to be equal to value. To use variable, surround it with percent signs (%) -- %variable%. Using an undefined variable is an error, and will cause MakeCAB to stop before pass 2. value may include references to other variables. Leading and trailing blanks in value are discarded. Blanks may be enclose in quote (“) or apostrophe (‘) marks. Explicit percent signs (%), quotes (“), or apostrophes (‘) must be specified twice. NOTE: If .Option Explicit is specified, then you must first use .Define to define any user-defined variables before you can use .Set to modify them. For standard MakeCAB variables, .Define is not permitted, and only .Set may be used on. If .Option Explicit is not specified, then .Define is equivalent to .Set. .Set variable=value Set variable to be equal to value. To use variable, surround it with percent signs (%) -- %variable%. Using an undefined variable is an error, and will cause MakeCAB to stop before pass 2. value may include references to other variables. value may be empty, in which case variable is set to the empty string. Leading and trailing blanks in value are discarded. Blanks may be enclose in quote (“) or apostrophe (‘) marks. Explicit percent signs (%), quotes (“), or apostrophes (‘) must be specified twice. NOTE: If .Option Explicit is specified, then you must first use .Define to define any user-defined variables before you can use .Set to modify them. For standard MakeCAB variables, .Define is not permitted, and only .Set may be used on. DestinationDir=path Path prefix to store in cabinet file for each file in the cabinet. Default: .Set DestinationDir= ; Default is no path prefix path is concatenated with a path separator (“\”) and the target file name on File Copy Commands to produce the file name that is stored in cabinet file. EXTRACT.EXE will use this file name as the default name when the file is extracted. SourceDir=path The default path used to locate source files specified in File Copy Commands. Default: .Set SourceDir= ; Default is to look in the current directory path is concatenated with a path separator (“\”) and the source file name on the File Copy Command to produce the file name used to find the source file. If path is empty, then the source file name specified on the File Copy Command is not modified. UniqueFiles=ON | OFF Controls whether destination file names in a layout must be unique.. Default: .Set UniqueFiles="ON" ; File names must be unique If UniqueFiles is ON, MakeCAB checks that all destination file names (names stored on disks or in cabinets) are unique, and generates an error (during pass 1) if they are not. ON is the default, since using the same filename twice usually means that the same file was accidentaly included twice, and this would be a waste of disk space. If UniqueFiles is OFF, MakeCAB permits duplicate destination file names. The /UNIQUE parameter may be specified on individual File Copy commands to override the value of UniqueFiles.
posted by Oskar Austegard at 2:55 PM on Jul 2, 2007
"DDF Command and Variable Syntax"
3 Comments -
You did a great job my friend
Monday, February 09, 2009 1:23:00 AM
I've been looking for something like that for weeks!!!! THANKYOU!
Wednesday, July 08, 2009 3:44:00 AM
ValaV, I'd encourage any SharePoint developer to use WSPBuilder to avoid having to deal with DDF files altogether.
Of course, if you're forced to deal with CAB files for other purposes you're SOL
Wednesday, July 08, 2009 6:54:00 AM