How to check if electron app is running a portable build? - electron

I build an electron app that will be distributed as both portable and installable version.
I added electron-updater to get the installed version automatically updated. I see that portable version is downloading the update as well, even though it cannot update.
I am looking for a function isPortable() in electron to switch off autoupdater in portable app. For now i found out that I can check process.env.PORTABLE_EXECUTABLE_DIR for directory but I wonder if there is more straightforward option.

Related

is it possible to make a combined installer for an electron app and a python?

I have an electron application.
my app is using python for her living.
by using electron-packager and then electron-installer-windows
by the tutorial in https://github.com/electron-userland/electron-installer-windows
i made .exe(portable version) and .msi(installation version) files out of it.
the thing is, i want to give my clients 1 file (either msi or exe) that will let them use the application. (will install python and then automatically install my electron msi).
any suggestions?

Cordova Plugin Add/Remove for windows on a Mac

I am developing an app in Cordova that runs on iOS, Android, Windows and OSX. Everything is fine until you have to add or remove plugins. I develop the iOS, Android and OS X on a mac, and the Windows UWP on a windows machine.
When you try to add or remove a plugin you are stuck because on the mac I get the following error: "The platform "windows" does not appear to be a valid cordova platform." and fails.
When you try to add or remove a plugin on windows I get the following error: "The platform "android (or ios or osx)" does not appear to be a valid cordova platform." and fails.
Currently I remove windows from the platforms on the Windows computer, check the project in to github, check it out on my mac and and edit plugins for android/ios/osx then check it back in. After that I pull on my Windows and re-add the platform. The problem with this is cordova does not remember any images, app store associations, nuget packets etc making it a painstaking process that leads to many bugs.
Is there a way to ONLY add/remove a plugin on windows on the windows computer, and only for ios/android/osx on the mac and somehow make it all go together?
I would suspect this is happening because the platforms are not being successfully installed / removed. If you look in the platforms/ folder, check to see that the platforms that are acting up actually have valid folder structure and contents. If this is the case you need to manually remove the platforms.
Instead of removing the windows platform and committing to git, you should consider using the --nosave option: cordova platform remove windows --nosave. This way the changes are not saved to your package.json or configuration.xml. This would allow you to make changes on OSX without having to constantly check in the removed windows platform.
Something that may help is using the cordova repository management tool that I have created: https://www.npmjs.com/package/cordova-clean. This will help making sure all of the changes being made to the configuration are reflected in your current working directory across your machines / branches.

Instructions for how to lay out the Mac OS X and Linux versions of Electron apps?

I've just spent a very long time looking through everything on https://electron.atom.io/docs/ but I cannot find any mention of how to put the files for Mac and Linux. Only Windows, which I already have set up.
I remember that NW.js had such instructions, which I followed in the past, but it's obviously too ridiculous to accept that I should have to look at a competitor's manual to figure out how to distribute Electron apps.
I remember that at both Linux and Mac had some very fancy/weird packaging need, very unlike Windows.
I would recommend looking into electron-builder which would help you with generating packages for all of the mentioned systems (with auto-update and other goodies).
You can also take a look at electron-boilerplate to see how it can be nicely implemented (this boilerplate has a release command that allows you to generate packages).
For the mac version you can use electron packager to generate a .app file then you can use appdmg to generate a .dmg
For the linux version you can use electron packager to generate a executable although it comes with lots of other files.
I've tried electron-installer-debian but I couldn't install the output .deb

Using ES6 on Electron app with io.js

I am writing cross-platform application with electron.
I want to be enable ES6 arrow-function feature in main process using like iojs --harmony_arrow_functions.
Electron already installed successfully on io.js 3.1.0 .
How I can do it with io.js?
If you go to the electron releases, in major/minor release notes you can see which version of nodejs it is using:
https://github.com/atom/electron/releases/tag/v0.36.0
Upgrade to Node 5.1.1.
I'm not totally sure which version of node arrow functions first became available but I can confirm that they are available in the latest version, 5.2.0.
Relatedly, to easily switch between versions of node I highly recommend using nvm:
https://github.com/creationix/nvm
That way you can easily switch to match updated versions of electron and you can automate it quite easily as well.
Electron was switched to nodejs, currently 5.1 see here - https://github.com/atom/electron/releases/tag/v0.36.0

Including External Packages in App for Jailbroken iOS Devices

I am building an app that I eventually would like to release on Cydia, however I'm having trouble finding any good documentation on developing apps for jailbroken devices. So firstly, if you have any good links for developing for jailbroken iOS devices that would also be much appreciated!
My current problem is that for my app to work I would require tools from other packages on Cydia like otool and possibly some script interpreter (haven't decided which one yet). Is there a way that I can have these dependencies install alongside my current app in Cydia? I feel like I've seen it before downloading other apps.
Yes, absolutely.
When you build your app, you should make sure to bundle it as a Debian package. Some repositories will let you just give them a normal .app bundle, which they will then use to build a .deb file. But, if you want this, I'd recommend learning to build a .deb bundle yourself. More instructions from Saurik here.
Inside the .deb bundle, you will have a DEBIAN subdirectory, with a file inside named control:
DEBIAN/control
DEBIAN/postinst
DEBIAN/postrm
DEBIAN/preinst
The control file is where the Cydia store app description, the app version number (used by the store), and a bunch of other information goes. An optional field in the control file lets you specify that your app has dependencies. If you list another package as a dependency, that package will automatically get installed when Cydia installs your app. Something like this:
Depends: bigbosshackertools
This line is to specify a dependency on the BigBoss Recommended Tools package (which is a very large set of packages, so be aware that you're adding a large install set to your own app).
Or, you could try
Depends: odcctools
to use Saurik's Darwin CC Tools package.
I have been building jailbreak apps for a while, so I do it with homemade scripts, but there's now a tool for helping with this called iOSOpenDev. You could use that to build your package, and edit your control file, if you aren't already familiar with .deb packages, and don't want to bother (although I'd recommend learning).

Resources