Here's what I would do. Make a console program that runs in the background. Now, associate all .wz files with the console program in Windows Explorer. This will cause your console program to execute when the user double-click on any .wz file.
If I recall correctly, the file name of the file will be passed to the console program as a parameter. Now, you have two options here:
1. Extract all files to a temporary directory.
2. Grab all filenames from the WZ file and create token files in a temporary directory.
For method #1, actually extract the file in the background and then display the contents to the user.
For method #2, just retrieve file names from the WZ archive using
BinaryReader and then create blank files with the same name. Now, the problem is, you'd have to suffix all file names with some unique file extension because Windows Explorer will assume these files are already extracted. Simply associate the file extension with your console program and have it extract the files and execute it when the user commits an action.
After doing one of the methods above, you can simply use the following method:
Code:
System.Diagnostics.Process.Open("C:/Path/To/Temp/Dir");
The problem with method #1 is that for large files, it might take a while before displaying the file in Windows Explorer on slower computers.
The problem with method #2 is that when the user attempts to copy and paste, they'd be copying a blank file. Also, unless you pad the token files to represent the file size as the original file, all files will appear in Windows Explorer to have 0 bytes.
I suggest going with method #1, and I'm sure there might be a better way out there. It's been a while since I've programmed desktop applications.