forge icon indicating copy to clipboard operation
forge copied to clipboard

Add InnoSetup make Target

Open liamwhan opened this issue 8 years ago • 8 comments

  • [x] I have read the contribution documentation for this project.
  • [x] I agree to follow the code of conduct that this project follows, as appropriate.
  • [x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

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.

liamwhan avatar May 14 '17 21:05 liamwhan

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.

malept avatar May 14 '17 22:05 malept

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 [email protected] 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

liamwhan avatar May 14 '17 22:05 liamwhan

@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
})

MarshallOfSound avatar May 14 '17 23:05 MarshallOfSound

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

malept avatar May 14 '17 23:05 malept

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?

liamwhan avatar May 15 '17 06:05 liamwhan

@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

MarshallOfSound avatar May 15 '17 07:05 MarshallOfSound

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

develar avatar Jun 02 '17 14:06 develar

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

malept avatar Jun 02 '17 16:06 malept

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

erikian avatar Nov 02 '22 13:11 erikian