ROS Explorer FAQ (Frequently Asked Questions)

 

Q:  What is this "ROS explorer" ?

A:  It is a freely available program intended as replacement of MS Windows Explorer in the upcoming open source operation system ReactOS. It covers the explorer functionalities of desktop, explorer windows, desktop bar with start menu, task bar and notification area (where you can see the "tray icons"). It is not yet complete, it's work in progress. However you can already work with it. I have installed it for me as default shell. This is the best way to find problems with it, and to encounter, which functions are missing the most.

ReactOS Explorer Screenshot
(click to see more details)

Q:  On which platforms does it already run ?

A:  It does run on Windows XP, and on Windows Server 2003. It should also work  under Windows 2000, however I did not test this.
The first release of ReactOS, which booted into a graphical environment was version 0.2 in January 2004. It launched explorer as its graphical work bench. It provides the  desktop window, desktop bar, start menu and even the basic functions of explorer and cabinet file windows.
To achieve this, it uses a few DLLs of Wine, which are integrated in the ReactOS release and maintained fpr this two projects.
Explorer is heavily dependent on operating  system functions for managing the shell object namespace. So you will currently notice some differences between running it with original Windows system libraries and with Wine DLLs. There is only basic functionality implemented in Wine's shell32.dll. Hope that will change in the near future. Also does the whole shell namespace depend on correctly configured registry entries. And there are really many of them.

 

Q:  How did it evolve?

A:  Some time ago, I was disappointed by Microsoft, as they did remove the File Manager "winfile.exe" from their delivered operating systems. I think, they dropped it from Windows 2000 on. Windows NT 4.0 still contained it, however it  was not available as a start menu entry. As I am a very happy user of this tool, and missing many features of it in Windows Explorer, I decided to write my own File Manager clone, since I feared, some time the old File Manger would be no more compatible to new Windows versions. However currently it does run on Windows XP. There are only minor problems with it, like the feature to determine which user currently has opened a file ("Open By..." in the file properties dialog).
Well, I did not really finish this project. I got stock with it at a point, where you could browse the file system, but not do many more with it. Later on it was included as "winefile" into Wine, an Open Source implementation of the Windows API on top of Unix. Built under Linux as Winelib application it has the benefit of not only being able to browse the WIN32 file system, but also the unix file system.
Then I encountered this new open source operating system "ReactOS". They already did include an older version of my "winefile" File Manager clone, and were yet missing an Explorer program. So I started extending winefile for the missing explorer functionalities, but leaving the file manager approach of being able to use one window per drive in a MDI user interface.
To be able to do this in reasonable time and increase maintainability, I converted the previous C project into C++. I am using advanced features like lists, maps and sets of the STL (C++ Standard Template Library) for creating small but efficient code. The code is mostly written in the spirit of Resource Management, which is explained very informative by ReliSoft.

 

Q:  How can I get it ?

A:  There is a snapshot of the binary and one of the source code you can download. However they will be almost outdated at the time you are downloading them. To get an up-to-date version, you should get the current source code using Subversion and compile it yourself. If you also want to use this pretty ROS background picture, look into this archive.

 

Q:  What license is it using?

A:  It is licensed by the LGPL 2.1, so you can use it without licensing derived work using the GPL.

 

Q:  How can I run it ?

A:  If you simply execute "explorer.exe", it checks, if there is already running a desktop. If not, it starts up in desktop mode. If there is already a desktop application, it starts in window mode and displays an explorer window to browse the shell namespace.
If you want to force it to start up in desktop mode regardless of an already running desktop, specify an additional command line option, and run it with the command "explorer -desktop".

If you want to replace windows explorer with ROS explorer, you can achieve this by setting the registry value "Shell" at the key "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon". Insert into this value the full path of your ROS explorer executable (here you can see a screenshot). For example I do have the value "d:\osexperts\reactos\subsys\system\explorer\explorer.exe" there. This overrides the default shell for the currently logged on user. When termination the ROS explorer after logging in, windows explorer will start up. So you always have a fallback, if something goes wrong.

If you want to change the explorer for all users of a system at once, you can also change the registry value "Shell" at "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon".
You can always start Windows explorer by running "explorer.exe" (without path) for example with the "Run..." command in Task Manager. Simply press CTRL+ALT+DEL to launch it, and look  into the "File" menu.

Newer versions of ROS Explorer contain the command line option "-install" to do this without fiddling with the registry editor and replace the previous shell application just by executing "explorer.exe -install".

 

Q:  How to terminate it ?

A:  To terminate the desktop, click at "Log Off..." in the start menu. This currently does not really finish your login session. It merely terminates the running explorer instance, and Windows restarts another Explorer. If you installed ROS explorer only on a per-user basis, you then get the Windows Explorer.

 

Q:  Is it complete ?

A:  No. There is yet many missing functionality.
Here is a list of things already on the TODO list: (The up-to-date list is available in the current source code.)

Also this explorer implementation is not very configurable. Windows Explorer looks at very many entries in the registry to decide if this and that feature is to be displayed or not. Well, this lack of configurability may also be a feature. It makes the program leaner if it only contains that features, you really need.

There may be many more things than listed here missing from ROS Explorer.

There is also an automatically generated TODO list, which is regularly updated from the source code in the repository. 

What is already implemented:
Additional functionality compared to the original Windows Explorer:

 

Q:  Does it have bugs?

A:  Of course. If you find one, please try to figure out how to resolve it, and notify me of what you could find.

 

Q:  Is there any source code documentation ?

