# PE Builder v3 ヘルプ

直訳した訳ではない ので細部に違いがあります。原文に は必ず目を通して下 さい。

コンテンツ一覧へ

# プラグインファイルフォーマット

1. イントロダクション
2. プラグインの作成
3. [PEBuilder]セ クション
4. [WinntDirectories] セクション
5. [SourceDisksFiles] セクション
6. [SourceDisksFolders] セクション
7. [Software.AddReg] セクション
8. [Software.DelReg] セクション
9. [SetupReg.AddReg] セクション
10. [Default.AddReg] セクション
11. [Default.DelReg] セクション
12. [AddLine] セクション
13. [DelLine] セクション
14. [SetValue] セクション
15. [Append] セクション
16. 環境変 数
17. 補足

## イントロダ クション

このドキュメントは、「PE Builder」プラグインファイル作成のためのヘルプです。「PE Builder」はpebuilder.infファイルを利用していますので、 このファイルを編集しないでください! 何 かを変更し た い場合、pluginファイルを使用します。プラグインはすべて`pluginフォルダに格納されています`。`plugin フォル ダ内にあり、`[PEBuilder]セクションを 備えたべての.infファイル は「PE Builder」のための有効なpluginとして扱われます。プラグインの有効/無効はプラグインダイアログの「Enable/Disable」ボタン で切り替える事ができます。

## プラグインの作成

plugin.infファイルはunicodeではなくasciiファイルでなければなりません。行頭が";"(セミコロン)の行は無視されます(コメン トのために利用されます)。
すべてのプラグインファイルは以下に示された形式で始まるべきです:

    ; PE Builder v3 plug-in INF file
    ; Created by Bart Lagerweij
    ; http://www.nu2.nu/pebuilder/
    ;
    ; プラグインの短い説明

    [Version]
    Signature= "$Windows NT$"

    [PEBuilder]
    Name="NiceNameOfPlugin"
    Enable=0
    Help="pluginhelp.htm"

    これは単に例ですので、URLや名前、その他の設定は適宜変更して下さい。

ま た、次のことを注意してください。

    [Version]
    Signature= "$Windows NT$"

こ の情報がなければsetupapi関数は.infファイルを開くことができませんので、必ず含めなくてはなりません。 プラグインに関する 詳しいセクションの情報は以下を参照して下さい。

## [PEBuilder]セクション

プラグイン(.infファイル)ファイルが必ず持っていなければならない [PEBuilder]セクションで す。
[PEBuilder]セクションは次のキーを持っています:

Name | プラグインの名前か説明。
Enable | 0 - 無効 1 - 有効 プラグインダイアログでの「Yes/No」の初期値です。
Help | プラグインヘルプファイル名。これはtxt,html,doc,pdf 等です。「ShellExecute」APIで呼び出されます (開くアプリケーションと関連付けされている必要があるという事です)。
Config | 環境設定ツールへのパス。 ShellExecuteで呼び出され、引数としてプラグインファイル名(%PluginFile%)が渡される事が多いです。 この ツールはPE Builderのプラグインダイアログで「設定」ボタンを押したときに呼び出されます。

## [WinntDirectories] セクション

ファイルやフォルダをコピーする際のコピー先をディレクトリ番号(ID)として指定します。
[WinntDirectories]セクションのフォーマットは次の通りです:
`directoryID`=dirname[,attribute]

directoryID | ディレクトリ番号(ID)です。 プラグインファイルでは、動的なID割り当てのために「'a'-'z'」を使用するのが慣例となっています。
dirname | フォルダの名前です。名前に半角スペー スを含んでいる場合にはダブルクォーテーションで括る必要があります。
attribute | 1 - 常にこのフォルダを作成する(フォルダが空の場合でも)。 2 - フォルダをルート以下に生成します(指定しない場合i386以下に生成されます)。 値は組み合わせる事ができます。デフォルト値は0です。

サンプル:

    [WinntDirectories]
    ; 常にルートに "Bart"フォルダを生成します
    a="Bart",3
    ; 常にルートに "Project\Bart\Source"フォルダを生成します
    b="Project\Bart\Source",3
    ; "extra\files"フォルダをi386フォルダ以下に生成します
    c="extra\files",1

    必要に応じて親フォルダも作成されます。「AAA\BBB\CCC」を指定した場合「AAA」「AAA\BBB」「AAA\BBB\CCC」が一気に作成されます。

