![]() |
.inf ファイルを使用すると、いくつかの方法でファイルとフォルダを操作できます。主に、次のような操作が可能です。
コンポーネントのインストール後には、シェルを介して、[Program Files] フォルダにサブフォルダを作成したり、任意のフォルダ内にショートカットを作成することができます。セットアップ プログラムは、Setup.ini ファイルの [progman.groups] セクションを参照し、指定されているフォルダにサブフォルダやショートカットを作成します。
コンポーネントのインストール時に [Program Files] フォルダ内にサブフォルダやショートカットを作成する必要がある場合は、Setup.ini ファイル内に適切なエントリが生成されるように、.inf ファイルに UpdateInis セクションを定義します。Setup.ini ファイルでは、次の構文でフォルダやショートカットが作成されます。これらのフォルダは、[スタート] メニューに対応しています。
[progman.groups]
folder_1=Folder_1_Name
folder_2=Folder_2_Name
:
folder_n=Folder_n_Name
[folder_1]
Link-Name, .exe-name, Icon-file-name, Icon-index, profile
profile フィールドの値を省略 (Null に設定) すると、ショートカットが常にフォルダに追加されます。
注
例 : Games
[Optional Components] games
[games] OptionDesc= %GAMES_DESC% CopyFiles= wingames.files UpdateInis= wingames.links
[wingames.files] cards.dll freecell.exe freecell.hlp mshearts.exe mshearts.hlp sol.exe sol.hlp winmine.exe winmine.hlp
[wingames.links] setup.ini, progman.groups,, "gamesfolder=%GAMES_DESC%" ;creates folder setup.ini, gamesfolder,, """Solitaire Game"",SOL.EXE,,," ;creates link setup.ini, gamesfolder,, "Minesweeper,WINMINE.EXE,,," ;creates link setup.ini, gamesfolder,, ""Hearts Card Game"",MSHEARTS.EXE,,,";creates link setup.ini, gamesfolder,, "FreeCell,FREECELL.EXE,,," ;creates link
上の例の実行結果 : セットアップの [オプション コンポーネント] ダイアログ ボックスに "ゲーム" が表示されます。ユーザーが "ゲーム" を選択すると、[Program Files] フォルダ内に [Games] サブフォルダが作成され、このサブフォルダ内に ソリティア、マインスイーパ、ハーツ、およびフリーセルへのショートカットが作成されます。
名前の変更操作は、レジストリ内で次のレベルの下層に定義します。
HKEY_LOCAL_MACHINE¥Software¥Microsoft¥Windows¥CurrentVersion¥RenameFiles
削除操作は、レジストリ内で次のレベルの下層に定義します。
HKEY_LOCAL_MACHINE¥Software¥Microsoft¥Windows¥CurrentVersion¥DeleteFiles
この 2 つのレベルの下層に、名前変更操作と削除操作を 1 つずつ個別のサブキーとして追加します。この各操作は、同じフォルダ内のファイルに対してのみ適用されます。各サブキーには、操作の対象となるフォルダ パスを指定するエントリと、実際の操作を指定するエントリの少なくとも 2 つのエントリを定義する必要があります。
それぞれの操作グループの最初のキーは、フォルダ エントリです。関連するフォルダに対する名前変更操作のエントリは、"old_short_name"="new_long_name,[attrib_flag]" の形式のエントリです。
名前変更操作中にファイル属性を設定する必要がある場合は、attrib_flag を指定します。このフラグに指定できる値は、次のとおりです。
1 | READONLY |
2 | HIDDEN |
3 | SYSTEM |
ファイルまたはフォルダに複数の属性を設定するには、それらの属性に対応する値を加算した値をこのフラグに指定します。たとえば、READONLY 属性および HIDDEN 属性を設定するには、attrib_flag の値を 3 に設定します。
次に示す AddReg セクションの例では、¥Windows¥system32¥Sample フォルダに SYSTEM 属性および HIDDEN 属性を設定します。
HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥RenameFiles¥Sys,,,%11% HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥RenameFiles¥Sys,SAMPLE,,"SAMPLE,6"
注
関連するフォルダに対する削除操作の各エントリは、"arbitrary_key_name"="long_name_to_delete" の形式のエントリです。
長いファイル名を削除する AddReg セクションの例を次に示します。
[MyAppShort2Long] HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥RenameFiles¥Samples,,,C:¥Samples HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥RenameFiles¥Samples,oldname.txt,,"New Long Name.txt" HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥RenameFiles¥Win,,,%25% HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥RenameFiles¥Win,myreadme.txt,,"My App Readme.txt"
長いファイル名を削除する AddReg セクションの例を次に示します。
[MyAppDelLong] HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥DeleteFiles¥Samples,,,C:¥Samples HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥DeleteFiles¥Samples,oldname.txt,,"New Long Name.txt" HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥DeleteFiles¥Win,,,%25% HKLM,Software¥Microsoft¥Windows¥CurrentVersion¥DeleteFiles¥Win,myreadme.txt,,"My App Readme.txt"
これらのエントリの名前変更操作または削除操作が完了すると、レジストリからエントリが削除されます。
注
ファイルまたはフォルダの属性を設定するには、長いファイル名を作成する場合と同様に、オプションのフラグを使用します。
詳細については、このトピックの「長いファイル名の作成と削除」を参照してください。
次の例では、Program Files¥Accessories フォルダに 3 つのファイルをコピーし、そのうち 1 つのファイルに対してショートカットを作成します。
[WordPadInstall CopyFiles = WordPadCopyFiles UpdateInis = WordPadInis
[DestinationDirs] WordPadCopyFiles = 24,%PROGRAMF%¥%ACCESSOR%
[WordPadCopyFiles] mswd6_32.wpc wordpad.exe write32.wpc
[WordPadInis] setup.ini, progman.groups,, "group4=%APPS_DESC%" ;creates Accessories folder (if not already there) setup.ini, group4,, """%WORDPAD_LINK%"", ""%24%¥%PROGRAMF%¥%ACCESSOR%¥WORDPAD.EXE""" ;creates link in Accessories folder
[Strings] APPS_DESC = "Accessories" WORDPAD_LINK = "WordPad" ; Folder names - note that the short versions must match the truncated ; 8-character names for the long versions, or else there are problems. PROGRAMF = "Progra‾1" ; first 6 chars of Program_Files, + "‾1" ACCESSOR = "Access‾1" ; first 6 chars of Accessories, + "‾1"