A basic information (.inf) file contains the following sections (more complex .inf files may have additional sections). Section names in bold are reserved keywords. Section names in italic are arbitrary names created by the .inf author.
Section | Description |
---|---|
[Version] | Provides basic version information for validating the .inf file. |
[DefaultInstall] | Contains pointers to other sections specifying files to copy and delete, registry updates, .ini file updates, and so on. This section is executed by default. |
[OtherInstall] | Uses the same format as the [DefaultInstall] section, but must explicitly be called. This section is useful for defining how a component should be uninstalled. |
[DestinationDirs] | Specifies the location on the hard disk where a section's files will be copied, deleted, or renamed (for example, Windows or Windows\System). |
[FileCopy/Delete/RenameSection(s)] | Lists files to be copied, deleted, or renamed. |
[RegistryUpdateSection(s)] | Specifies registry additions or deletions. |
[IniFileUpdateSection(s)] | Specifies updates to .ini files. Links are created in this section. |
[SourceDisksNames] | Lists disks that contain the files. |
[SourceDisksFiles] | Lists the specific disk that each file is on. |
[Strings] | Lists localizable strings. |
[Optional Components] | Lists Install selections that are displayed when the user clicks the Add/Remove Programs icon in Control Panel, clicks the Windows Setup tab, and then clicks the Have Disk button. For situations in which this section is ignored, see the description for this section later in the appendix. |
For more information about .inf files, see the Windows 95 Resource Kit and the Windows 98 Resource Kit.
[Version]
Signature="$Chicago$"
LayoutFile=filename.inf
This section defines the standard header for all Microsoft Windows .inf files. Note that if the signature is not $Chicago$, Windows does not accept the .inf file as belonging to any of the classes of devices recognized by Windows.
Note that signature string recognition is not case sensitive, so, for example, you can use either $Chicago$ or $CHICAGO$.
filename.inf
.inf file containing the layout information (source disks and files) required to install the component. This line is optional. If not provided elsewhere, the [SourceDisksNames] and [SourceDisksFiles] sections must be listed in this .inf file.
The following example shows a typical [Version] section:
[Version]
Signature="$CHICAGO$"
The Install sections, [DefaultInstall] and [OtherInstall], use the same format. They can contain the following entries:
The Install sections identify the additional sections in the .inf file that contain installation information for the component.
Not all the entries shown in the preceding syntax are needed or required in an Install section. If an entry is used, it must specify the name of a section in the .inf file. (An exception to this is the CopyFiles entry, which can use the @ character along with a file name to copy a single file without specifying a section name.) The section name must consist of printable characters.
Only one of each type of entry can be used in any one Install section. More than one section name can be listed in an entry, but each additional name must be preceded by a comma.
install-section-name
Name of the Install section, which can be DefaultInstall or OtherInstall (a name that you specify).
If you name the Install section [DefaultInstall], it will execute when you right-click the .inf file and then select Install. This section will also execute when you select an .inf file as the setup option by using the Cabpack wizard.
The following example shows a typical Install section. It contains Copyfiles and AddReg entries that identify the sections containing information about which files to install.
[MyApplication]
Copyfiles=MyAppWinFiles, MyAppSysFiles, @SRSutil.exe
AddReg=MyAppRegEntries
Note that if you rename the [MyApplication] section in this example to [DefaultInstall], the Install section will execute when you right-click the .inf file and then select Install.
The CopyFiles entry provides a special notation that allows a single file to be copied directly from the command line. You can copy an individual file by prefixing the file name with an @ symbol. The destination for any file that you copy using this notation is the DefaultDestDir entry, as defined in the [DestinationDirs] section later in this appendix. The following example shows how to copy individual files:
CopyFiles=FileSection1,@myfile.txt,@anotherfile.txt,LastSectionName
[CopyFiles-section-name]
destination-file-name[, source-file-name][,temporary-file-name][,flag]
[destination-file-name[,source-file-name][, temporary-file-name]][,flag]
This section lists the names of files to be copied from a source disk to a destination directory. The source disk and destination directory associated with each file are specified in other sections of the .inf file. The file-list-section name must appear in the CopyFiles item of an Install section.
Note that you can specify the copying of a single file in the CopyFiles entry of the Install section itself without creating a [CopyFiles] section. To do this, you specify the file-list-section name in the CopyFiles entry of the Install section and use the @ character to force a single file copy. For an example of the @ character in a CopyFiles entry, see the previous section. Copying a single file in this way imposes limitations because the source and destination file names must be the same in this case, and you cannot use a temporary file.
destination-file-name
Name of the destination file. If no source file name is given, the name also specifies the source file.
source-file-name
Name of the source file. If the source and destination file names for the file copy operation are the same, the source file name is not required.
temporary-file-name
Name of a temporary file for the file copy operation. The installer copies the source file, but gives it the temporary file name. The next time the operating system starts, it renames the temporary file to the destination file name. This is useful for copying files to a destination that is currently open or in use by Windows.
flag
Optional flag used to perform special actions during the installation process. Multiple flags can be used by adding the values to create the combined flag. The following valid flags can be used.
Value | Meaning |
---|---|
1 | For CopyFiles: Warn if user tries to skip the file. |
1 | For DelFiles: If the file is in use, queue up a delayed delete operation in Wininit.ini. Otherwise, a file that is currently in use won't be deleted. |
2 | Setup-critical: Don't allow the user to skip the file. |
4 | Ignore version checking and always copy the file. This action will overwrite a newer file. |
8 | Force a rename. The setup program treats a file as if it's in use. This happens only if the file already exists on the user's computer. |
16 | If the file already exists on the target computer, don't copy. |
32 | Suppress the version conflict dialog box, and don't overwrite newer files. |
The following example copies three files:
[CopyTheseFilesSec]
file11; copies file11
file21, file22, file23 ; copies file22, temporarily naming it file23
file31, file32 ; copies file32 to file31
All of the source file names used in this example must be defined in a [SourceDisksFiles] section, and the logical disk numbers that appear in that section must have been defined in a [SourceDisksNames] section. For an alternate solution, you can use a Layout.inf file to supply this information.
[rename-files-section-name]
new-file-name, old-file-name
This section lists the names of files to be renamed. The name of the section must appear in a RenFiles entry in an Install section of the .inf file.
new-file-name
New name of the file.
old-file-name
Old name of the file.
The following example renames file42 to file41, file52 to file51, and file62 to file61:
[RenameOldFilesSec]
file41, file42
file51, file52
file61, file62
All the old file names used in this example (file42, file52, and file62) must be defined in a [SourceDisksFiles] section, and the logical disk numbers that appear in that section must have been defined in a [SourceDisksNames] section.
[file-list-section]
file-name[,,,flag]
This section lists the names of files to be deleted. The file-list-section name must appear in the Delfiles entry of an Install section.
file-name
File to be deleted.
flag
Optional flag used to force Windows to delete the file named in the item if it is in use during the installation process. To instruct Windows to queue the file deletion operation until the computer has restarted, set the flag value to 1. If a file marked with the flag=1 setting cannot be deleted because it is in use, the computer will restart after the device installation is complete.
If you do not use the flag value equal to 1 together with file-name, the file will not be deleted from the computer if it is in use when the [DelFiles] section executes.
The following example deletes three files:
[DeleteOldFilesSec]
file1
file2
file3
[update-ini-section-name]
ini-file, ini-section, [old-ini-entry], [new-ini-entry], [flags]
This section replaces, deletes, or adds complete entries in the given .ini file. The section name, update-ini-section-name, must appear in the UpdateInis entry in the Install section of the .inf file.
ini-file
Name of the .ini file containing the entry to change.
ini-section
Name of the section containing the entry to change.
old-ini-entry
Optional. Entry that usually has the form Key=Value.
new-ini-entry
Optional. Entry that usually has the form Key=Value. Either the key or value may specify replaceable strings. For example, either the key or value specified in new-ini-entry may be %String1%, where the string that replaces %String1% is defined in the [Strings] section of the .inf file.
flags
Optional action flag. It can be one of the following values:
Value | Meaning |
---|---|
0 | Default. If old-ini-entry is present in an .ini file entry, that entry is replaced with new-ini-entry. Note that only the keys of old-ini-entry and the .inf file entry must match; the value of each entry is ignored.
To add new-ini-entry to the .ini file unconditionally, set old-ini-entry to NULL. To delete old-ini-entry from the .ini file unconditionally, set new-ini-entry to NULL. |
1 | If both key and value of old-ini-entry exist in an .ini file entry, that entry is replaced with new-ini-entry. Note that old-ini-entry and the .inf file entry must match for both the key and value for the replacement to be made. This is in contrast to using an action flag value of 0, where only the keys must match for the replacement to be made. |
2 | If the key in old-ini-entry does not exist in the .ini file, no operation is performed on the .ini file.
If the key in old-ini-entry exists in an .ini file entry and the key in new-ini-entry exists in an .ini file entry, the .ini file entry that matches the key in new-ini-entry is deleted. Also, the key of the .ini file entry that matches old-ini-entry is replaced with the key in new-ini-entry. If the key in old-ini-entry exists in an .ini file entry and the key in new-ini-entry does not exist in an .ini file entry, an entry is added to the .ini file made up of the key in new-ini-entry and the old value. Note that the match of old-ini-entry and an .ini file entry is based on key alone, not key and value. |
3 | Same as a flag parameter value of 2, except matching of old-ini-entry and an entry in the .inf file is based on both key and value, not just the key. |
You can use the asterisk (*) wildcard character when specifying the key and value, and it will be interpreted correctly.
The ini-file name can be a string or a strings key. A strings key has the form %strkey%, where strkey is defined in the [Strings] section in the .inf file. In either case, the name must be a valid file name.
The name should include the name of the directory containing the file, but the directory name should be given as a logical directory identifier (LDID) rather than an actual name. The installer replaces an LDID with an actual name during installation.
An LDID has the form %ldid%, where ldid is one of the predefined identifiers or an identifier defined in the [DestinationDirs] section. Note that when the constants LDID_BOOT and LDID_BOOTHOST are replaced, the backslash is included in the path. For example, LDID_BOOT can be replaced with C:\. However, in your .inf file, you can either use the backslash character or not. For example, you can use either "%30%boot.ini" and "%30%\boot.ini" to reference Boot.ini in the root of the boot drive.
The following examples illustrate individual entries in an [UpdateInis] section of an .inf file:
%11%\sample.ini, Section1,, Value1=2 ; adds new entry
%11%\sample.ini, Section2, Value3=*, ; deletes old entry
%11%\sample.ini, Section4, Value5=1, Value5=4 ; replaces old entry
The following set of entries in an [UpdateInis] section of an .inf file work together to operate on the [Boot] section of System.ini. The conditionality built into flags of the .inf file entries is used to add the entry "comm.drv=comm.drv" to the [Boot] section, unless the entries "comm.drv=*vcoscomm.drv" or "comm.drv=*r0dmdcom.drv" exist in the [Boot] section, in which case the existing entry is preserved and the entry "comm.drv=comm.drv" is not added to the .ini file. In other words, after the four following .inf file entries are executed, there will be one "comm.drv=" entry in the [Boot] section of the .ini file: "comm.drv=*vcoscomm.drv", "comm.drv=*r0dmdcom.drv", or "comm.drv=comm.drv."
system.ini, boot, "comm.drv=*vcoscomm.drv","~CommDrvTemp~=*", 3
system.ini, boot, "comm.drv=*r0dmdcom.drv","~CommDrvTemp~=*", 3
system.ini, boot,,"comm.drv=comm.drv"
system.ini, boot, "~CommDrvTemp~=*","comm.drv=*", 3
[ update-inifields-section-name ]
ini-file, ini-section, profile-name, [old-field], [new-field],[flags]
This section replaces, adds, and deletes fields in the value of a given .ini entry. Unlike the [UpdateIniFile] section, this type of section replaces, adds, or deletes portions of a value in an .ini file entry rather than the whole value. The section name, update-inifields-section-name, must appear in the UpdateIniFields entry in the Install section of the .inf file.
ini-file
Name of the .ini file containing the entry to change. For more information about specifying the .ini file name, see the previous section.
ini-section
Name of the .ini file section containing the entry to change.
profile-name
Name of the entry to change.
old-field
Field value to delete.
new-field
Field value to add, if not already there.
flags
Flag specifying whether to treat old-field and new-field as if they have a wildcard character and to indicate what separator character to use when appending a new field to an .ini file entry. It can be any of these values:
Value | Meaning |
---|---|
0 | Default. Treat the * character literally when matching fields and not as a wildcard character. Use a space as a separator when adding a new field to an entry. |
1 | Treat the * character as a wildcard character when matching fields. Use a space as a separator when adding a new field to an entry. |
2 | Treat the * character literally when matching fields and not as a wildcard character. Use a comma as a separator when adding a new field to an entry. |
3 | Treat the * character as a wildcard character when matching fields. Use a comma as a separator when adding a new field to an entry. Any comments in the .ini file line are removed, because they might not be applicable after changes. When fields in this line of the .ini file are processed, spaces, tabs, and commas are used as field delimiters. However, a space is used as the separator when the new field is appended to the line. |
[add-registry-section]
reg-root-string, [subkey], [value-name], [flag], [value]
[reg-root-string, [subkey], [value-name], [flag], [value]]
This section adds subkeys or value names to the registry, optionally setting the value. The add-registry-section name must appear in an AddReg entry in an Install section.
reg-root-string
Registry root name. It can be one of the following values:
subkey
Optional. Subkey to set. This subkey, which has the form key1\key2\key3..., can be expressed as a replaceable string. For example, you could use %Subkey1%, where the string to replace %Subkey1% is defined in the [Strings] section of the .inf file.
value-name
Optional. Value name for the subkey. For a string type, if value-name is left empty, the value of the subkey specified in subkey is set to a NULL string. Note that value-name can be expressed as a replaceable string. For example, you could use %Valname1%, where the string to replace %Valname1% is defined in the [Strings] section of the .inf file.
flag
Optional. Flag that determines the value type and specifies whether the registry key is replaced if it already exists.
Value | Meaning |
---|---|
0 | Default. The value is an ANSI string. Replace the key if it exists. |
1 | The value is a hexadecimal number. Replace the key if it exists. |
2 | The value is an ANSI string. Do not replace the key if it exists. |
3 | The value is a hexadecimal number. Do not replace the key if it exists. |
value
Optional. Value to set. This value can be either an ANSI string or a number in hexadecimal notation and Intel format. Any item containing a binary value can be extended beyond the 128-byte line maximum by using a backslash (\) character. A string key of the form %strkey% can also be given. Note that strkey must be defined in the [Strings] section of the .inf file. To use a % character in the line, use %%.
At least two fields are required; however, one can be null (empty). Therefore, at least one comma is required when using this form.
The two entries in the following example add two value names to the registry. Note that %25% will be expanded to the computer's Windows directory.
[MyAppRegEntries]
HKLM,Software\MyApp,ProgramName,,"My Application"
HKLM,Software\MyApp,"Program Location",,"%25%\MyApp.exe"
[del-registry-section]
reg-root-string, subkey, [value-name]
[reg-root-string, subkey, [value-name]]
This section deletes a subkey or value name from the registry. The del-registry-section name must appear in a DelReg entry in an Install section.
reg-root-string
Registry root name. It can be one of the following values:
subkey
Subkey to delete. The subkey, which has the form key1\key2\key3..., can be expressed as a replaceable string. For example, you could use %Subkey1%, where the string to replace %Subkey1% is defined in the [Strings] section of the .inf file.
value-name
Optional. Value name for the subkey. Note that value-name can be expressed as a replaceable string. For example, you could use %Valname1%, where the string to replace %Valname1% is defined in the [Strings] section of the .inf file.
This type of section can contain any number of items. Each item deletes one subkey or value name from the registry.
[ ini-to-registry-section]
ini-file, ini-section, [ini-key], reg-root-string, subkey[,flags]
This section moves lines or sections from an .ini file to the registry, creating or replacing a registry entry under the given key in the registry. The section name ini-to-registry-section must appear in an Ini2Reg entry in the Install section of the .inf file.
ini-file
Name of the .ini file containing the key to copy. For more information about specifying the .ini file name, see "Update .ini File Sections (UpdateInis)" earlier in this appendix.
ini-section
Name of the section in the .ini file containing the key to copy.
ini-key
Name of the key in the .ini file to copy to the registry. If ini-key is empty, the whole section is transferred to the specified registry key.
reg-root-string
Registry root name. This parameter can be one of the following values:
subkey
Subkey to receive the value. This subkey has the form key1\key2\key3...
flags
Flag that indicates whether to delete the .ini key after transfer to the registry and whether to overwrite the value in the registry if the registry key already exists. The flag can be one of the following values:
Value | Meaning |
---|---|
0 | (Default) Do not delete the .ini entry from the .ini file after moving the information in the entry to the registry. If the registry subkey already exists, do not replace its current value. |
1 | Delete the .ini entry from the .ini file after moving the information in the entry to the registry. If the registry subkey already exists, do not replace its current value. |
2 | Do not delete the .ini entry from the .ini file after moving the information in the entry to the registry. If the registry subkey already exists, replace its current value with the value from the .ini file entry. |
3 | Delete the .ini entry from the .ini file after moving the information in the entry to the registry. If the registry subkey already exists, replace its current value with the value from the .ini file entry. |
For example, the following example shows the [Windows] section in the Win.ini file:
[Windows]
CursorBlinkRate=15
If a CursorBlinkRate subkey does not exist under \Control Panel\Desktop, the following item in an [Ini2Reg] section creates the subkey, sets the value of the subkey to 15, and leaves the original line in Win.ini unchanged:
win.ini,Windows,CursorBlinkRate,HKCU,"Control Panel\Desktop"
If the subkey already exists, the .inf file item sets the value of the subkey to 15 and leaves the original line in Win.ini unchanged.
[update-config-section]
Buffers=legal-dos-buffer-value
DelKey=key
DevAddDev=driver-name,configkeyword[,flag][,param-string]
DevDelete=device-driver-name
DevRename=current-dev-name,new-dev-name
Files=legal-dos-files-value
PrefixPath=ldid[,ldid]
RemKey=key
Stacks=dos-stacks-values
This section provides entries to add, delete, or rename commands in the Config.sys file. The section name, update-config-section must appear in the UpdateConfigSys entry in an Install section of the .inf file.
Not all entries shown in the preceding syntax are needed or required. An update configuration section can contain as many DevRename, DevDelete, DevAddDev, DelKey, and RemKey entries as needed, but the Buffers, Files, and Stacks entries can be used only once in a section. When processing the section, the installer processes all DevRename entries first, all DevDelete entries second, and all DevAddDev entries last.
Buffers=legal-dos-buffer-value
This entry sets the number of file buffers. As it does with the Stacks entry, the installer compares the existing value with the proposed value and always sets the file buffers to the larger of the two values.
legal-dos-buffers-value
Legal MS-DOS buffers value.
DelKey=key
This entry causes the Config.sys command with the specified key to be remarked out in the Config.sys file. For example, the following .inf file entry would cause a Break=on command to be remarked out in the Config.sys file:
DelKey=Break
The DelKey entry has the same effect as the RemKey entry. There can be multiple DelKey and/or RemKey entries in a section of the .inf file.
key
Key of the Config.sys command to be remarked out.
DevAddDev=driver-name,configkeyword[,flag][,param-string]
This entry adds a device or install command to the Config.sys file.
driver-name
Name of the driver or executable file to add. The installer validates the file name extension, ensuring that it is .sys or .exe.
configkeyword
Command name. It can be device or install.
flag
Optional placement flag. If 0, the command is placed at the bottom of the file. If 1, it is placed at the top. If a flag is not specified, 0 is used by default.
param-string
Optional command strings. These strings must be valid for the given device driver or executable file.
DevDelete=device-driver-name
This entry deletes any line containing the specified file name from the Config.sys file.
device-driver-name
Name of a file or device driver. The installer searches the Config.sys file for the name and deletes any line containing it. Because Microsoft MS-DOS does not permit implicit file name extensions in Config.sys, each device-driver-name must explicitly specify the file name extension.
In the following example, the DevDelete entry in an update configuration section deletes lines 1 and 3, but not line 2 of the example Config.sys file:
DevDelete=Filename.sys
;; lines in Config.sys
Device=Filename.sys;; line #1
Install=Filename.exe;; line #2
Device=Filename.sys /d:b800 /I:3 ;; line #3
DevRename=current-dev-name,new-dev-name
This entry renames a device driver in the Config.sys file.
current-dev-name
Name of the device driver or executable file to rename. The installer looks for the name on the right side of a device or install command in the Config.sys file.
new-dev-name
New name for driver or executable file.
Files=legal-dos-files-value
This entry sets the maximum number of open files in the Config.sys file. As it does with the Stacks entry, the installer compares the existing value with the proposed value and always sets the maximum number of open files to the larger of the two values.
legal-dos-files-value
Legal MS-DOS files value.
PrefixPath=ldid[,ldid]...
This entry appends the path associated with the given LDID to the path command.
ldid
Identifier that can be any of the predefined LDID values or a new value defined in the .inf file. For a definition of all the predefined LDID values, see the "DestinationDirs Section" later in this appendix.
RemKey=key
This entry causes the Config.sys command with the specified key to be remarked out in the Config.sys file. For example, the following .inf file entry would cause a Break=on command to be remarked out in the Config.sys file:
RemKey=Break
The RemKey entry has the same effect as the DelKey entry. There can be multiple RemKey and/or DelKey entries in a section of the .inf file.
key
Key of the Config.sys command to be remarked out.
Stacks=dos-stacks-values
This entry sets the number and size of stacks in the Config.sys file. The installer compares the existing value with the proposed value and always sets the stacks to the larger of the two values.
dos-stacks-value
Legal MS-DOS stacks value.
[ update-autoexec-section]
CmdAdd=command-name[,command-parameters]
CmdDelete=command-name
PrefixPath=ldid[,ldid]
RemOldPath=ldid[,ldid]
TmpDir=ldid[,subdir]
UnSet=env-var-name
This section provides commands to manipulate lines in the Autoexec.bat file. The section name, update-autoexec-section must appear in the UpdateAutoBat entry in an Install section of the .inf file.
Not all entry types shown in the preceding syntax are needed or required in an Update Autoexec.bat section. The section can contain as many CmdAdd, CmdDelete, and UnSet entries as needed, but only one PrefixPath, RemOldPath, and TmpDir item can be used in an .inf file.
The installer processes all CmdDelete entries before any CmdAdd entries.
CmdAdd =command-name[,"command-parameters"]
This entry adds the given command and optional command parameters to the Autoexec.bat file at the end of the file.
command-name
Name of an executable file with, or without, an extension. If the file name is also defined in the [SourceDisksFiles] and [DestinationDirs] sections of the .inf file, the installer adds the appropriate path to the file name before writing it to the Autoexec.bat file.
command-parameters
String enclosed in double quotation marks or a replaceable string such as %String1% or %Myparam%, where the strings that replace %String1% and %Myparam% are defined in the [Strings] section of the .inf file. The installer appends the string to the command-name before appending the line to the end of the Autoexec.bat file. The format of this line is dependent on the command=line requirements of the given executable file.
CmdDelete=command-name
This entry deletes any lines from Autoexec.bat that include the given command name. The installer searches for and deletes any occurrence of the given name that has a file name extension of .exe, .com, and .bat.
command-name
Name of an executable file without an extension.
PrefixPath=ldid[,ldid]...
This entry appends the path associated with the given LDID to the path command.
ldid
Identifier that can be any of the predefined LDID values or a new value defined in the .inf file. For a definition of all the predefined LDID values, see the [DestinationDirs] section later in this appendix.
RemOldPath=ldid[,ldid]
This entry removes the path associated with the given LDID from the path command. For example, if the user installs the new version of Windows into C:\Newwin and has an old copy of Windows in C:\Windows, the following .inf file item removes C:\Windows from the path environmental variable:
RemOldPath=10
ldid
Identifier that can be any of the predefined LDID values or a new value defined in the .inf file. For a definition of all the predefined LDID values, see the [DestinationDirs] section later in this appendix.
TmpDir=ldid[,subdir]
This entry creates a temporary directory within the directory given by the LDID if it does not already exist.
ldid
Identifier that can be any of the predefined LDID values or a new value defined in the .inf file. For a definition of all the predefined LDID values, see the [DestinationDirs] section later in this appendix.
subdir
Path name. If the Ldid\Subdir directory does not already exist, it is created.
UnSet=env-var-name
This entry removes any set command from the Autoexec.bat file that includes the given environment variable name.
env-var-name
Name of an environment variable.
[DestinationDirs]
file-list-section =ldid[, subdir ]
[DefaultDestDir=ldid[, subdir ]]
The [DestinationDirs] section defines the destination directories for the operations specified in file-list sections, which are either CopyFiles, RenFiles, or DelFiles entries. Optionally, a default destination directory can be specified for any CopyFiles, RenFiles, or DelFiles entries in the .inf file that are not explicitly named in the [DestinationDirs] section.
file-list-section
Name of a CopyFiles, RenFiles, or DelFiles entry. This name must be referred to in a Copyfiles, RenFiles, or DelFiles entry in an Install section.
Ldid
Logical disk identifier (LDID). This identifier can be one of the following values:
Value | Meaning |
---|---|
00 | Null LDID - can be used to create a new LDID |
01 | Source Drive:\pathname |
10 | Computer directory (maps to the Windows directory on a server-based setup) |
11 | System directory |
12 | IOSubsys directory |
13 | Command directory |
17 | Inf directory |
18 | Help directory |
20 | Fonts |
21 | Viewers |
22 | VMM32 |
23 | Color directory |
24 | Root of drive containing the Windows directory |
25 | Windows directory |
26 | Guaranteed boot device for Windows (Winboot) |
28 | Host Winboot |
30 | Root directory of the boot drive |
31 | Root directory for host drive of a virtual boot drive |
subdir
Name of the directory within the directory named by LDID to be the destination directory.
The optional DefaultDestDir entry provides a default destination for any CopyFiles entries that use the direct copy (@file name) notation or any CopyFiles, RenFiles, or DelFiles entries not specified in the [DestinationDirs] section. If a DefaultDestDir entry is not used in a [DestinationDirs] section, the default directory is set to LDID_WIN.
The following example sets the destination directory for the MoveMiniPort entry to Windows\Iosybsys and sets the default directory for other sections to be the Bin folder on the boot drive:
[DestinationDirs]
MoveMiniPort=12 ; Destination for MoveMiniPort section is
; windows\iosubsys
DefaultDestDirs=30,bin ; Direct copies go to boot:\bin
[SourceDisksNames]
disk-ordinal="disk-description",disk-label,disk-serial-number
Disk(s) that contain the source files for file copy and rename operations.
disk-ordinal
Unique number that identifies a source disk. If there is more than one source disk, each must have a unique ordinal.
disk-description
String or strings key describing the contents or purpose of the disk. The installer displays this string to the user to identify the disk. The description is enclosed in double quotation marks.
disk-label
Volume label of the source disk that is set when the source disk is formatted.
disk-serial-number
Unused. The value must be 0.
This example identifies one source disk. The disk description is given as a strings key:
[SourceDisksNames]
55 = %ID1%, Instd1, 0
[Strings]
ID1="My Application Installation Disk 1"
[SourceDisksFiles]
file name=disk-number[,subdir] [,file-size]
This section specifies source files used during installation and source disks that contain the files.
File name
Name of the file on the source disk.
disk-number
Ordinal of the source disk that contains the file. This ordinal must be defined in the [SourceDisksNames] section, and must have a value greater than or equal to 1 (zero is not a valid disk-number parameter value).
subdir
Optional. Subdirectory on the source disk where the file resides. If subdir is not specified, the source disk root directory is the default.
file-size
Optional. Size of the file, in bytes.
The following example shows a [SourceDisksFiles] section that identifies a single source file, SRS01.386, on the disk having ordinal 1:
[SourceDisksFiles]
SRS01.386 = 1
[Strings]
strings-key=value
This section defines one or more strings keys. A strings key is a name that represents a string of printable characters. Although the [Strings] section is generally the last section in the .inf file, a strings key defined in this section can be used anywhere in the .inf file that the corresponding string would be used. The installer expands the strings key to the given string and uses it for further processing. You must enclose a strings key in percent signs (%).
strings-key
Unique name consisting of letters and digits.
value
String consisting of letters, digits, or other printable characters. It should be enclosed in double quotation marks if the corresponding strings key is used in a type of item that requires double quotation marks.
The [Strings] section makes translation of strings for international markets easier by placing all strings that can be displayed in the user interface when the .inf file is used in a single section of the .inf file. Strings keys should be used whenever possible.
The following example shows the strings section for a sample .inf file:
[Strings]
String0="My Application"
String1="My Application Readme File"
String2="CX2590 SCSI Adapter"
[Optional Components]
install-section-name
[install-section-name]
This section lists Install sections that are displayed when the user clicks the Add/Remove Programs icon in Control Panel, clicks the Windows Setup tab, and then clicks the Have Disk button. The Install sections show up as check boxes in the list.
Note that the Optional Components section is ignored when you right-click an .inf file and then select Install to execute the file. When you use an .inf file in this way, the [DefaultInstall] section executes. The [Optional Components] section is also ignored if the .inf file is being executed through the Setupx.dll InstallHinfSection entry-point function. When executing an .inf file by using the Setupx.dll entry point function, the Install section specified in the parameter of the entry point is executed.
The Install sections follow the same format as described previously, and the following additional keys can be added to the Install section to create the interface in the Have Disk dialog box:
OptionDesc=option-description
Tip=tip-description
InstallDefault=0 | 1 ; Whether to install this component by default. 0=No, 1=Yes.
IconIndex=icon-index
Parent=install-section-name
Needs=install-section-name, [install-section-name]
Include=inf-file, [inf-file]
option-description
String value that is used as the component name in the list box. The value can be %String1%, where the string that replaces %String1% is defined in the Strings section of the .inf file.
tip-description
String value that is displayed in the description box when the component is selected in the list box. The value, which has a 255-character limit, can be %String1%, where the string that replaces %String1% is defined in the [Strings] section of the .inf file.
icon-index
Numeric value that determines the mini-icon that is displayed next to the component name. The following values are valid:
Value | Icon |
---|---|
0 | Machine (base and display) |
1 | Integrated circuit chip |
2 | Display |
3 | Network wires |
4 | Windows flag |
5 | Mouse |
6 | Keyboard (3 keys) |
7 | Phone |
8 | Speaker |
9 | Hard disks |
10 | Comm connector |
11 | Diamond (default value) |
12 | Checked box |
13 | Unchecked box |
14 | Printer |
15 | Net card |
16 | Same as 0 |
17 | Same as 0 with a sharing hand underneath |
18 | Unknown (question mark) |
19 | At work |
20 | Grayed check box |
21 | Dial-up networking |
22 | Direct cable connection |
23 | Briefcase |
24 | Exchange |
25 | Partial check |
26 | Accessories group |
27 | Multimedia group |
28 | QuickView |
29 | MSN |
30 | Calculator |
31 | Defrag |
32 | Generic document |
33 | DriveSpace® |
34 | Solitaire |
35 | HyperTerminal |
36 | Object Packager |
37 | Paint |
38 | Screen saver |
39 | WordPad |
40 | Clipboard Viewer |
41 | Accessibility |
42 | Backup |
43 | Bitmap document |
44 | Character map |
45 | Mouse pointers |
46 | Net Watcher |
47 | Phone Dialer |
48 | System Monitor |
49 | Help book |
50 | Globe (international settings) |
51 | Audio compression |
52 | CD player |
53 | Media Player |
54 | Sound scheme |
55 | Video clip |
56 | Video compression |
57 | Volume control |
58 | Musica sound scheme |
59 | Jungle sound scheme |
60 | Robotz sound scheme |
61 | Utopia sound scheme |
install-section-name (Parent)
The list box displayed in the optional components interface can contain sublevels. If the optional component is a child, the section name for the Parent key defines the Install section that is the parent.
install-section-name (Needs)
If this component has dependencies on other components, the section name defines Install sections that are required by this component. If the component is selected, the user will be warned that the component requires the component(s) described in the Install section(s) listed for the Needs key.
Note that the Install sections listed for the Needs key must be in the same .inf file. However, if dependent components from other .inf files are listed for Needs, the .inf files must be specified for the Include key.
inf-file
The file name specifies .inf files that the setup program must also load into memory when it loads your .inf file, because these .inf files contain sections that must be run in addition to the Install sections in your .inf file. The section names for the Needs key specify the names of the sections you intend to run in the included .inf file(s).