# Compiling and Packaging Crystal GTK4 apps for Windows

**URL:** <https://forum.crystal-lang.org/t/compiling-and-packaging-crystal-gtk4-apps-for-windows/8110>\
**Category:** Community\
**Tags:** blog\
**Created:** [May 28, 2025, 12:45pm UTC](https://forum.crystal-lang.org/t/compiling-and-packaging-crystal-gtk4-apps-for-windows/8110 "2025-05-28T12:45:52Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![GeopJr](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/geopjr/32/1051_2.png) [@GeopJr](https://forum.crystal-lang.org/u/GeopJr)\
**Post date:** [May 28, 2025, 12:45pm UTC](https://forum.crystal-lang.org/t/compiling-and-packaging-crystal-gtk4-apps-for-windows/8110/1 "2025-05-28T12:45:52Z")

</div>

Hello everyone 👋 I haven’t been very active in Crystal land recently, but since I got a few e-mails about MSYS2 and GTK4 + Crystal on Windows, I wrote a small blog post about it!

> **[Packaging Crystal GTK 4 apps for Windows - GeopJr](https://geopjr.dev/blog/compiling-crystal-gtk4-apps-for-windows)**
>
> Crystal's Windows support has been steadily getting more and more usable and with that comes the comm...

While it goes through the process of packaging [Collision](https://collision.geopjr.dev/), it wasn’t successful functionality wise, so I won’t add it to [UGCG](https://ultimate-gtk4-crystal-guide.geopjr.dev/) yet. (Tbh the problem is probably fibers, I have to move to the new execution contexts and waitgroups from non-blocking-spawn when I get some free time)

[https://geopjr.dev/assets/images/blog/compiling-crystal-gtk4-apps-for-windows/collision\_2.mp4](https://geopjr.dev/assets/images/blog/compiling-crystal-gtk4-apps-for-windows/collision_2.mp4)

---

<div class="post-metadata">

**Author:** ![GeopJr](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/geopjr/32/1051_2.png) [@GeopJr](https://forum.crystal-lang.org/u/GeopJr)\
**Post date:** [May 31, 2025, 12:08pm UTC](https://forum.crystal-lang.org/t/compiling-and-packaging-crystal-gtk4-apps-for-windows/8110/2 "2025-05-31T12:08:16Z")

</div>

Switched to execution contexts and it passes the calculation phase (but crashes when using the verifying function, something to debug later). Execution contexts are so game changing, I can’t believe they just work with no thread-safety issues (as far as I can tell) 👀

Here, you can give it a try [https://nightly.link/GeopJr/Collision/actions/runs/15363347972/collision\_windows\_x86\_64.zip](https://nightly.link/GeopJr/Collision/actions/runs/15363347972/collision_windows_x86_64.zip)
