Well, our grand test has succeeded. And this is no small feat. We've successfully ported our
shell namespace extension from Delphi (which STILL doesn't support ARM64 after a decade!) to Lazarus. And, it works flawlessly - in some respects, better than the Delphi extension itself! You can see it for yourself in action here:
www.installaware.com/arm64/diskzip.exeDon't be misled by the arm64 moniker, the install properly installs 32 bit components on a 32 bit OS, 64 bit components on a 64 bit OS, and ARM64 components on a 64 bit ARM OS (
Snapdragon native PCs, or
Parallels Windows VMs on apple silicon). The only reason this isn't live on the main site yet is because we're still porting other code from Delphi to Lazarus, but getting back to the point: the
shell namespace extension is the hardest one, by and far. And we were able to get it done in under a week! Which says a LOT.
Why is a
shell namespace extension so hard, what does it do, and why are we so confident that this validates the Lazarus ARM64 efforts at large?
It's basically a COM object that integrates with File Explorer, using (still) mostly undocumented interfaces (which was part of a lawsuit against Microsoft); in our case, it helps you browse inside archives inside File Explorer just like they are ordinary folders (when they obviously aren't). This is called a
non-rooted shell namespace extension (whereas, having a fixed "root" off the
Desktop, say for something like a cloud drive, makes it a somewhat simpler
rooted extension).
Again, this is the most complex and challenging type of programming undertaking that may actually exist on Windows.
You make the slightest mistake, Explorer freezes - or crashes. Your compiler makes the slightest mistake - Explorer freezes, or crashes. The way we've done it, we're showing our own Lazarus form INSIDE File Explorer - so when you browse inside an archive, File Explorer handles the
Tree view - and we internally handle and render the
List view. Getting this working properly - to say nothing of in a highly performant manner - is truly nothing short of a monumental undertaking. 7-Zip's own author
Igor Pavlov - the outright genius who invented 7-Zip - gave up on this decades ago, because he had better ways to spend his time.
Gals and guys, Lazarus handled this beautifully. Again, see for yourself - just double-click any archive, and watch it load inside File Explorer as any ordinary folder (of course, please try this only on an ARM64 Windows instance, or you won't be seeing the Lazarus compiled code in action; but legacy Delphi code instead, which we haven't recompiled for downlevel platforms [as of this writing, the shell namespace extension code we did port to Lazarus has been evolving for the past
twenty four {24} years]).
It is worth mentioning that while Windows now does show archives other than ZIP as folders, its own implementation is still extremely slow (try browsing inside archives with [tens of] thousands of files in them and see how long it takes), and can't handle things like copy/paste (copy any number of files from the source archive and extract them transparently using the
Paste command on a real file system folder, for example). Copy/paste is actually a great example because guess what, all that copy/paste stuff (
especially when the data to paste doesn't even exist yet - it is compressed inside your archive!) relies on even more complex and extremely difficult Windows interfaces which, you guessed it - Lazarus runs flawlessly on ARM64 Windows!!!
We also ported far simpler shell extensions you can check out, of course. Hover your mouse over an archive - you get a tooltip showing what's actually inside. Explore the new
Archives tab inside the File Properties window to get a static listing of all the files inside that archive (and view/extract/update items using the relevant buttons). All of it - coming from Lazarus.
A really fun one is - add an archive extension (ex: .7zip) to an existing folder. Instead of Windows renaming that folder, our Lazarus shell extension kicks in - and you get an archive of the specified type, instantly built; out of the intact contents of that folder.
And of course, the usual right-click context menu extensions (including Windows 11 top-level menu extensions, but
InstallAware's
Context Menu Bridge ports them over to the top-level, we can't take credit for that - although we did natively implement the right-click menus too in Lazarus ARM64 [these are really the least interesting, as ARM64 Windows does successfully emulate x86 and x64 context menu extensions for the most part {I say mostly, because its emulation in that regard has been very buggy and fickle, still unfixed over the years}]).
But none of these other shell extensions - for which, except where noted (just the context menus), you still DO need a pure ARM64 compiler like we now have thanks to the efforts of you amazing folks - are nearly a hundredth as complex as that crown jewel, the
shell namespace extension. So as far as we can tell - Lazarus has totally
N A I L E D I T here!!!
C O N G R A T U L A T I O N S ! ! !