CD-ROM Collection


A flexible and power cataloging library/application for catalogin the contents of your CD-ROM collection


I have heaps of data CD's that have useful tools/applications/data spread across them. The problem is that when it comes to needing to use one of these I can never remember which CD it is on... My CD Collection tool solves this, it has a powerful engine (written in C#) which indexes and catalogs all of the files on each CD and an explorer namespace extension to integrate directly into Windows Explorer (it appears just like another drive) to allow browsing and searching.


The core engine is written in C# - it takes care of all of the cataloging features, and interfaces with a data storage mechanism through a data abstraction layer. Currently there is a plugin for ADO based SQL databases (this is an extension of an abstract SQL plugin), but the database technology is not confined to being SQL based.

The cataloging engine stores all information about files (it is smart enough to look inside archive files too). The base information is that which would be provided in a directory listing, but additional meta data is captured based on file type (such as ID3 tags for MP3's, file version infomation for binary files, etc). Additional meta data can be captured and retrieved by writing additional plugins.

On top of core library (also written in C#) are the UI library and some command line tools. The command line tools allow for importing of new CD's and searching the catalog. The UI library provides the same functionality but supplied as .Net callable Windows Forms, allowing these functions to be called from different applications.

The default application to view/search/import is through Windows Explorer. This is an interface that most Windows users feel comfortable with. This achieved by a 'namespace extension' which makes a CD-Collection node appear in the Explorer tree (just like the Control Panel or Web Folders). The namespace extension is written in C++ and communicates with the CDMS engine through .Net COM interop layer. This makes interfaces within the engine appear as COM interfaces that the C++ can call just as any other COM based code.



CDMS is currently unavailable for download, but will be made public when it is more stable.