定義済みディレクトリIDリスト:

ID | Directory名
1 | \
2 | system32
3 | system32\config
4 | system32\drivers
5 | system
7 | system32\ras
9 | system32\spool
10 | system32\spool\drivers
11 | system32\spool\drivers\w32x86\3
12 | system32\spool\prtprocs
13 | system32\spool\prtprocs\w32x86
14 | system32\wins
15 | system32\dhcp
16 | repair
17 | system32\drivers\etc
18 | system32\spool\drivers\w32x86
19 | system32\drivers\disdn
20 | inf
21 | Help
22 | Fonts
23 | Config
24 | msagent\intl
25 | Cursors
26 | Media
27 | java
28 | java\classes
29 | java\trustlib
30 | system32\ShellExt
31 | Web
32 | system32\Setup
33 | Web\printers
34 | system32\spool\drivers\color
35 | system32\wbem
36 | system32\wbem\Repository
37 | addins
38 | "Connection Wizard"
39 | "Driver Cache\i386"
40 | security
41 | security\templates
42 | system32\npp
43 | system32\ias
44 | system32\dllcache
45 | Temp
46 | Web\printers\images
47 | system32\export
48 | system32\wbem\mof\good
49 | system32\wbem\mof\bad
50 | twain_32
51 | msapps\msinfo
52 | msagent
53 | msagent\chars
54 | security\logs
55 | system32\icsxml
57 | system32\mui
58 | %MUI_PRIMARY_LANG_ID_DIR%
59 | system32\mui\dispspec
60 | AppPatch
61 | Debug
62 | Debug\UserMode
63 | system32\oobe
65 | system32\wbem\AdStatus
67 | Help\Tours
68 | Resources\Themes\Luna
69 | Resources\Themes\Luna\Shell\NormalColor
70 | system32\oobe\html\ispsgnup
71 | system32\oobe\html\mouse
72 | system32\oobe\html\oemcust
73 | system32\oobe\html\oemhw
74 | system32\oobe\html\oemreg
75 | system32\oobe\images
76 | system32\oobe\setup
77 | system32\oobe\sample
78 | Resources\Themes\Luna\Shell\Metallic
79 | Resources\Themes\Luna\Shell\Homestead
90 | TAPI
100 | system32\1025
101 | system32\1028
102 | system32\1031
103 | system32\1033
104 | system32\1037
105 | system32\1041
106 | system32\1042
107 | system32\1054
108 | system32\2052
109 | system32\3076
110 | system32\wbem\xml
112 | system32\inetsrv
123 | mui
124 | WinSxS
125 | WinSxS\Manifests
126 | WinSxS\InstallTemp
127 | ime
129 | Resources\Themes
130 | ime
132 | ime\imejp
133 | System32\IME\PINTLGNT
134 | System32\IME\CINTLGNT
135 | System32\IME\TINTLGNT
136 | IME\CHTIME\Applets
137 | ime\imejp98
138 | ime\imejp\applets
139 | Web\printers\PrtCabs
180 | system32\3com_dmi
239 | system32\clients
240 | system32\clients\twclient
241 | system32\clients\twclient\x86
242 | system32\clients\twclient\ia64
243 | system32\clients\twclient\amd64
244 | system32\LogFiles
245 | system32\LogFiles\Shutdown
246 | system32\administration
247 | system32\administration\images
248 | system32\wbem\Logs
249 | system32\wbem\AutoRecover
250 | system32\wbem\Repository\FS
251 | Microsoft.NET\AuthMan
252 | WinSxS\Policies
253 | WinSxS\Policies\x86_policy.1.0.Microsoft.Windows.GdiPlus_6595b64144ccf1df_x-ww_4e8510ac

「PE Builder」は、ディレクトリ番号(ID)=30000から使用します。ID=30000は出力ルートフォルダのために使用され、それ以降は 30001 以上 は「PE Builder」によって動的に使用されます。

## [SourceDisksFiles] セクション

SourceDisksFiles[.BuildNo]
コピーまたは解凍/抽出するファイルを指定します。セクション名の後にビルド番号を付ける事によって、ソース ファイルに応じたビルドを行う事ができます。

ビ ルド番号 | バージョン
--- | ---
2600 | Windows XP
3790 | Server 2003

[SourceDisksFiles]セクションのフォーマットは次の通 りです:
`
``filename=directoryID[, filenameRenamed][, attribute]`

