gui icon indicating copy to clipboard operation
gui copied to clipboard

Installers for all platforms

Open holandes22 opened this issue 8 years ago • 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

holandes22 avatar Jun 13 '16 17:06 holandes22

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.

holandes22 avatar Aug 07 '16 18:08 holandes22

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/felixrieseberg/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 https://github.com/felixrieseberg/ember-electron/issues/62 and this PR https://github.com/felixrieseberg/ember-electron/pull/129 I think this will pave the way for an installer. Regardless, we would still need to deal with:

  • auto-updater (requires an update server https://github.com/electron-userland/electron-builder#auto-update)
  • Signing code
    • Windows: Need to purchase a code signing cert
    • Mac: Distributing outside of Mac store apparently requires an Apple developer ID to be able to sign the code

holandes22 avatar Feb 27 '17 16:02 holandes22

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

holandes22 avatar Apr 16 '17 13:04 holandes22

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!

antony-jr avatar Nov 24 '17 17:11 antony-jr

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 avatar Dec 10 '17 14:12 antony-jr

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

holandes22 avatar Dec 11 '17 07:12 holandes22

@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

antony-jr avatar Dec 11 '17 08:12 antony-jr