Computing: DOS, OS/2 & Windows Programming

Installing Microsoft Personal Web Server on Windows 98.

I guess that most of those of you, who used Windows 98 long years ago, will be surprised, as I was myself, that the installation files of this OS include all that you need to set up a website development environment, including a full functional webserver. They call it Microsoft Personal Web Server (PWS), and it may be considered as the predecessor of IIS. PWS is not installed by default when you set up Windows 98, but is included on the installation CDROM (at least on the one of Windows 98 SE). If you browse the CDROM content, you will find the folder "pws" in the \add-ons directory.

This tutorial is about the installation of PWS on my Windows 98 SE, German language, VMware Workstation 16 virtual machine. It only deals with the installation and basic usage, not including details concerning the applications installed and how to use them.

When you run setup.exe from the directory <cd-drive>\add-ons\pws, the installation will fail with the error message that an unknown error occurred when modifying the registry.

Microsoft PWS on Windows 98: Registry access error during installation [1]
Microsoft PWS on Windows 98: Registry access error during installation [2]

The problem is due to some bug (?) in the DLL Mtssetup.dll, and Microsoft made available a patch, called Mtssetup.exe to fix the issue. At my big surprise, this file is still available at Microsoft's; click the following link to download the patch.

As we have to modify one of the installation files, it's obvious that we have to copy them to a writable media. Thus, the first step is to copy the content of the <cd-drive>\add-ons\pws directory to some temporary harddisk folder; I chose D:\PWS (D: being my data partition; on C: you should use something like C:\Temp\PWS). The important thing here is that the PWS folder contains several hidden files. I did not check how this is on modern Windows releases, but Windows 98 is really user-friendly here: When performing a "Select all" on the files in <cd-drive>\add-ons\pws, a message box pops up, telling us that there are hidden files, and that we'll have to make them visible in order to include them into the selection of files to be copied. Thus, in order to make sure that we copy all files of the PWS folder to the harddisk, from the Explorer menu bar choose View > Folder Options > View (German: "Ansicht" > "Ordneroptionen" > "Ansicht"), and select the checkbox Show all files (German: "Alle Dateien anzeigen").

Microsoft PWS on Windows 98: Making the hidden files in the installation folder visible in order to copy them

The hidden files should now be visible in the folder content display. Choose Edit > Select all (German: "Bearbeiten > Alle auswählen"), then copy/paste the whole folder content to the temporary directory on the harddisk.

Copy the downloaded patch Mtssetup.exe to the temporary directory, too, and double-click it in order to run it. After having accepted the license, you are asked to enter the "path to the extracted files" (this is our temporary folder with the PWS content), then you can choose to overwrite the file Mtssetup.dll, what, of course, we want to be done.

Microsoft PWS on Windows 98: Patching the installation files (replacing Mtssetup.dll)

Now we are ready to start the installation of Microsoft PWS. Double-click the file setup.exe in the D:\PWS folder (or whatever you chose as place to copy the files) to start the setup program. The screenshot below shows the Welcome screen.

Microsoft PWS on Windows 98: Installation - Welcome screen

First, you have to decide if you want to perform a minimal, standard, or custom installation; standard installation is fine (screenshot on the left). Then, you have to enter the path to the standard base directory for web publishing, i.e. the webserver's document root ("htdocs" in Apache). The default location is C:\lnetpub\wwwroot; I chose to use a folder on my data partition D: and changed it to D:\lnetpub\wwwroot (screenshot on the right).

Microsoft PWS on Windows 98: Installation - Choosing to pergorm a standard setup
Microsoft PWS on Windows 98: Installation - Choosing the standard base directory for web publishing