`filename` | コピーファイルです。圧縮ファイルの場合、解凍後の名前を指定します。名前に半角スペースを含んでいる場合にはダブルクォーテーショ ンで括る必要があります。
`directoryID` | ディレクトリ番号(ID)です。「定義済みディレクトリID」または[WinntDirectories]セクションで設定 した'a'-'z'の「ユーザ指定 ディ レクトリID」を指定できます。
`filenameRenamed` | コピー時にリネームが必要な場合には指定して下さい。名前に半角スペースを含んで いる場合にはダブルクォーテーションで括る必要があ ります。
`attribute` | 1 - プラグイン構築時にファイルチェックを行います。 2 - ファイルを解凍しません。 4 - ファイルが存在する時のみコピーします。 値は組み合わせる事ができます。デフォルト値は0です。

## [SourceDisksFolders] セクション

SourceDisksFolders[.BuildNo]
コピーするフォルダを指定します。
[SourceDisksFolders]セクションのフォーマットは次の通りです:
`
sourcepath=directoryID`

`sourcepath` | コピー元のフォルダです。解凍/抽出は行われません。単純なコピーです。名前に半 角スペースを含んでいる場合にはダブルクォーテー ションで括る必要があります。
`directoryID` | ディレクトリ番号(ID)です。「定義済みディレクトリID」または[WinntDirectories]セクションで設定した'a'-'z'の「ユーザ指定ディ レクトリID」を指定できます。

サンプル:

    [WinntDirectories]
    a="Programs\openoffice",2

    [SourceDisksFolders]
    ;「 <プラグインフォルダ>\openoffice」フォルダ内のファイル/フォルダを「Programs\openoffice」へコピーします。
    openoffice=a

    [SourceDisksFolders]
    ; 「C:\openoffice」フォルダ内のファイル/フォルダを「Programs\openoffice」へコピーします。
    c:\openoffice=a

## [Software.AddReg]セ クション

Software.AddReg[.BuildNo]
「HKEY_LOCAL_MACHINE\Software」に登録するレジストリのエントリを指定します。
[Software.AddReg]セクションのフォーマットは次の通りです:
`
regType, regKey, regValue, regData`

regType | 0x0,(REG_NONE) キーのみを作成します。値はありません。 0x1,(REG_SZ) 文字列 0x2,(REG_EXPAND_SZ) 文字列(環境変数参照) 0x3,(REG_BINARY) バイナリデータ 0x4,(REG_DWORD) 32ビットの整数 0x7,(REG_MULTI_SZ) 複数行文字列 * 注: プレフィクス「0x」(小文字)を指定しなくてはなりません。
regKey | キーの名前を 指定します。
regValue | 値の名前を指定します。
regData | 実際のデータ。文字列値の場合ダブルクォーテーションで括る必要があります。また、値にダブルクォーテー ションを含む場合には 「""」へエスケープしなくてはなりません。

サンプル:

    0x1, "Microsoft\Windows NT\CurrentVersion\Fonts", "Tahoma (TrueType)","TAHOMA.TTF"
    0x2, "Control Panel\desktop", "WallPaper", "%systemroot%\system32\nu2.bmp"
    0x3, "ControlSet001\Control\TimeZoneInformation", "DaylightStart",\
    	00,00,04,00,00,01,00,02,00,00,00,00,00,00,00,00
    0x4, "ControlSet001\Control\GraphicsDrivers\DCI", "Timeout", 0x7
    0x7, "ControlSet001\Services\VgaSave\Device0", "InstalledDisplayDrivers","vga", "framebuf", "vga256", "vga64k"

## [SetupReg.AddReg] セクション

Setup.AddReg[.BuildNo]
「HKEY_LOCAL_MACHINE\System」に登録するレジストリのエントリを指定します。Software.AddRegと 同じ文法です。

## [Default.AddReg] セクション

Default.AddReg[.BuildNo]
「HKEY_CURRENT_USER」に登録するレジストリのエントリを指定します。Software.AddRegと 同じ文法です。

## [Software.DelReg] セクション

Software.DelReg[.BuildNo]
「HKEY_LOCAL_MACHINE\Software」から削除するレジストリのエントリを指定します。
[Software.DelReg]セクションのフォーマットは次の通りです:

regKey | キーの名前を指定します。
regValue | 値の名前を指定します。

## [Default.DelReg] セクション

