explaining the winbuilder framework

13

Click here to load reader

Upload: nuno-brito

Post on 02-Jun-2015

7.263 views

Category:

Documents


0 download

DESCRIPTION

A status update about the WinBuilder framework and current state of available projects in 2009

TRANSCRIPT

Page 1: Explaining the WinBuilder framework

WinBuilder is a project dedicated to the research and production of boot disks based on Microsoft Windows Operative Systems.

Nuno Brito March 2009

Page 2: Explaining the WinBuilder framework

Index of ContentsBackground...........................................................................................................................................3Development Structure.........................................................................................................................4

Core Development...........................................................................................................................4Project Development teams.............................................................................................................5App script developers......................................................................................................................6Beta testing and feedback................................................................................................................6

Script Engine and programming language...........................................................................................6Script levels......................................................................................................................................7Syntax usage....................................................................................................................................8Script UI.........................................................................................................................................10

Marketing............................................................................................................................................11Target Audience.............................................................................................................................11Partnerships....................................................................................................................................11Press...............................................................................................................................................12Forums...........................................................................................................................................13

Conclusion..........................................................................................................................................13

Page 3: Explaining the WinBuilder framework

Background

WinBuilder is tied to the concept of constructing customized Windows Operative Systems.

Microsoft binary files from the Windows Install CD/DVD's are used as source to build these customized versions without resorting to the internal Windows installer as typically expected and this process is achieved in full conformity with MS's EULA (End User License Agreement).

A typical WinBuilder project will make available a customized Operative System that is suited for very specific purposes, in most cases it will be used for System deployment tasks or used as computer recovery tool.

The ideal work platform for these projects is Windows PE (PreInstalled Environment) due to several characteristics as the default footprint size (<300Mb), portability and optimal performance due to the lack of addons traditionally expected on a full Windows Install..

Early versions of Windows PE began with Windows 95 which was installed using a reduced version of Windows 3.11 (called “mini”). Later with XP, the graphical portion of the Windows XP Install process started being performed by the core OS itself, which is launched with a specific parameter called “/miniNT”.

Microsoft also made available a customizable Windows PE package to a few selected organizations who purchased the right to use this technology, however, the previously mentioned “/miniNT” switch was quickly explored by System Administrators because it was possible to manufacture a minimally functional and portable Windows XP OS as alternative to the official Windows PE package.

A XP based PE OS is typically small sized and works from Read-Only media as the case of CDROM's. It's portable and supports a satisfatory array of Windows 32 bit programs that come handy for advanced diagnostics or repair of machine from where they boot. This home-made solution was available at a small fraction of the cost implied for Windows PE license as this usage doesn't breach the terms available on the standard XP EULA.

However, building such OS required a construction process understood only by people with some degree of experience handling and debugging MS software.

In 2002, the first tool to ease the task of using this “/minint” switch was published by Bart Lagerweij, entitled “Bart's PE Builder” and based on the same construction method adopted by Windows PE version 1. This software quickly become the standard tool to produce Windows PE boot disks from Windows XP and Windows 2003 sources.

WinBuilder surfaced at the boot disk history in 2005 as a tool designed for developers interested in customizing even further these Windows PE boot disks to even more extreme levels of usage, quickly gaining reputation and respect as a quality project.

Over the years, the results remained very satisfactory and WinBuilder consolidated it's position as the “de Facto” tool for thousands of IT workers and home users when it comes to customize Windows PE images.

Projects like LiveXP, VistaPE and similar boot disk projects are continuously developed by an interesting community of people around the world who volunteer to contribute with their talent and further explore the potentialities of the Windows PE platforms.

Page 4: Explaining the WinBuilder framework

With the advent of Windows Vista and Windows 7, WinBuilder became the only software capable of creating Windows PE versions 2 and 3 as alternative to the tools distributed by Microsoft in the WAIK package.

All work inside the official WinBuilder structure is organized and based on volunteer work, the developed projects attempt to follow a strict non-profit policy as much as possible to make these products more attractive and available to a wider audience.

Exceptions are occasionally made when a company directly contributes to project developments by sponsoring a software developer with the intention of providing an end result that would meet their specific expectations.

Development Structure

The development of this project is separated into specific groups of action:

– WinBuilder core development team

– Project development teams

– App script developers

– Beta testing and feedback

Core Development

The core development team is responsible for the compilation of WinBuilder.exe – the core engine of all winbuilder projects. This team is currently composed by three members, myself (Nuno Brito, Portugal) along with Peter Schlang (Germany) and Robert Kochem (Germany). I am responsible for managing this team and along with joining the coding effort, I also decide whenever a newer edition is ready for being made available to the public. Peter is the senior developer and he is responsible for solving the bugs reported by users. Robert is dedicating his time to implement very specific features and optimizations to the code.

