frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Open in hackernews

Show HN: Inspect and extract files from MSI installers directly in your browser

https://pymsi.readthedocs.io/en/latest/msi_viewer.html
60•rmast•3h ago
Hey everyone!

I'm excited to share a small web app I built that allows you to view and extract the contents of Windows MSI installers directly in your browser. It's essentially a web-based "lessmsi" powered by Pyodide.

You can try it out at: https://pymsi.readthedocs.io/en/latest/msi_viewer.html

My motivation for building this was from part of my day job -- I often get Windows MSI installers and need to extract files while preserving the relative directory structure and filenames, as they would appear after a full installation. The existing tools I found were good but limited in which platforms they support: lessmsi works great on Windows, while msitools works for Linux/macOS. Neither is a truly cross-platform solution that works on any major OS.

So we developed pymsi (a pure Python library, available on GitHub at https://github.com/nightlark/pymsi) to handle reading and extracting MSI files from Python. Then I realized that since pymsi has no native dependencies, it could potentially run in a web browser using Pyodide. After a bit of "vibe coding" and fixing some "hallucinated" functions/classes that don't exist in pymsi, the result was this client-side web app.

If you need an MSI file to experiment with, older versions of PowerToys included the installer in .msi form, such as this one: https://github.com/microsoft/PowerToys/releases/download/v0....

Note that the underlying pymsi library hasn't been extensively tested against a bunch of MSI installers yet, so there might still be lingering bugs. If you come across any issues, please don't hesitate to report them in on the GitHub repository (https://github.com/nightlark/pymsi/issues).

I'd love to hear your feedback and answer any questions!

Comments

rmast•3h ago
As a side note, I just tried it in mobile Safari on my iPhone -- at least inspecting MSI files works, extracting files may work as well (not sure where it is placing the "downloaded" zip file).
jasonjmcghee•2h ago
My safari puts things in icloud drive / downloads
lxgr•1h ago
That's configurable in the Safari settings, fwiw (I personally prefer my downloads to not automatically become uploads, especially on mobile data).
pragma_x•3h ago
I feel like this would also solve the "I just need the printer driver file(s), not everything else" use-case. Nice work.
blangk•2h ago
Printer drivers rarely if ever come in MSI format. They most commonly use self extracting exe archive.
nebula8804•48m ago
Yeah, start the installer, quickly look at the temp directory for the files, nab em then quit the installer. This and many other janky techniques are what I use to survive in the jungles of the Windows platform.

I would also like to promote one of my most favorite tools ever: InstallWatch Pro by Epsilon Squared

It takes a complete HDD and Registry snapshot, you install something then it takes another snapshot and shows you the diff in a easy to read format.

wiseleo•14m ago
Thank you for InstallWatch Pro mention. That app tends to get reinvented every so often. I remember seeing something like it as early as 1996.
Lanrei•1h ago
Neat. I usually just use 7zip to open .exe and .msi files.
hypercube33•1h ago
I don't think 7zip really can see into a lot of janky MSI files to get the actual installed content, can it?...it can technically break open NSIS files and get the source but that is disabled in code after 15.05 (GitHub has a mod to renable source extraction fyi) and yes self extracting exe files.
danielodievich•1h ago
I was there at Microsoft in the beginning of MSI, which was what, Office XP? Gosh or was it 2003? The tooling for dealing with them was super jank then. I could have never predicted that you'd be able to just casually open it in a browser. Nice job man!
EvanAnderson•26m ago
I remember dealing with installing the Windows Installer redistributable on Windows 98. The Wikipedia[0] article cites Office 2000 shipped w/ Windows Installer 1.0.

I like the idea behind Windows Installer, and while I could concede that it wouldn't have gained any acceptance w/o the inclusion of Custom Actions, I wish it hadn't. Most of the pain in my life dealing with MSIs, as a sysadmin, has come from Custom Actions that don't play well w/ unattended installs or uninstalls.

[0] https://en.wikipedia.org/wiki/Windows_Installer

simonw•27m ago
This is really cool! Suggestion: find a small MSI file that you can host as part of the demo and add a "load example file" button - that way people can try it out even if they don't have an MSI file to hand already.

AbsenceBench: Language models can't tell what's missing

https://arxiv.org/abs/2506.11440
56•JnBrymn•1h ago•12 comments

Phoenix.new – Remote AI Runtime for Phoenix

https://fly.io/blog/phoenix-new-the-remote-ai-runtime/
348•wut42•8h ago•158 comments

Wiki Radio: The thrilling sound of random Wikipedia

https://www.monkeon.co.uk/wikiradio/
36•if-curious•2h ago•9 comments

Harper – an open-source alternative to Grammarly

https://writewithharper.com
61•ReadCarlBarks•3h ago•20 comments

Drinks in glass bottles contain more microplastics than those in other container

https://www.anses.fr/en/content/drinks-glass-bottles-contain-more-microplastics-those-other-containers
9•Zealotux•46m ago•1 comments

Show HN: Inspect and extract files from MSI installers directly in your browser

https://pymsi.readthedocs.io/en/latest/msi_viewer.html
60•rmast•3h ago•12 comments

Visualizing environmental costs of war in Hayao Miyazaki's Nausicaä

https://jgeekstudies.org/2025/06/20/wilted-lands-and-wounded-worlds-visualizing-environmental-costs-of-war-in-hayao-miyazakis-nausicaa-of-the-valley-of-the-wind/
158•zdw•8h ago•50 comments

Show HN: Nxtscape – an open-source agentic browser

https://github.com/nxtscape/nxtscape
180•felarof•7h ago•140 comments

Proba-3's first artificial solar eclipse

https://www.esa.int/Enabling_Support/Space_Engineering_Technology/Proba-3/Proba-3_s_first_artificial_solar_eclipse
8•sohkamyung•2d ago•1 comments

Verified dynamic programming with Σ-types in Lean

https://tannerduve.github.io/blog/memoization-sigma/
42•rck•3d ago•10 comments

Tuxracer.js play Tux Racer in the browser

https://github.com/ebbejan/tux-racer-js
73•retro_guy•6h ago•28 comments

Smartphones: Parts of Our Minds? Or Parasites?

https://www.tandfonline.com/doi/full/10.1080/00048402.2025.2504070
31•cratermoon•4h ago•6 comments

Cracovians: The Twisted Twins of Matrices

https://marcinciura.wordpress.com/2025/06/20/cracovians-the-twisted-twins-of-matrices/
49•mci•7h ago•24 comments

Dancing Naked on the Head of a Pin: The Early History of Microphotography

https://publicdomainreview.org/essay/dancing-naked-on-the-head-of-a-pin
38•crescit_eundo•2d ago•1 comments

College baseball, venture capital, and the long maybe

https://bcantrill.dtrace.org/2025/06/15/college-baseball-venture-capital-and-the-long-maybe/
114•bcantrill•4d ago•77 comments

YouTube's new anti-adblock measures

https://iter.ca/post/yt-adblock/
79•smitop•6h ago•146 comments

The JAWS shark is public domain

https://ironicsans.ghost.io/how-the-jaws-shark-became-public-domain/
110•MBCook•4h ago•19 comments

Oklo, the Earth's Two-billion-year-old only Known Natural Nuclear Reactor (2018)

https://www.iaea.org/newscenter/news/meet-oklo-the-earths-two-billion-year-old-only-known-natural-nuclear-reactor
156•keepamovin•13h ago•71 comments

Alpha Centauri

https://www.filfre.net/2025/06/alpha-centauri/
56•doppp•6h ago•18 comments

AMD's Freshly-Baked MI350: An Interview with the Chief Architect

https://chipsandcheese.com/p/amds-freshly-baked-mi350-an-interview
12•pella•2h ago•2 comments

A brief, incomplete, and mostly wrong history of robotics

https://generalrobots.substack.com/p/a-brief-incomplete-and-mostly-wrong
93•Bogdanp•4d ago•47 comments

Jürgen Schmidhuber:the Father of Generative AI Without Turing Award

http://www.jazzyear.com/article_info.html?id=1352
60•kleiba•4h ago•31 comments

A Python-first data lakehouse

https://www.bauplanlabs.com/blog/everything-as-python
95•akshayka•3d ago•26 comments

BYD begins testing solid-state EV batteries in the Seal

https://electrek.co/2025/06/20/byd-tests-solid-state-batteries-seal-ev-with-1000-miles-range/
64•toomuchtodo•3h ago•63 comments

An analysis of recent multithreading improvements for a smoother game

https://dev.arma3.com/post/oprep-performance-optimizations-in-220
43•diggan•3d ago•4 comments

Ancient termite poo reveals 120M-year-old secrets of Australia's forests

https://phys.org/news/2025-06-ancient-termite-poo-reveals-million.html
12•janandonly•2d ago•2 comments

Show HN: SnapQL – Desktop app to query Postgres with AI

https://github.com/NickTikhonov/snap-ql
84•nicktikhonov•12h ago•47 comments

Klong: A Simple Array Language

https://t3x.org/klong/
101•tosh•11h ago•56 comments

Minimal auto-differentiation engine in Rust

https://github.com/e3ntity/nanograd
53•lschneider•9h ago•6 comments

Rolling the ladder up behind us

https://xeiaso.net/blog/2025/rolling-ladder-behind-us/
133•techknowlogick•7h ago•126 comments