Now, file copy is started. And then, on my machine, a problem: At a certain moment, not only the setup program, but also Windows 98 becoming unresponsive (with a Command Prompt window displayed on top of the installer's window). Trying CTRL+ALT+DEL did not work, so all that I could do was to restart the virtual machine. The system booted up normally, and the components of PWS were listed in Windows Start menu.

What happened? No idea! I actually did not try to reinstall the software. As far as I see, most applications (in particular the webserver itself) work correctly. The only (at least I think) application that does not work is Personal Webserver Setup, that aborts with the message telling that it could not open iis.inf.

Microsoft PWS on Windows 98: 'Personal webserver setup' application startup failure

I suppose that this is in relationship with the incomplete installation, without being sure. Anyway, the server seems to be correctly configured by default, thus this application is (probably) not mandatory.

To test the PWS installation, open a web browser, and enter localhost in the address field. The screenshot below shows the PWS Welcome page, opened in Internet Explorer.

Microsoft PWS on Windows 98: PWS Welcome page opened in Internet Explorer

Where does the content of this page come from? Remember: During the installation of PWS, we were asked to specify the standard base directory for web publishing (I chose D:\lnetpub\wwwroot). This is the root of the webserver's file system, and this is where you go to, when you enter "localhost" without anything else. The file displayed in this case is a default file, specific to given webservers, or specified by the server administrator in some configuration file. On Apache, this file is normally called "index", common file extensions being .html or .htm (HTML document) and .php (PHP script). On PWS, the file is actually called "default". If we take a look in the directory D:\lnetpub\wwwroot, we find a file called default.asp. The extension .asp stands for "Active Server Pages", a Microsoft specific scripting language comparable to JSP (Java Server Pages).

Microsoft PWS on Windows 98: Standard base directory for web publishing with file default.asp

If default.asp is the file served by PWS when we enter "localhost" in the browser address bar, why the address shown isn't "http://localhost/default.asp", but "http://localhost/IISSamples/Default/Welcome.html"? Lets have a look at the content of the file "default.asp" (on the screenshot below, it is opened in Notepad++). Look at line 29: response.redirect = "/IISSamples/Default/Welcome.html". This means that when we go to the root of localhost, the script default.asp is executed and this script redirects the browser to the "Welcome.html" document in the D:\lnetpub\iissamples\default directory.

Microsoft PWS on Windows 98: File defaulr.asp opened in Notepad++

One of the applications installed with PWS is Personal Web Manager that, among others, includes a wizard that you can use to publish whatever you want to publish on PWS, and a wizard that you can use to quickly build your own homepage, without the need to learn HTML and similar. As I said at the beginning of the tutorial, I did not try out these applications...

Microsoft PWS on Windows 98: Persoanl Web Manager may be used to build your own homepage

If you know HTML, you can create your webpages manually, writing the code in some text editor. Notepad++, the best text editor ever, already existed for Windows 98; it offers syntax highlighting for lots of programming and scripting languages, including HTML and ASP. Active Server Pages (ASP) is a server side scripting language that lets a webmaster transform the plain, static web site into a dazzling, dynamic solution. VBScript (Visual Basic Script) is a scripting language developed by Microsoft to be used with Microsoft products, mainly Internet Explorer. It is mainly used as the default scripting language of ASP. If you know these languages, you can write your own scripts (in Notepad++, for example), and publish them together with the static HTML pages on your PWS.

Here is an example of a simple HTML file (I called it hello.html):
    <html>
        <head>
            <title>Hello</title>
        </head>
        <body>
            <h1><center>HELLO WORLD!</center></h1>
        </body>
    </html>

And here is an example of a very simple ASP file (I called it hello.asp):
    <%
        Response.Write("<h1><center>Hello World from ASP!</center></h1>")
    %>

To publish these two files, we simply copy them into the standard base directory for web publishing (directory, D:\lnetpub\wwwroot in my case). Note, that on the screenshot below the extensions .html and .asp are displayed, because I altered this folder setting in View > Folder Options > View (German: "Ansicht" > "Ordner Optionen" > "Ansicht").

Microsoft PWS on Windows 98: Publishing of the files hello.html and hello.asp

To display the pages in the web browser, use the addresses localhost/hello.html, respectively localhost/hello.asp. The screenshots below show the result in the Retrozilla web browser, the HTML file on the left, the ASP file on the right.

Microsoft PWS on Windows 98: Display of a custom HTML file in Retrozilla web browser
Microsoft PWS on Windows 98: Display of a custom ASP file in Retrozilla web browser

Note: You may wonder why the addresses on the screenshots start with http://wk-win98 and not with http://localhost. That simply is, because I entered these addresses (for explanations, cf. below).

Accessing PWS from another computer.

Accessing PWS from another computer requires, of course, that the two computers are connected, more precisely that they are part of a local network (intranet). Also, the IPv4 protocol must be correctly configured, i.e. the two machines must have been assigned IP addresses (by a DHCP server present on this network, or manually) that belong to the same subnet. Finally, PWS must be configured to accept connections from outside (and not only from the local machine = localhost).

I mentioned Personal Web Manager before, when speaking about the included wizards to build a homepage and publish some document. In the Overview (German: "Übersicht") tab, you can see if your webserver may be accessed from remote machines: In this case, the name of the computer, where PWS is running on (in my case: wk-win98) is indicated under "the homepage is available at" (German: "die Homepage ist verfügbar unter"). Note, that it's also here, that you can enable or disable access to the webserver.

Microsoft PWS on Windows 98: Persoanl Web Manager - Overview page (with server URL)

Now you know, why I used the URIs "http://wk-win98/hello.html" and "http://wk-win98/hello.asp" when testing my "Hello World" publications. The question is if we can also use http://wk-win98/ as address, when accessing the server from a remote machine? That depends. If the local network includes a DNS server, that can be called by the web browser to give it the local IP address of a machine with a given name, than yes. Otherwise, we'll have to use the IP address itself (unless we add an entry for wk-win98 to the hosts file on the remote machine). There isn't yet a DNS server on this part of my intranet, so I have to use the IP address of wk-win98, if I want to assess the webserver from lets say my Windows 2000 machine. To look up the local IP address, open Command Prompt (German: "Eingabeaufforderung"), and type
    ipconfig
As you can see on the screenshot, the IP address of my wk-win98 machine is 192.168.141.103.

Microsoft PWS on Windows 98: Running ipconfig to find the local IP address

So, on my Windows 2000 machine, I have to enter http://192.168.141.103 in the browser's address filed. The screenshot below shows the PWS Welcome page, opened in the Pale Moon web browser (as before on Windows 98, the browser is redirected by the script default.asp).

Microsoft PWS on Windows 98: Accessing PWS from a remote machine (here, Windows 2000)

Note: My Windows 2000 has the IP address 192.168.141.101, and (with a subnet mask of 255.255.255.0), as all computers from the subnet 192.168.141.0 should be able to access PWS at 192.168.141.103 without that any special configuration has to be done. If the connection to your webserver fails, check the firewall software on your Windows 98 computer. Most personal firewall applications allow by default connections from a local address, but some don't. If this is your case, you'll have to add a rule concerning HTTP to the firewall configuration.

Enjoy doing web programming on good old Windows 98!


If you like this page, please, support me and this website by signing my guestbook.