Default.DelReg[.BuildNo]
「HKEY_CURRENT_USER」から削除するレジストリのエントリを指定します。Software.DelRegと 同じ文法です。

## [AddLine] セク ション

AddLine[.BuildNo]
他の.infファイルのセクションに行を追加します。
[AddLine]セクションのフォーマットは次の通りです:
`Filename,Section,StringToAdd`

Filename | 行を追加するファイル名です。名前に半角スペースを含んでいる場合にはダブルクォーテー ションで括る必要があります。
Section | セクション名です。
StringToAdd | 加える行文字列です。

サンプル:
"netmscli.inf", "MSClient.DelReg", "HKLM, Software\Microsoft\Rpc\SecurityService, 9"

## [DelLine] セクション

DelLine[.BuildNo]
他の.infファイルのセクションから行を削除します。
[DelLine]セクションのフォーマットは次の通りです:
`
Filename,Section,StringToDel`

Filename | 行を削除するファイル名です。名前に半角スペースを含んでいる場合にはダブルクォーテー ションで括る必要があります。
Section | セクション名です。
StringToDel | 削除する行文字列です。正確に一致する必要はありません、行頭からある程度の長さ同一であれば削除されま す。

サンプル:
"netmscli.inf", "MSClient.Browser.AddReg", "HKR, Parameters, MaintainServerList,"

## [SetValue] セクション

SetValue[.BuildNo]
他の.infファイルのセクションにあるキーの値を変更します。
[SetValue]セクションのフォーマットは次の通りです:
`Filename,Section,`Key,Value

Filename | 値を変更するファイル名です。名前に半角スペースを含んでいる場合にはダブルクォーテー ションで括る必要があります。
Section | セクション名です。
Key | 値を持つキーです。
Value | 変更する値です。

サンプル:
"netmscli.inf", "Alerter_Service_Inst", "StartType", "3"
Filename,Section,Keyまで指定するとキーを削除します。
Filename,Sectionまで指定するとセクションそのものを削除します。

## [Append]セクショ ン

Append[.BuildNo]
他のファイルに指定したファイルを結合します。
[Append]セクションのフォーマットは次の通りです:
`Filename,`FileNameToAppend

Filename | ファイル結合先のファイル名です。名前に半角スペースを含んでいる場合にはダブルクォーテー ションで括る必要があります。
FileNameToAppend | 結合するファイル名です。名前に半角スペースを含んでいる場合にはダブルクォーテー ションで括る必要があります。

サンプル:
nu2menu.xml, test.xml

## 環境変数

プラグイ ンファイルの文字列フィールドの大部分ではPE-Builder用の特別な変数を用いる事ができます:
構文: `@環境変数@`

環 境変数 | 展開される文字列
--- | ---
Program | ビルダの名前(デフォルト=PE-Builder)
Version | PE Builder のバージョン
IsoFile | ISOイメージのファイル名(パス付き)。
OutDir | 出力パス。 ビルドされたデータが 出力されるフォルダ。
SourcePath | ソースパス。 PE Builder で指定した「WindowsXP CD-ROM」またはそれを展開したフォルダ。
PluginDir | プラグインのフォルダ。
PluginFile | プラグインのファイル名(パス付き)。
Language | 現在利用中の言語。
Verbose | バーボーズモード (0=OFF, 1=ON)
Build | Windowsのビルド番号 (2600=XP, 3790=Server 2003)

サンプル:
`[SourceDisksFiles]`
`program.exe=2,,3`
`lang\@language@.lng=2,,3`
`lang\@``language``@.lng` は `lang\german.lng のように展開されます` (ドイツ語が選択されている場合).

補 足
ここに書かれているトピックは原 文に記述がありませんので注意して下さい。

プ ラグインファイルには以下の環境変数が利用できます(大文字/小文字を区別します)。

@SourcePath@ | 「PE Builder」で指定した「WindowsXP CD-ROM」またはそれを展開したフォルダ。
@ProfilesDir@ | 「<PE>\Documents and Settings」フォルダ
@Program@ | 「<PE>\PE Builder」フォルダ

他にも「@IsoFile@」,「@OutDir@」,「@Verbose@」,「@Build@」, 「@Version@」, 「@PluginDir@」等がありますが、プラグインファイル中で使う事はまずないでしょう。

