Customisable Emergency CD and BartPE Plugins!
Please registerlogin

 

Search bootcd.us:

Note: To search plugins click here!


Quick Links:

PEBuilder tutorial
Browse BartPE Plugins
Search Plugins Repository
Create bartpe plugins
Build customizable boot cd
Bootable cd wizard
Create acronis bootable media
Tools to create bootable cd
911cd utilities
Search site
Dr hoang's homepage
Site map

Create or Modify PE Builder plugins

If you want to build your own plugin, this is the first document you should read. You can use other plugins that come along with BartPE to help you gat started. A plugin is essentially an inf file that you create. There may be additional files supporting a plugin such as a help document and an xml file (eg.ghost_nu2menu.xml) that is used to create an entry in the nu2menu (the default shell of BartPE). In addition you may need other plugin specific files such as the executable files for an application.

Special note: If you have ever downloaded PE Builder (v3) you already have this document. Check the doc folder of the zip file you downloaded. I've placed this document online merely in the hope that it will be useful to someone.

PE Builder v3 plugin help

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

Last updated: Dec 22, 2003

  1. Introduction
  2. Creating a plugin
  3. WinntDirectories section
  4. SourceDisksFiles section
  5. SourceDisksFolders section
  6. Software.AddReg section
  7. Software.DelReg section
  8. SetupReg.AddReg section
  9. Default.AddReg section
  10. Default.DelReg section
  11. AddLine section
  12. DelLine section
  13. SetValue section
  14. Append section
  15. PEBuilder section

Introduction

