Skip to content

Talking Windows Pre-installation Environment: Background and Limitations

September 26, 2013

Introduction

I’m writing this post to provide some additional background information about the Talking Windows Pre-installation Environment (TWPE) project, and to tap the collective brainpower of the community for overcoming some of the remaining limitations. If you have feedback about this post, please send an email to bryansmart@bryansmart.com, or, better still, write to @bryansmart on Twitter.

Overview of Windows Pre-installation Environment

Windows Pre-installation Environment (often abbreviated WinPE), is a minimal version of Windows. The Pre-installation Environment portion of the name is due to the typical purpose of WinPE: to serve as a minimal operating system for use by Windows installation/setup and recovery features. When installing Windows, the Windows installation disk normally loads WinPE, and then loads Windows Setup.

Windows PE is used for tasks other than installing Windows, though. Many computer manufacturers create special partitions on the computers hard drive, or else provide special disks, to restore the computer to the state that it was in when it originally was purchased. In most cases, this recovery software uses WinPE as a basic operating system. Many companies that make hard disk imaging software also use WinPE as the operating system for powering their restore disks.

Microsoft distributes WinPE as freeware. That means that it is free to use and to share, but it can not be sold. The license for WinPE also includes restrictions that prevent it from being used for commercial products.

WinPE also contains many technical limitations. It is not able to operate in a multiple user mode. It will not run for extended periods of time without rebooting. It is also missing many components normally found in Windows. Most significantly for the blind user, the version of WinPE found on Windows installation disks does not include most components required for sound, drivers for sound devices, Microsoft text-to-speech voices, or Narrator.

For more about WinPE, go here.

Overview of WinBuilder

WinBuilder is a system for creating customized Windows boot disks. Since customizing WinPE to add any particular feature can involve many steps, including copying several files to multiple locations, modifying configuration settings in INI files, modifying the registry, and others, users on the WinBuilder Forum collaborate by creating scripts to implement each feature. For example, a script might add a system component like DirectX or an application like Firefox. Scripts also perform tasks related to the building of an image, such as copying the base WinPE files from a Windows install disk, creating an ISO of the modified files, or setting up a boot loader.

Scripts for performing various tasks are combined in to WinBuilder projects. WinBuilder projects produce bootable WinPE disks or disk images as their products. Many WinBuilder projects are available. Most WinBuilder projects are intended for tasks such as removing viruses and OS repair. Most projects do not include sound support.

Problems and Solutions

As is the case with many blind Windows users, when setting up Windows, I’d either use an unattended setup file, or else install over an existing copy of Windows. Neither of these approaches work particularly well.

Unattended setup files provide no spoken feedback during installation, and so the process is to usually start setup, wait half an hour, and hope something happens. If nothing happened, you must carefully check over your file, consider what might be wrong, make your changes, and wait again. Even if you have an unattended setup file that you know to be valid, it is difficult to create unattended setup files that handle atypical situations, such as computers with multiple hard drive partitions, storage devices that require drivers before they can be accessed, and so on.

You can always install Windows over itself. In this approach, the user starts Windows, inserts the Windows DVD, and runs setup. This approach has the benefit of speech feedback, but it includes limitations. Since you’re running setup from an active operating system, you can’t repartition the hard drive. It also isn’t possible to install Windows for a different architecture: for example, if you’re using 32-bit Windows, you can’t re-install as 64-bit Windows. Finally, you can’t install an older OS. If you’re running Windows 8, and wish to downgrade the computer to Windows 7, setup will not permit it.

I began this project to remove all of the above limitations. My goal when beginning this project was to create a simple talking WinPE desktop that could be used to install or repair Windows. If a talking version of WinPE was available, then a blind user could start this talking WinPE boot disk and proceed to run Windows setup from the stock Windows install disk without any further modifications.

Creating the Talking Windows Pre-installation Environment (TWPE)

When researching possibilities for creating WinPE boot disks, I quickly discovered WinBuilder. Many WinBuilder projects were listed on the WinBuilder forums, but few of them had any sound support, and I wasn’t sure how I would easily get Narrator or NVDA integrated.

I eventually stumbled across a thread where some blind users had been asking Al_jo, an expert forum member/project creator, to help with NVDA support that briefly had been present in an old WinBuilder project. After that work didn’t lead to any success, Al_jo decided to simply add NVDA support to one of the projects that he maintained. You can read more about Al_jo’s Win7PENVDA project in this thread.

