electron-userland / electron-windows-store

:package: Turn Electron Apps into Windows AppX Packages
MIT License
678 stars 86 forks source link

Create new option instead of hardcoding 'pre-appx' #97

Open MikeKovarik opened 6 years ago

MikeKovarik commented 6 years ago

Hello, I'm currently using only few parts of the whole chain to rebuild and sign my app after doing incremental changes rather than having it rebuilt from ground up every time. The source folder in makeappx.js (and in few other places) is currently hardcoded pre-app which forces me to restructure the app's repo around this.

It would be nice if a new options field could be dedicated to that and replace this

let source = path.join(program.outputDirectory, 'pre-appx')

with something like

let source = program.sourceDirectory

and this somewhere in setup

program.sourceDirectory = path.join(program.outputDirectory, 'pre-appx')

Also similarly to this being able to set destination path of the .appx would be awesome.

felixrieseberg commented 6 years ago

Sounds good! Would you want to make a PR?

MikeKovarik commented 6 years ago

Yes. Though i ended up deep inside the rabbit hole while working on my incremental bundler and I'd like to bring that over to this module as well if you'd be open to it. However that would require a bit more discussion, preferably over instant messenger.

This is what I got so far. Needless to say that the code is ugly :D since i had to customize makeappx() and create the program object from scratch and it was 2am but i wanted to get it to work :D The code reads publisher and package name from manifest, bumps version number, creates appx and signs it (and creates the certificates if they don't exist yet). https://github.com/MikeKovarik/anchora-app/blob/master/windows-store-bundler.js

I'm also thinking of how package.json could be supported. I think version number could be bumped in package.json and then patched into the AppxManifest.xml so they both match. Or maybe even generating the AppxManifest.xml from scratch based on package.json and /Assets.

The idea is that app's repo could contain pretty much just the app's source + /Assets and contributors would be able to just clone it and build it with something like gulp transpile and then gulp appx.