Remote Web Development Job In IT And Programming

Customize and Enhance the TarFolder Shell Namespace Extension for Desktop Windows

Find more Web Development remote jobs posted recently Worldwide

High Level Overview: A shell namespace extension in Windows displays a file, such as an archive, as a browsable folder in Windows File Explorers tree and list views. The extension is a sophisticated COM object and runs in-process inside Windows File Explorer, so care is necessary to ensure stability. You dont want to crash the entire Windows shell with buggy code! You must never raise exceptions across interface boundaries! Fortunately, most of the basic shell namespace extension code has already been pre-built for you in this project.

Project Goals:

I. Convert the attached TarFolder shell namespace extension to work with the Codex Plug-In format (overview in the enclosed compiled HTML help file). This will recognize 100 archive types supported by Codex, instead of just TAR.

II. Convert the TarFolder shell extension to support AMD64 and ARM64 platforms, in addition to the existing X86 platform support. While TarFolder compiles as-is for the new platforms without any code changes, some assumptions the code makes about platform bitness must be corrected to ensure correct operation on both types of 64-bit platforms available for Windows today.

For example, disabling/enabling file system and registry redirection may be necessary. When compiled for the ARM64 platform, without any changes at all to the existing source code, shell namespace extension DLL self-registration does not work; but once the DLL is manually registered, it is possible to browse inside TAR archives in Windows File Explorer immediately. There *may* be other edge cases which *may* be discovered and fixed in due course of the project, however it is clear that the majority of work done in this project will be in part I.

Details for Part I:

While the Codex documentation in the attached help file is obsolete, it provides a very good high-level conceptual overview, and a very close approximation of the work you will be doing to read and write archive files. The beauty of Codex is that it insulates you from all internals of having to deal with archive files. You will only need to call some executable programs with pre-defined parameters and input/output files (instead of directly calling DLL functions as in the attached help file), to perform a wide variety of archive handling tasks. These executable programs and their parameters are attached in an updated documentation set enclosed as a text file. Relying on executable programs instead of DLLs enables us to achieve platform independence, without having to build individual Codex DLLs for each separate platform bitness (especially as we dont currently have those multi-platform DLLs).

You will remove the following functionality from the TarFolder shell extension, which has no direct correlation in the Codex Plug-In specification:

a) Creating a new empty folder inside an archive
b) Creating a blank new archive

You will be adding the following new features to the TarFolder shell extension, exposing new functionality available in Codex Plug-Ins:

1) Converting an archive type from one to another: Similar to the ConvertArchive Codex API call.
2) Running a setup program program contained inside an archive: Similar to the InstallArchive Codex API call.
3) Manually installing a program contained inside an archive (called check-out, for when no setup file is available): Similar to the CheckOutArchive Codex API call.
4) Executing any number of custom Codex Plug-In defined actions on the archive, such as:
a) Delete files from archive
b) Test archive (temporary extraction to memory)
c) Make archive into a self-extracting EXE
Similar to the GetArchiveToolsEx, GetArchiveToolHintsEx, RunArchiveTool Codex API calls.

As you can see, virtually everything is handled directly in Codex with a single function (or in our case, a single executable application) call. All you will have to worry about is properly formatting the data you send to the Codex apps, and properly parsing any data received back from them, within the context of the shell namespace extension.

Your implementation should also continue to support existing functionality in the TarFolder shell namespace extension:

i) Copy-Paste inside/outside the archive folder to compress/extract files inside/outside the archive.
ii) Drag-Drop inside/outside the archive folder to compress/extract files inside/outside the archive.

These techniques are based on complex COM interfaces, data adapters, and so forth. While they are already implemented and working in the existing TarFolder, a substantial rework *may* be necessary to get them to work with Codex, which supports a much broader range of archives than just TAR files. Specifically, you *may* run into issues with random extraction of files inside solid archives. Random access is very slow inside solid archives, so creative solutions *may* need to be devised to address this problem.

III. Platform Support: Windows Vista through Windows 10/Server 2019 (all bitnesses). For ARM64: Windows 10+ only.
About the recuiter
Member since May 20, 2018
Ramaswamysunder
from Teleorman, Romania

Skills & Expertise Required

Microsoft Visual C++ Win32 App Development 

Candidate shortlisted and hiredHiring open till - Jul 3, 2021

Work from Anywhere

40 hrs / week

Fixed Type

Remote Job

$452.09

Cost

Looking for help? Checkout our video tutorial
How to search and apply for jobs

How to apply? Do you have more questions about the Job?
See frequently asked questions

Similar Projects

Read Windows Event Logs using Windows API

I need to read .ETL windows binary logs using Windows API that needs to develop in C++. I already have working product that reads Event viewer logs, just need extend or fix the bug to read .ETL logs.
I will provide related links to you, once your...read more

Software for Post Processing of Logged Data - CSV File to Excel Graph (or Equivalent)

We have a data logger (Brainchild V18, user manual can be supplied) that records to a CSV file temperatures, pressures etc vs time on a piece of equipment we use daily. We then have a small bit of software that processes the CSV file and puts it into...read more

Bill of Materials Data Processing Software - Solidworks to Excel (or similar)

We have some existing software in Visual Studio for extracting and processing part numbers, descriptions etc from our Solidworks CAD system into a MS Excel based Bill of Materials. Then in MS Excel there is a Macro to print off drawings using this Bi...read more

Customize and Enhance the TarFolder Shell Namespace Extension for Desktop Windows

High Level Overview: A shell namespace extension in Windows displays a file, such as an archive, as a browsable folder in Windows File Explorers tree and list views. The extension is a sophisticated COM object and runs in-process inside Windows File...read more