←back to thread

135 points rmast | 2 comments | | HN request time: 1.61s | 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
Lanrei ◴[] No.44332611[source]
Neat. I usually just use 7zip to open .exe and .msi files.
replies(2): >>44332717 #>>44333591 #
1. atmanactive ◴[] No.44333591[source]
Let's not forget Universal Extractor: https://github.com/Bioruebe/UniExtract2
replies(1): >>44340105 #
2. WarOnPrivacy ◴[] No.44340105[source]
I had forgotten. For years and years it was part of my install everywhere kit. This is a good reacquaintance.