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]

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

ビ ルド番号バージョン
2600Windows XP
3790Server 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)
VersionPE Builder のバージョン
IsoFileISOイメージのファイル名(パス付き)。
OutDir出力パス。
ビルドされたデータが 出力されるフォルダ。
SourcePathソースパス。
PE Builder で指定した「WindowsXP CD-ROM」またはそれを展開したフォルダ。
PluginDirプラグインのフォルダ。
PluginFileプラグインのファイル名(パス付き)。
Language現在利用中の言語。
Verboseバーボーズモード (0=OFF, 1=ON)
BuildWindowsのビルド番号 (2600=XP, 3790=Server 2003)

サンプル:
[SourceDisksFiles]
program.exe=2,,3
lang\@language@.lng=2,,3

lang\@language@.lnglang\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.