The WinBuilder core uses a versioning method based on full numbers where even numbers represent a stable edition and even numbers are used for beta versions.

Compilation of this engine is achieved with the use of Delphi 7 which allows to produce binaries compatible for use from Windows 95 to Windows 7 along with some limited support for running under WINE/Linux. At the moment we are considering the transfer to Delphi 2007 to allow the full native support of Unicode implementation for a better performance when working with full Unicode based language OS's as for better support to Russian and Asian users.

Currently, Winbuilder is using stable version 076 and preparing to release beta version 077.

Page 5: Explaining the WinBuilder framework

Project Development teams

Each project is composed by either it's author as a single developer or as a team of developers if the project grows in popularity. At current, projects considered popular by the main stream of users are LiveXP and VistaPE.

On the case of LiveXP, it's a project targeted for use with NT5 – the platform for Windows XP and Windows 2003. It is a direct concurrent to the popular project from Bart Lagerweij (BartPE) and it's development team is composed by two members: David Kummerow (Australia) and Cemal Tolga Talas (Turkiye), that successfully ensure that the project is updated and using the latest available techniques.

VistaPE, currently developed by Sergey Gurinovich (Russia) and Markus Debus (Germany), is based on the Windows PE 2 technology provided for free by Microsoft. The original version from Sergey was extraordinary from a perspective of project functionality but lacked the proper documentation or easy to understand functioning for other users. This detail was later solved by Markus as he prepared this project for the official release on the C'T magazine.

Many other projects are also available and developed by the respective members, in most cases these projects are specific derivations from other projects already made available.

A list of available projects is listed on wikipedia: http://en.wikipedia.org/wiki/WinBuilder

• VistaPE Based on Windows PE 2.0 (included on Windows Vista DVD and WAIK) • PE21 - boot disk project based on Windows PE 2.1 • NativeEx - Small sized Windows XP PE boot disk (~50Mb) • LiveXP - Based on nativeEx, contains a large archive of programs targeted for computer

repair and administration • UXP - Based On Windows XP for making a multiboot CD/DVD which includes LiveXP and