「PE Builder v3.0.25」からは殆どのセクションで[セクション名.BuildNo]という記述ができるようになりました。これはどういう事かというと...
[SourceDisksFiles.2600]
files\xp\sp2\ole32.dll=2,,1 ; for XP
[SourceDisksFiles.3790]
files\2k3\rtmgdr\ole32.dll=2,,1 ; for 2k3
のように「条件ビルド」が可能だという事です。

[Append]セク ションは「Nu2Menu」のためにしか使われない(使えない)と思われます。
何故なら、「<PE>\Programs\Nu2Menu」に存在するはずの「nu2menu.xml」に対して 「nu2menu.xml ,test.xml」という表記がまかり通るからです。他のセクションの表記に倣っているのであれば「Programs\Nu2Menu\ nu2menu.xml , test.xml」でなくてはならないはずで、少なくとも現段階では「Nu2Menu」以外の事に使わないようにするのが賢明だと思われます。

[SourceDisksFiles] はファイルコ ピーだけを行っている訳ではあ りません。例えば
@SourcePath@\i386\APPMGR.DLL=2,,4
という記述が可能です。 「@SourcePath@\i386」には 「APPMGR.DL_」 しかありませんが、イメージファイルにはちゃんと「APPMGR.DLL」が含まれます。これは...

1. 「@SourcePath@ \i386」から「APPMGR.DLL」というファ イル名をアーカイブしている書庫が探し出される。
2. .「APPMGR.DL_」に存 在する。
3. リネームは行われないので「<PE>\i386\system32」へそのまま解凍さ れる。

という事を意味しています。では[SourceDisksFiles]の「`attribute=2`」 の「解凍しない」何のためにあるの でしょうか？実は「?????.??_」のような圧縮ファイル(書庫)をそ のままコ ピーするために存在しているスイッチなのです。
なお「`attribute=1(or 4)`」でのファイルチェックは「解凍後」のファ イル名で 行われます。「`attribute=2`」 の場合にはもちろん書庫自体(解凍前)が対象となります。

[SourceDisksFiles] 及び[SourceDisksFolders]ではファイル名の先頭に絶対パスや相対パスを指定する事ができま す。相対パスはプラグインファイルからの相対パスになります。
パスを指定しなかった場合、カレントパスからコピーされる事になりますが、それ以外にも「@SourcePath@\i386」内 にある圧縮ファイル内 に、指定したファイルがあればそこからのコピー(解凍/抽出)が行 われます。
ファイルの場所が「@SourcePath@\i386」内のアーカイブ内である場合、パス未指定にするには`「attribute =0」でなく てはなりません。``「attribute<>0」の場合には`「@SourcePath@ \i386」を明示的に指 定する必要があります。
APPMGR.DLL=2
は可能ですが、
APPMGR.DLL=2,,5
は不可という事です。この場合には「@SourcePath@\i386\APPMGR.DLL=2,, 5」というように指定しなくてはなりません。

「PE Builder」は「Pluginフォルダで*.infを検索した結果」の順序で組み込みます。
「PE Builder」がNTFSのドライブにインストールされている環境ではプラグインフォルダの名前順に検索されますので、フォルダの名前を変更すれば組み 込み順序を変更できるのですが、FAT32の場合には必ずしもプラグインフォルダの名前順に並ぶとは限りません。
FAT32で組み込み順序を変更するには、プラグインをフォルダごと別のフォルダへ移動しておき、「Plugin」フォルダへ書き 戻す事によって高確率 で変更できます。デフラグをやってからだと効果的かもしれません。
実際の組み込み順序は「PE Builder」でビルド後、「pebuilder.log」を参照して下さい。

定義済みディレクトリIDは変更される事があります。
正確な定義済みディレクトリIDを知るには、一旦適当に 「PE Builder」でビルドした後、「%outdir%\I386\inf」にある「layout.inf」を参照して下さい。ここに書かれた値が正確な定義済みディレクトリIDとなります。
変更になる可能性の高い特殊なフォルダの指定には定義済みディレクトリIDを 使わずに[WinntDirectories]セクションで定義を行うようにして下さい。

[Strings]セクションというの が存在します。
「変数名="文字列"」というフォーマットで列挙すると、これ以降のセクションで「%変数名 %」と記述した箇所が対応した文字列に展開されます。詳しくは「ramdisk」プラグインを参照して下さい。

コンテンツ一覧へ

PE Builder Copyright (c) 2002-2006 Bart Lagerweij. All rights reserved.