I'm trying to release a simple app generated from ...
# compose-desktop
c
I'm trying to release a simple app generated from kmp.jetbrains.com (no additoinal dependencies or anything). I want to share the app internally for mac users and windows users. Updatability and stuff isn't important to me, so I'm not using conveyor. I'm able to build for mac via
./gradlew packageDmg
and I get a dmg under build/binaries/main/dmg/`org.example.project.dmg` However for windows, when I try to generate an exe (or msi) it seems to create build/binaries/main/app/`org.example.project.app` is
.app
the right extension for a exe and msi release?
The reason I'm confused is (since im on a mac) is that when I was in intellij. I was trying to find the .exe/.msi in build/binaries/main/app and i didn't see it. but in intellij
<http://org.example.project.app|org.example.project.app>
gives you a dropdown of
Contents
... and in
Contents
... there's a MacOS folder!
m
You can find the release artefacts here: Mac:
Copy code
composeApp/build/compose/binaries/main-release/dmg/
Windows:
Copy code
composeApp/build/compose/binaries/main-release/msi/
Linux:
Copy code
composeApp/build/compose/binaries/main-release/deb
c
CleanShot 2025-03-20 at 12.05.46@2x.png
hm. I just tried again. Download "desktop" project from kmp.jetbrains.com Open in intellij. Run
./gradlew packageMsi
from cmd line Check builds the project tree. No mention of "main-release" or "msi"
m
You should run
Copy code
./gradlew packageReleaseMsi
c
Hm. When I tried to do packageReleaseDmg it failed (something about proguard). since I didn't want proguard I left out "release" when trying to build msi. Let me try that though.
m
And you can’t build an MSI on a Mac!
c
Really?!
👌 1
what about an exe? lol
m
No
Due to the limitations of jpackage you cannot cross build. I do it via GitHub actions with different runners.
c
hm. another win for Conveyor I guess
@mikehearn im not going crazy that conveyor can make msi from mac... right?
m
Conveyor says it can cross-generate these artefacts.
c
weird that cmd line doesn't just fail. and just tells you it was successful.
m
Conveyor generates MSIX not MSI (confusingly named but different formats). Conveyor is capable of cross-building exactly for this use case where you can release to everyone from your laptop.
today i learned 1
The built in Compose tasks (and same story for Electron) are really a set of wrappers around the OS vendor-supplied tools for packaging. They prepare the command lines for you and do some other things, but they aren't generating the files themselves.
❤️ 1
Conveyor works very differently, because it does everything itself with no reliance on vendor tooling. We reimplemented and reverse engineered the relevant formats and protocols to make that work.
❤️ 3