exercism/gui

Installers for all platforms

holandes22 opened this issue · 7 comments

At first, we can simple distribute the packages in zip or tar.gz format. But would be nice
to have at a later stage installers that have specific platform behavior.

Installer should

  • Add shortcut link
    • In windows to the menu
    • On Linux add a launcher (check this work for all the desktop envs)
    • On Mac not sure what is best practice - investigate
  • Distribution
    • Use deb, RPM and snap packages for Linux
      • Optionally we can have repositories for some of the main distros (Debian/Ubuntu/Fedora/Arch - this will require package maintainers)
    • For Windows provide an msi installer
    • For Mac investigate what is the best way to distribute installers
  • auto-update support
    • For Mac an Windows. This requires having a Squirrel service to broadcast new updates
    • For Linux these should be handled via distro package manager

electron libs that can help with this

The best choice seems to be https://github.com/electron-userland/electron-builder

These also look good
- https://github.com/Aluxian/electron-superkit
- windows installer https://github.com/electron/grunt-electron-installer
- for macosx https://github.com/LinusU/node-appdmg or https://github.com/electron/grunt-electron-installer

Status update: I haven't got much time to work on this and my bandwidth during August is null. Will retake this at the beginning of September, if anyone else tackles it first.

Status update: The most viable project to help build packages for distribution seems to be electron-builder. It supports all the features we want, is actively developed and well documented.

I've been researching and playing with electron-builder and it turns out that is quite a task to take on.

  • Making it work with ember-electron requires work. see this (ticket)[https://github.com/adopted-ember-addons/ember-electron/issues/62]
  • Wasn't able to make it work directly (without using ember-electron for the packaging stage)

As a side note, making Linux packages is much doable in short time as we can use an universal package such as Snap or Flatpak based on the current package (tar.gz). But that would mean the platforms won't have feature parity regarding installer (which I don't like)

Luckily, the team at ember-electron seems to be maknig progress towards a better
packaging solution, see comments at adopted-ember-addons/ember-electron#62 and this PR adopted-ember-addons/ember-electron#129 I think this will pave the way for an installer. Regardless, we would still need to deal with:

This should be made possible by upgrading to ember-electron v2.x which adds a make command (powered by electron-forge) which can create installer for all the supported platforms. See https://github.com/electron-userland/electron-forge#possible-make-targets

Therefore this is now blocked by #49

What about QtInstallerFramework , I can work on this if you like ?
QtInstallerFramework provides a gui installer for all platforms (This also includes linux) , update tools are also included in QtInstallerFramework ( It does include automatic updates! )

QtInstallerFramework also has QScripting which you can pretty much do anything from creating link on desktop(Cross-Platform)!

QtInstallerFramework Provides:
.run - for all linux distros
.exe - for all windows versions and
.dmg - for mac osx ( executable )

And Qt is a stable project

I really recommend Qt Installer Framework because you only have to manage one installer for all linux distros , just like windows and mac osx

Can avoid the pain for new users in linux!

Hey @holandes22 I've Created a Complete Cross-Platform installer with auto update feature , check this out https://github.com/antony-jr/exercism-installer , Currently only deployed for all linux distros.
THIS IS JUST A PROTOTYPE , NOT PRODUCTION READY BUT CLOSE TO IT

TRY THE LINUX INSTALLER , ITS COOL!

GNU/Linux X11 Microsoft Windows Apple MacOSX
Download for Linux-x64 Will do this later if anyone needs it! Open a Issue if you know Qt Installer Framework

Installer Installer_Finished

Go to the repo for more information on how easy it is to deploy new releases!
I working on a complete deployer(Will be writen in C++ ) but currently able to only create a prototype!

@antony-jr wow this looks cool! So the idea is to have it working in all platforms right?
What about upgrades?

@holandes22 go to repo for more info! https://github.com/antony-jr/exercism-installer , you can know more about promoting updates ( its simple as a git push )

Yes this is for all platforms , although I don't own a mac so I can't build it for mac osx

Auto-Update Automatically prompts when the repo dir under exersim-installers in the github repository is updated

When a new release is realesed , I simply increase the version number in the config.xml and git push to prompt all users who have installed exercism ( All over the world )

Update