.NET Windows Explorer extension to browse a file like .zip?
Asked Answered
P

2

5

I made a browser program for a archive type with the .mpq extension, which is highly used in Blizzard games.
It is like an explorer but only explores files inside MPQ archives.
Now, we all know how Windows Explorer browses .zip archives and I'd love to make it open the .MPQ files with so many rich features.

Is this even possible? So it is possible...
If so, then how? Shell Folder...

Can someone please point me to an example? (C#) I can't just translate C++ to C#...

Pincince answered 20/11, 2010 at 19:56 Comment(0)
S
5

This is done via extending the shell classes. You'll need to implement the Basic Folder Object Interfaces to accomplish this.

Switzer answered 20/11, 2010 at 20:1 Comment(3)
Thank you! I will look at the link right away! Edit: That example is in C++ at which I am not very skilled. May you give me or point me to an example or a COM interface library?Pincince
@Vercas: No. Unfortunately, this is a quite advanced set of COM interfaces that need to be implemented. I've only seen it done in C++, since prior to .NET 4, using .NET was a very bad idea (since it's an in-proc shell extension).Switzer
I'll accept this answer anyway because it is right, after all.Pincince
B
2

Although it is a C++ framework, there is a framework that implements exactly what you want, and that I have adapted with success for a similar file format: TarFolder (by the guy who developed GMail Drive).

You may also be interested in EZNamespaceExtension.Net, even if they do not support extension-based rooting (a workaround is to use URLs with specific protocols).

Finally, check out WindowsShell: it might be exactly what you are looking for !

Sorry for coming so late after the storm...

Bouncer answered 27/4, 2011 at 19:52 Comment(5)
OH MY GAWD. Thanks for the program! I totally needed something like that! I'll try to dissect the source code and make it use my C# library instead of it's own TAR functions!Pincince
@Pincince That should work :) . However, I think you have to use .Net 4.0 as this is the only version of the framework than allows other versions to be used concurrently within the same process (unless you're totally sure your DLL is the only managed one).Officialese
@Pincince However, make sure your functions (especially the ones that list and describe files) are very fast, as they tend to be called quite often. Rewrite them in C++ as soon as you have a working C# version.Officialese
@Vercas: check my edit ! I've found something even closer to your needs (I think) ! However, it does not implement modifying the archive. (and you can change the accepted answer :p)Officialese
This is awkward... I will try WindowsShell!Pincince

© 2022 - 2024 — McMap. All rights reserved.