I attempted to use Al_jo’s project, but ran in to some issues. First, his projects were only based on the 32-bit version of WinPE. This was fine for the project’s original purpose of antivirus/OS repair, but wouldn’t permit 64-bit Windows to be installed. Second, the project was full of apps that were mostly inaccessible to NVDA. Third, the WinBuilder system isn’t particularly screen reader friendly: NVDA can’t see check boxes in the scripts tree view, most controls don’t support keyboard navigation, etc. I knew that, if I simply told people about this project, beyond the complexity of getting it to build at all, the screen reader issues would mean that most novices wouldn’t have any success. Further, most people wouldn’t want to tweak and re-tweak their boot disk; they would just want something that they could burn to media and use to install/repair Windows.

TWPE Release 1

Originally, I wanted to distribute both a 32-bit and a 64-bit boot disk. The user would simply boot the disk that matched the architecture of the Windows that they wished to install, and they would then be able to run setup.exe from the original Windows install disk. Even though TWPE is based on Windows 7, it would still be able to install Vista, Windows 7, Windows 8/8.1, Server 2003, Server 2008, etc.

The 32-bit boot disk was relatively simple to create. I removed anything from Al_jo’s original project that wasn’t accessible, added a large set of audio drivers, and updated NVDA.

The 64-bit boot disk was a greater challenge. Al_jo was able to assist me by creating a 64-bit version of his WinBuilder project. However, many computers are still unable to start Windows setup from the 64-bit boot disk. When they attempt it, they receive an error indicating that there has been an unknown error when initializing COM. COM is certainly present on the 64-bit boot disk: NVDA uses it extensively.

I’ve asked Al_jo to assist with troubleshooting this error, but he says that he is unable to reproduce it. Boot disks that he builds with his 64-bit WinBuilder project are able to successfully start Windows setup. Until I can resolve this problem, I won’t be able to distribute a 64-bit boot disk. It isn’t practical to request that Al_jo build each release and send an ISO, as he has other projects requiring his attention.

Release 2

To temporarily work around the problems with the 64-bit boot disk, I created two disk images: a “basic” and a “mega”. The basic disk is largely the same as the 32-bit boot disk from release 1, although with additional drivers. The mega disk includes a modified version of the 32-bit setup for Windows 7. I’ve modified the install.wim so that, while the installer itself is 32-bit, it is able to install any of the images needed for the various editions of Windows 7, both 32-bit and 64-bit.

The modifications to the mega disk make it possible for a blind user to independently install any edition of Windows 7, but it is a poor solution. Most importantly, the mega disk only contains an English version of Windows 7. As with release 1, it is still possible to install any language of 32-bit Windows by simply inserting the install disk and running setup, but installing 64-bit editions won’t be possible. Similarly, it is possible to install the 32-bit version of Windows 8/8.1, but not the 64-bit edition.

The Future

I’ve tried everything that I can think of to build Al_jo’s 64-bit boot disk project. I’ve followed his setup to the letter: same host OS, same source media, same file locations, etc, but the version produced by my WinBuilder always results in the COM error when I run Windows setup. He has been helpful, but has run out of suggestions for me. WinBuilder projects are based on poorly documented scripts that are written in an atypical language, and I’ve not had luck in finding the flaw in the logic.

The reality in 2013 is that most people are now running 64-bit versions of Windows. Until we have a 64-bit boot disk, it won’t be possible for people to simply install any version of Windows that they have on hand by starting a talking boot disk and inserting their Windows DVD. I’m posting this background info here, along with everything that I have gathered regarding WinBuilder, in the hopes that some other smart people out there will help figure out what is wrong.

There are other features that I plan to add to these boot disks, including free tools for drive imaging and OS repair. However, the disks need to be able to perform their basic function (installing Windows), before much further time is spent on mods to either the 32-bit or the 64-bit WinBuilder projects

Resources

First, here are the download links for the current state of things:

Next, here are the original WinBuilder projects from Al_jo:

Remember that, to build either of these, you’ll need an ISO of Windows 7 32-bit for the 32-bit project, and 64-bit for the 64-bit project.

Though it isn’t the exact same WinBuilder project, this guide contains the instructions for the build process. Sorry if the link doesn’t work, but Al_jo’s site goes up and down.

Note: If you use WinBuilder with NVDA, you will not see the check boxes in the scripts tree view. JAWS recognizes the check boxes. I have no info about the status of other screen readers.

To build the project, you must press the play button in the toolbar at the top of the window. If you’re using JAWS, you’ll need your JAWS cursor. The play button is the first graphic in the line immediately under the menu bar. It is also possible to press this button with NVDA object nav: it can be found at the same nav level as the tree view.

I look forward to hearing from those of you that attempt to build the 64-bit project. Hopefully, you’ll figure out what it is that I’m doing wrong.