WinRoot ( also for customization of the CD/DVD there are other apps used such as Nlite , etc.

• PicoXP - Minimalistic 14 MB boot disk based on XP • ReactOS live CD - Based on the open-source ReactOS • BartPEcore - running bartPE inside a winbuilder environment • NaughtyPE - Windows XP PE boot disk with sound support and other multimedia features.

Projects for newer technology based on Windows PE 3 from Windows 7 are already being made available although it is not yet considered mature enough for a wider audience until the RTM version of Windows 7 is made available: http://www.boot-land.net/forums/index.php?showtopic=7250

Page 6: Explaining the WinBuilder framework

App script developers

A fundamental portion of each project is the amount of functionality that can be added onto the finished product. One of the most request features is the incorporation of third party programs such as file recovery tools, image backup tools like Ghost or Acronis or even specific tools for network and computer diagnostic.

The scripts that add these programs are called “App scripts” and are in most cases developed by volunteers who create and share them freely with the rest of the winbuilder community.

App scripts follow very specific guidelines regarding how they should be created and project developers include some of these scripts of their official project distribution. This simple organization allowed to gather hundreds of scripts which are usually found at a specific location inside the winbuilder support forum: http://www.boot-land.net/forums/index.php?showforum=65

Beta testing and feedback

One of the most important characteristics about WinBuilder is the strong motivation and development effort carried by developers. The link between the developing effort and the user feedback is quite encouraging to lead newer code improvements constantly.

App script developers or regular users are strongly motivated to write about any issues or bugs that were found during their usage experience and the respective developer works to implement the necessary measures, the support forums for winbuilder and the respective bug tracker are good examples that showcase on daily basis how quickly the reported issues get corrected.

http://www.boot-land.net/forums/index.php?showforum=33

http://www.boot-land.net/forums/index.php?autocom=bugtracker

Beta testing phase is also popular amongst wb users and the latest beta discussions for version 075 motivated more than 700 feedback replies (http://www.boot-land.net/forums/index.php?showtopic=4654) from fan users and script developers.

Script Engine and programming language

WinBuilder uses it's own scripting language, interpreting script files at runtime whose instructions will guide the project construction.

The programming language was designed from scratch and is a fully functional programming paradigm capable of using conditional statements, loops, variables, reusing functions and all the usual features usually expected in traditional high-level coding languages such as C or Pascal.

Page 7: Explaining the WinBuilder framework

To feed the engine, text files containing the script instructions are processed at runtime by the interpreter, which provides direct access to many of the internal Win32 functions, combined with unique set of internal functions to allow the construction of these OS's.

The script code is contained inside text files and is often divided into groups that allow to organize the code as necessary.

A typical script filename will use a .script extension and include three basic INI style sections:[main], [variables], [process]

“Main” section holds the parameters that identify this script. The title to be displayed on the script browser window, the level of execution inside the project, the author name, contact details, etc.

[main]Title=SudokuDescription=The popular number gameLevel=5

“Variables” will declare the global script variables using a Key=Value INI style, these variables can later be modified or even created from scratch at runtime but this section is still valuable to help developers have specific location where it is possible to modify the basic settings of their script by other users.

[variables]%ProgramEXE%=sudoku.exe

“Process” is the first section of the file where the code is interpreted, the engine will read each sequence of commands at this section (line by line on most cases) and call other customized sections as the developer decides as necessary.

[process]echo,”Hello World!”

Script levels

Thought the script syntax is valid in the same manner for all scripts, scripts are organized by levels of execution which determinate their role inside the project build process.

This functionality allows to establish a sense of hierarchy in the build process that will ensure that each script is executed at the expected step of the project construction and developers can set this value inside at the [main] section as the example below:

[main]level=9

If no level value is specified then it will default to level 5.

Page 8: Explaining the WinBuilder framework

It is possible to assign a value from 1 to 10. These values may be assigned as necessary for each project and level 5 is commonly reserved for the common app script category. Below is the typical configuration found on the most popular projects at this moment.

1 – Inspection scripts, check if there are valid conditions to build the project2 – Build scripts, will prepare folders and copy files from the source media.3 – Kernel preparation, produce adequate registry hives and expected DLL/OCX registrations4 – Kernel customization, in most cases add the Explorer Shell and perform OS customizations.5 – App scripts, scripts that install programs inside the target project6 – Drivers, add support for hardware – typically mass storage media, NIC's and Graphic Adapters7 – Final optimizations, typically destined to compress the overall project or similar improvements8 – Emulation, test the project functionality inside a PC emulator (Qemu, VirtualBox or VMware)9 – Final step, save the media onto CD/DVD/USB

Syntax usage

Most of the learning process to use the scriptable syntax is done using the examples from available scripts since they are fairly intuitive to use, although the syntax is also documented in detail at the project webpage as reference for advanced coders: http://winbuilder.net/help/scripts/script_syntax.html

There is also a custom developed external API extension that is closed tied to script syntax although it is not part of the official array of scriptable commands.

This extension is based on a consortium between the project developers of the most popular projects that began in 2007 with the intention to harmonize the coding of a specific type of scripts called “app script” that installs a third party program onto the target windows project.

At the time before this implementation, a project with a popular community support would see available many scripts that would add a program onto the project but the coding style relied on static variables and definition which require a code rewrite sooner or later as the project evolved.

The result of this joint effort was the appearance of an external API that allows an app script to be reused between projects that are built from different windows platform or project designs.It is common that app scripts also contain the binary files for the third party program itself if the respective software product allows this sort of distribution (the case for freeware programs).

Binary files are attached to these text files are compressed and encoded automatically into a format that allows their distribution without getting corrupted.

Bellow is an example of an app script:

[main]Title=SudokuDescription=The popular number gameLevel=5

[variables]%ProgramTitle%=Sudoku

Page 9: Explaining the WinBuilder framework

%ProgramEXE%=sudoku.exe%ProgramFolder%=Sudoku

[process]Add_Shortcut,DesktopAdd_Shortcut,AutoStartAdd_Shortcut,StartMenu,Games and Fununpack

As noted, the code does not contain any static WinBuilder syntax. The used commands are custom defined commands that belong to the external API. These functions are adapted to the scope of the project under which the script is being executed.

This level of high abstraction allows a very flexible type of script, prepared to withstand the evolution and modification of projects without affecting the app script coding in future years.

The app script format is documented on the following link:http://winbuilder.net/help/scripts/script_application.html

It is constantly developed and improved by the respective the development experts, more information on the current API status is found at the following link: http://www.boot-land.net/forums/index.php?showforum=7

Code examples from hundreds of app scripts are available at the official app script repository: http://www.boot-land.net/forums/index.php?showforum=65

Page 10: Explaining the WinBuilder framework

Script UI

One peculiar feature of these scripts is the capacity to also support a simple user interface that allows the end user to modify particular settings at each script.

The UI can be created using an internal WYSIWYG editor included inside WinBuilder.exe, below is an example of this interface found at the LiveXP project.

Page 11: Explaining the WinBuilder framework

Marketing

Windows boot disk technology is as a niche market as it was previously only made available to users with a specific knowledge on this area. We've tried to break this concept into a tool designed as a “One-Click” experience for most projects, resulting in a very attractive solution.

The common way to raise public awareness of any given software product is to purchase publicity resorting to ad banners, however, since this project adopted a non-profit policy, other methods were applied to overcome the lack of financial resources and are detailed in the chapters below.

Target Audience

WinBuilder is a tool designed from the start for an audience of users with no experience on this field and also for users performing advanced IT tasks in corporate environments.

It is not easy to keep this tool attractive to such extreme ends of the audience array, yet, a balance has been achieved over the years with the development of specific projects orientated to particular audience segments and providing easy to understand documentation to allow new users learn how to use this tool for their needs. A lot of work has also been put into a visually intuitive UI at each project.

This effort contributed to keep WinBuilder as a very popular and flexible tool amongst those who seek advanced features on their boot disks.

Partnerships

To raise the visibility and reputation of this product, some relevant partnerships between winbuilder/boot-land.net were established over the years with sites of related audience, for example BootDisk.com (http://bootdisk.com) where WinBuilder projects are promoted at the front page of this site, an historical internet reference to the boot disk field for over a decade.

Sites/companies that developed their own WinBuilder projects will often refer their users back to winbuilder/boot-land websites in exchange for support to these developments.

Examples: ReImage (http://reimage.com), DiskInternals (http://www.diskinternals.com), C'T Magazine (German edition - http://www.heise.de/ct/Notfall-Windows-auf-CD-oder-Stick--/projekte/132649)

Page 12: Explaining the WinBuilder framework

Press

On the mainstream audience level, some projects gained privileged exposition to a wider audience through the publication of paper articles and respective promotion from computer magazines in several countries across the years. In some cases, these projects have been featured at the cover page:

–Computer Bild (2009)

–c't Magazin (2008)

http://www.heise.de/ct/projekte/pebuilder/

–PC Utilities (2008)

http://www.magnesiummedia.com/pcutilities/details40315.html

–Chip (2007)

http://www.chip.de/downloads/WinBuilder-mit-VistaCE-und-LiveXP-Projekt-067_24441477.html

–Com! Magazin (2007)

http://www.com-magazin.de/hefte/artikelarchiv/com-artikel/vista-live-cd-oder-dvd.html

–PC Japan (2007)

http://www.sbcr.jp/pcjapan/magazine/detail.asp?magid=1041200703

Over the internet, several major audience generic sites also promote WinBuilder products to their readers as seen on the CNET and Chip websites, googling for “WinBuilder” will also showcase the amount of third party websites hosting a stable edition of this tool.

Page 13: Explaining the WinBuilder framework

Forums

Forum activity is an important factor when it comes to promote this project on a daily basis. People use forums related to this technology as a trusted source to find and exchange knowledge with other experts.

At present, WinBuilder is mainly discussed between two forums of considerable reputation: boot-land.net and 911cd.net. Both sites act as a strong way of promoting WinBuilder as it is the common denominator used to exchange the custom techniques in a way that can be quickly replicated by other users.

The forum discussions are indexed by major search engine bots such as google and will often get displayed at the first page of searches related to windows boot disks. Over 90,000 different links from google searches have been logged by boot-land over the last six months.

WinBuilder uses Boot Land exclusively for it's official releases and discussions although many projects and discussions occur in other websites at most cases using the local language of it's active members.

This website was created by myself (Nuno Brito) shortly after releasing WinBuilder and has also become a very strong reference on the boot disk community as it provides support for several other important projects such as Grub4DOS and TFTPD32 along with the effort to motivate experts to publish ground breaking tutorials about boot disk technology.

Boot Land (http://boot-land.net) is ranked at the 87,284 position of world popular sites by Alexa and all hosting costs are fully supported by R1Soft, a company dedicated to web server backup software which will is also sponsoring the “2009 Boot Land awards” – a public event destined to distinguish the work of 10 authors on the boot disk field based on the user voting. At each month it counts around half-million page loads from visitors around the globe.

This site aims for quality and is maintained by a large team of Administrators and Moderators, no google ads are allowed and new members wishing to register themselves are required to pass in a peculiar system that discourages sporadic registrations in order to keep the respective member database filled only with members wishing to engage into a truly active participation inside the community. (http://boot-land.net/register)

Given these quality guidelines, we also promote a weekly newsletter to keep members updated about the current discussions being held at boot-land, this newsletter is presently sent to over 19,000 members. (http://boot-land.net/newsletters)

Conclusion

Across the years in a worldwide dimension, it is fair to say that WinBuilder and Boot Land have established a respectable position as reference for Windows based boot disks, however, this effort is not orientated towards popularity nor measured by the thousands of users – our main goal is to simply provide efficient methods to get things done. One thing that I've learned from these two projects is that our code quality is essential behind a successful project to ensure it's survival and flexibility in the long term. WinBuilder has evolved from a one man development into an independent organization and this effort has certainly pioneered the way how boot disks are made available today.