A:  Yes. You can read it online or download one of the following two files:

compressed HTML help file

compressed HTML help file of complete source code, including private class members

 

Q:  What do I need to compile it myself ?

A:  There are several possibilities: You can use the free GCC compiler in its MinGW version, or you can use Microsofts Visual C++ to compile the explorer. For compiling with VC++ you need the latest Platform SDK headers and libraries as of July 2003. If you want to compile the whole ReactOS operating system, there is no choice. You have to use MinGW as build environment. There is also the possibility to cross-compile the source code under Linux. Last but not least you can also compile it as a Winelib application. For this use the "Makefile.Wine", however I don't want to conceal a little warning about this, since the Makefile may not always be up-to-date.
The source code is stored in a source code repository managed by the revision control system Subversion. So you have to install a Subversion client at your computer. You can use any one of the different clients like for example TortoiseSVN, but I recommend the command line version for Windows. Also are the commands, which I describe in this FAQ, only valid if you have installed a command line version of Subversion.

To install MinGW, you have to download and install MinGW of at least Version 3.1.0.

You have to install the W32API headers and libraries of at least version 2.4 (already included in MinGW 3.1.0). Install the files of the download package on top of your MinGW installation, e.g. to "D:\MinGW".


Furthermore you need to install the "make" utility. An older version like that of 7/2001 will also do it.

If you want to get the full ReactOS source code, you can do this by executing:

If you only want to compile the explorer, not the whole ReactOS, and you have VC++ installed, you can check out only that part, which contains the explorer source code, you don't need all that other. Go into your command prompt, change the working directory to the directory, where you want to place the files, and type in the following to get the files by Subversion:

There is also a branch for a stripped-down small version of ROS Explorer without many advanced features:

Finally you can start the build process by invoking "mingw32-make.exe" (or "make.exe" if your MinGW installation uses this executable name) in the directory "reactos/subsys/system/explorer" to compile the explorer.

To compile the explorer independent from the other ReactOS code using an MinGW environment, use the command "mingw32-make -f Makefile.MinGW".

To build ReactOS you invoke "mingw32-make" in the root directory "reactos". Be sure, Cygwin is not in your PATH environment for building ReactOS. Otherwise you will get error messages because the Cygwin shell /bin/sh will be called. And it doesn't understand Back Slashs used as path separators.

 

If you  want to use a mingw32 cross compiler environment under Linux, here is a description of how to set it up. There are also available precompiled binaries, if you have the correct operating system. (Linux x86, GLIBC 2.3) If you use this, you should install a link, which is yet missing there:

ln /usr/local/cross-tools/bin/i386-mingw32msvc-windres \
/usr/local/cross-tools/i386-mingw32msvc/bin/windres

With this you can put in your PATH to switch to the cross compiler environment. I am using a little script "mingw32" to achieve this:

#!/bin/bash
export PATH=/usr/local/cross-tools/i386-mingw32/bin:$PATH

Put it in your path (e.g. /usr/local/bin), "chmod +x" it, then call it with bash as ". mingw32".

Here you can get scripts for downloading, compiling and installing a mingw cross compiler environment in one step.

Patvor pointed out  this web site with one more cross compiling script.

 

If you want to compile the explorer with Visual C++, you need the version 6.0 with installed Service Pack SP5.

Open the project workspace "explorer.dsw" and build the project "explorer" as "Win32 Debug" or "Win32 Release" version.

You can also build the program using VS.Net 2002 or VS.Net 2003.
But be aware, I do not regularly test builds with this compilers.
Also you should pay attention: The IDE reads in the VC6 format project files, as you open them the first time. So if there are any changes, you have to repeat this conversion:

 

Q:  The compiler complains, it cannot understand some function or symbol. What is wrong ?

A:  You may not have installed the current W32API headers. Try to install the current W32API version.

Another possibility is, there may be a problem with the current code in the repository. Listen to the ReactOS "Developers List" mailing list, if someone has the same problem. It may be fixed one or a few days later. Feel free to find the problem yourself and report it to the list.

Q:  I get this error using VC++:
c:\reactos\subsys\system\explorer\desktop\desktop.cpp(46): error C2065:
'GetShellWindow' : undeclared identifier

A:  GetShellWindow() has been made public by MS only a few months ago. It is declared in the Platform SDK of 2003. Before this it has been an undocumented function. There are also the two functions SetShellWindow() and SetShellWindowEx(), which are exported by WIN2000, but not yet documented in the MSDN.

 

Q:  I can compile the source files,  but the linker complains about some missing symbols like "CLSID_DragDropHelper".

A:  You may not have installed the current W32API libraries. Try to install the current W32API version.

Q:  How can I update my already checked out source code to the current version ?

A:  Go to the root directory "reactos", where you did check out the source code. There initiate the command "svn up". To compile it, simply type another "make" in the reactos (or in the "explorer" subdirectory if you are only interested in explorer). If you get some unexpected errors, try, if a "make clean all" helps. In this case there may be some problems with file dependencies, which are sometimes not completely correctly handled in the makefiles.

 

All this stuff about downloads, installation, compiling and linking sounds a bit complicated, doesn't it ?
At least it is possible and may become easier in future. So I wish you good luck!   :-)

 

Q:  Who are you?

A:  I am Martin Fuchs and live in Germany. You can reach me by mail at:

Go to my ReactOS Wiki Page with additional Links

 

There is also a Belorussian translation of this page.

last update: 02.07.2011

Web-Countersays you are visitor number counter since 21.09.2003 main page