electron / forge

:electron: A complete tool for building and publishing Electron applications
https://electronforge.io
MIT License
6.42k stars 507 forks source link

Add InnoSetup make Target #226

Open liamwhan opened 7 years ago

liamwhan commented 7 years ago

Please describe your issue: I'd like to see some alternative make targets on Windows, Squirrel's windows installer does not offer the user feedback or customizable install I am looking to offer so at the moment I am using forge to package and InnoSetup to create installer see this repo for the setup. The end product installer is a more user-friendly and familiar experience than Squirrel currently offers. It's also got some easy to integrate toolchain stuff like a CLI and some node wrappers

If this is something that you think would benefit electron-forge, I'd be happy to work on it but would be good to get some pointers on where in the codebase to start.

If you don't think InnoSetup is suitable for electron-forge please feel free to close this issue.

malept commented 7 years ago

We're more than happy to have contributions for creating InnoSetup-based distributables. I would prefer if it was a separate module like electron-installer-debian or electron-windows-store, and then we can integrate with it.

liamwhan commented 7 years ago

Ok I'll look into that approach, is there any particular structure (API exposures etc) that would make the project more easily integrated with forge? On Mon, 15 May 2017 at 8:43 am, Mark Lee notifications@github.com wrote:

We're more than happy to have contributions for creating InnoSetup-based distributables. I would prefer if it was a separate module like electron-installer-debian or electron-windows-store, and then we can integrate with it.

β€” You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/electron-userland/electron-forge/issues/226#issuecomment-301345050, or mute the thread https://github.com/notifications/unsubscribe-auth/AFhYrdDbPuZJLymfA_9GpTqRDN9gGf2uks5r54OZgaJpZM4NahCR .

-- Regards,

Liam Whan

MarshallOfSound commented 7 years ago

@hammus I would recommend following a similar API to the other electron-installer-* modules, their basic API looks like this.

const installerModule = require('electron-installer-*');

const optionsObject = {
  src: 'path/to/packaged/app',
  dest: 'path/to/output',
  // Other options
}

installerModule(optionsObject, (err) => {
  // err != null something went wrong
})
malept commented 7 years ago

I imagine we'd prefer a Promise-compatible API over callback-based though πŸ˜ƒ (feel free to support both)

liamwhan commented 7 years ago

After some poking around I suspect this might not work for electron-forge, the dependency debt this creates is probably unmanageable, InnoSetup requires Wine no matter which way you slice it. Thoughts?

MarshallOfSound commented 7 years ago

@hammus Windows only makers are perfectly ok πŸ‘ When integrating with forge we will simply set the isSupportedOnCurrentPlatform function correctly πŸ‘

AppX makers are already windows only

develar commented 7 years ago

If you want custom installer for windows, you can use NSIS from electron-builder β€” https://www.npmjs.com/package/electron-forge-maker-nsis

malept commented 7 years ago

If a developer is more familiar with configuring an InnoSetup installer, they may appreciate the option to make one for an Electron app.

erikian commented 1 year ago

@erickzhao I can tackle this one if it's still relevant.