←back to thread

135 points rmast | 2 comments | | HN request time: 0.42s | source

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!

Show context
rmast ◴[] No.44331815[source]
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).
replies(1): >>44332178 #
1. jasonjmcghee ◴[] No.44332178[source]
My safari puts things in icloud drive / downloads
replies(1): >>44332644 #
2. lxgr ◴[] No.44332644[source]
That's configurable in the Safari settings, fwiw (I personally prefer my downloads to not automatically become uploads, especially on mobile data).