Find more Web Development Remote Jobs posted recently Worldwide

Required Microsoft Visual C++,Win32 App Development freelancer for Customize and Enhance the TarFolder Shell Namespace Extension for Desktop Windows job

Posted at - Jun 3, 2021

Toogit Instant Connect Enabled


High Level Overview: A shell namespace extension in Windows displays a file, such as an archive, as a browsable folder in Windows File Explorer's 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 don't 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 don't 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 recuiterMember 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.36
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


Apply on more work from home jobs posted in Web Development category.