This document should help to create or modify PE Builder plugin files. The main .inf file for PE Builder is pebuilder.inf file. Please do not edit this file! If you want to change something use a plugin file. All plugins are located in the plugin directory. Every .inf file in the plugin directory (doesn't matter in which folder) with a "pebuilder" section is considered a valid plugin for PE Builder. Use the Enable/Disable button in the plugin dialog to turn plugin on/off.

Creating a plugin

A plugin .inf file must be an ascii file, not unicode. Lines starting with a ";" (semicolon) are ignored (used for comment).

Every plugin file should start with the lines shown below:
; PE Builder v3 plug-in INF file
; Created by Bart Lagerweij
; http://www.nu2.nu/pebuilder/
;
; Short description of that the plugin does...
[Version]
Signature= "$Windows NT$"
[PEBuilder]
Name="NiceNameOfPlugin"
Enable=0
Help="pehelp.php"
You should change the name, url and other settings, this is just an example...
Please note that you must include the [Version] Signature= "$Windows NT$" information. Otherwise the setupapi functions cannot open the .inf file. Please use the information below to add more section to your plugins...

WinntDirectories section

Section WinntDirectories is in the following format:
directoryID=dirname[, attribute]

where...
directoryID is the directory number (id)
In plugin .inf files you can use 'a'-'z' for dynamic number assignment...
dirname is the name of the directory. If the name contains spaces put double quotes "around it".
attribute numeric value to enable/disable some options
value:
1 - Always create this directory (even when empty)
2 - Create dir. from (output) root (not in \i386)
Just add the values to combine...
Default value for attr is 0.

Example:
[WinntDirectories]
; Always create a folder in the root called "Bart"
a="Bart",3
; Create a folder in the root called "Project\Bart\Source"
b="Project\Bart\Source",3
; Create a folder in the i386 directory called "extra\files"
c="extra\files",1

Here is a list of the (most used) directories ID's:
ID Directory Remark
30000 [root] PE Builder output root
1 \ SystemRoot (on CD this is the \i386 folder, on hd this is the \minint folder)
2 system32
3 system32\config
4 system32\drivers
5 system
17 system32\drivers\etc
20 inf
21 Help
22 Fonts
24 msagent\intl
52 msagent
124 WinSxS
125 WinSxS\Manifests
252 WinSxS\Policies

PE Builder uses directory id's starting from 30000. Where id 30000 is used for the output root directory. 30001 and up are dynamically used by PE Builder.

SourceDisksFiles section

SourceDisksFiles[.build]

The section SourceDisksFiles uses the following format:
filename=directoryID[, filenameRenamed][, attribute]

where...
filename is the file to copy.
directoryID is the target directory number. See WinntDirectories section for a list of standard windows directory id's.
filenameRenamed is the target filename if renaming is needed.
attribute numeric value to enable/disable some options
value:
1 - used for pluginCheck(). Make sure that the file exists in the same directory as where the .inf file is located, before enabling or continuing.
2 - do not decompress the file.
4 - only copy the file if it exists. Don't complain when it does not exist.
Default value for attribute is 0.

SourceDisksFolders section

SourceDisksFolders[.build]

The section SourceDisksFolders uses the following format:
sourcepath=directoryID

where...
sourcepath is the source path/folder to copy from. This is an exact copy nothing is decompressed or extracted!
directoryID is the target directory number. See WinntDirectories section for a list of standard windows directory id's.

Example:
[WinntDirectories]
a="Programs\openoffice",2
[SourceDisksFolders]
; when openoffice folder is in plugin directory
openoffice=a
[SourceDisksFolders]
; when openoffice folder is at c:\
c:\openoffice=a

Software.AddReg section

Software.AddReg[.build]

Add registry keys to the "Software" registry hive. This section is in the following format:
regType, regKey, regValue, regData

where...
regType specifies the type of information to be stored as the value’s data. This parameter can be one of the following values:
0x0, (REG_NONE) create the key only, no value
0x1, (REG_SZ) string
0x2, (REG_EXPAND_SZ) string (with environment variable references)
0x3, (REG_BINARY) binary data
0x4, (REG_DWORD) 32-bit number
0x7, (REG_MULTI_SZ) multiple strings
* Note: must start with "0x" (lowercase)!
regKey specifies the name of the key as string.
regValue specfies the name of the value as string.
regData The actual data.

Example:
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 section

SetupReg.AddReg[.build]

Add registry keys to the "SetupReg.hiv" registry hive. Same syntax as Software.AddReg

Default.AddReg section

Default.AddReg[.build]

Add registry keys to the "Default" registry hive. Same syntax as Software.AddReg

Software.DelReg section

Software.DelReg[.build]

Delete registry keys from the "Software" registry hive. This section is in the following format: regKey[, regValue]

where...
regKey specifies the name of the key (including all values) to delete as string.
regValue specifies the name of the value to delete as string.

Default.DelReg section

Default.DelReg[.build]

Delete registry keys from the "Default" registry hive. Same syntax as Software.DelReg

AddLine section

AddLine[.build]

The lines in the AddLine section have the following format:
Filename,Section,StringToAdd

where...
Filename is the filename to add a line to.
Section is the sectionname.
StringToAdd is the line/string to add.

Sample:
"netmscli.inf", "MSClient.DelReg", "HKLM, Software\Microsoft\Rpc\SecurityService, 9"

DelLine section

DelLine[.build]

The lines in the DelLine section have the following format:
Filename,Section,StringToDel

where...
Filename is the filename to add a line to.
Section is the sectionname.
StringToDel is the line to delete. You don't have to match exact, any lines begining with StringToDel will be deleted.

Sample:
"netmscli.inf", "MSClient.Browser.AddReg", "HKR, Parameters, MaintainServerList,"

SetValue section

SetValue[.build]

The lines in the SetValue section have the following format:
Filename,Section,Key,Value

where...
Filename is the filename to set a value in.
Section is the sectionname.
Key is the key to assign a value to.
Value is the data.

Sample:
"netmscli.inf", "Alerter_Service_Inst", "StartType", "3"

Use Filename,Section,Key to remove a key
Use Filename,Section to remove a complete section

Append section

Append[.build]

The lines in the Append section have the following format:
Filename,FilenameToAppend

where...
Filename is the file where data will be appended.
FilenameToAppend is the file that contain the data to append.

Sample:
nu2menu.xml, penero_nu2menu.xml

PEBuilder section

If you are creating a plugin, your .inf file must have an [PEBuilder] section!
This section has the following fields:
Name the name or description of the plugin
Enable the state of the plugin
0 - Disabled
1 - Enabled
Help the filename of the plugins helpfile. This can be a text, html, doc, pdf or any other type of file. PE Builder uses the ShellExecute() function to start the document with its default association.

Copyright (c) 2000-2004 by Nu2 Productions. All rights reserved.