conda / constructor

tool for creating installers from conda packages
https://conda.github.io/constructor/
Other
463 stars 167 forks source link

Alternatives to NSIS #646

Open jaimergp opened 1 year ago

jaimergp commented 1 year ago

I think it's safe to say NSIS is not the most development friendly engine ever, specially coming over from the Python world. While incredibly performant, powerful, customizable and extensible, it comes with a few gotchas:

Ideally, I would love to see if we can find a replacement with the following features:

This website (plus this one) has TONS of info about the whole landscape. I'll summarize the main findings here, focusing on free products:

I think both WiX and InnoSetup might be capable replacements, but none feels like The One ✨ either. Both have good CLI options. WiX uses MSI under the hood, which might be better for corporate users. InnoSetup seems closer to NSIS in spirit, with Pascal Scripting.

So, to sum up, no obvious answer.

jaimergp commented 1 year ago

On the CLI-only side, I can see some tools (scoop) are using combinations like:

RahulARanger commented 1 year ago

Hi @jaimergp, I have a bit of experience with Inno setup.

It would be possible to cover the cases with the Inno setup, it is due to the fact that we can write the scripts with pascal, or if required we can take control of the required things using PowerShell.

I have worked on a Project It was packaged using Innosetup.

If possible, can I try to contribute to this?

jaimergp commented 1 year ago

Hi @RahulARanger, that's very exciting!

I'd say we approach this with some caution though, because it would add some maintenance burden to a team that's already stretched a bit too thin. I'd like to know what @conda/constructor thinks about it.

Ideally, if you ask me, I would envision something like constructor offering some kind of plugin mechanism so users can use other "installer backends", and then you could maintain your own plugin facilitating that. Given enough time and if it gets a lot of traction, such a plugin could be "absorbed" in constructor itself. But of course, that plugin system does not exist right now so I might be dreaming a bit too much :D

RahulARanger commented 1 year ago

True, it is hard to build a plugin system and even expect the same in the other platforms.

jaimergp commented 1 year ago

An intermediate step for our own sanity is to rebuild the NSI templates with some Jinja, like pynsist is doing. Quite cleaner!

github-actions[bot] commented 5 months ago

Hi there, thank you for your contribution!

This issue has been automatically marked as stale because it has not had recent activity. It will be closed automatically if no further activity occurs.

If you would like this issue to remain open please:

  1. Verify that you can still reproduce the issue at hand
  2. Comment that the issue is still reproducible and include:
    • What OS and version you reproduced the issue on
    • What steps you followed to reproduce the issue

NOTE: If this issue was closed prematurely, please leave a comment.

Thanks!

jaimergp commented 5 months ago

Not stale