App Contents Macos Folder

CFBundleExecutable - Name of the executable file assumed to be in Contents/MacOS/ sub-folder. There are lots more options, the ones listed above are only the bare minimum. Here's some Apple documentation on the Info.plist file and App bundle structure. Also, Here's a sample Info.plist.

16 January 2020

In this article I'll try to provide a step-by-step guide describing publishing of MacOS Electron.JS application to Mac App Store highlighting all tricky moments.

First of all, everything said here is relevant to the early 2020.

The most important thing: only applications based on Electron 5.0.13 and 6.1.7 can be published due to Apple policy. Probably something will be changed soon.

Important definitions

Sandboxing - isolation of your application in special environment with restricted access almost to everything. See original apple video explaining this.

Entitlements - request for permissions for your sandboxed application. Full security entitlements list can be found here.

Provisioning profile - it's something that connect your developer account (certificate), bundle and devices that can install your application.

Publication

Let's imagine that you already have Electron application and you are using Electron builder to build your application.

All listed code can be found at our Electron Nuxt repository.

  1. Go to Certificates, Identifiers & Profiles section at developers.apple.com. At Identifiers section Add new App ID for macOS platform.

    Next go to Profiles and create new Provisioning profile for Mac App Store distribution.

    Download created profile and place to build folder inside your application source folder. Name it as embedded.provisionprofile

  2. Go to App Store Connect and select My Apps. Add New macOS App.

    Select registered on the previous step Bundle ID.

    Provide all required information.

  3. Inside build folder create entitlements.mas.plist with at least the following entitlements:

    To find your DEVELOPERID go to Membership tab ad developers.apple.com. You can find it under Team Name as Team ID. full.package.name is your registered App Identifier.

    At the “build” folder create entitlements.mas.inherit.plist with

    And entitlements.mas.loginhelper.plist with

  4. Go to package.json file and add to the build section.

  5. At this point Electron-builder configuration is finished and you can run electron-builder command to package your app. In case you have multiple developers certificates you need to provide appropriate certificate name as

  6. After build process resulting file can be found at dist/mas/*.pkg and should be uploaded to Mac App Store via Transporter application.

    Unfortunately, in some cases this is not enough and application is getting rejected as not all binaries are signed during packaging by Electron builder. To fix this after step 4 you should:

    By far one of the coolest apps I’ve come across in VR yet! I love that you can work on your computer literally from anywhere with multiple screens in VR, and even work with other people remotely. Super exited to see how Immersed continues to build this out over the coming years - I’ll definitely be following along (and invest if they let me. Citrix Workspace App Earlier Versions of Workspace app for Mac Subscribe to RSS notifications of new downloads. Workspace app for Mac. Citrix Workspace app 2009 for Mac. Citrix Workspace app 2008 for Mac. Citrix Workspace app 2007 for Mac. Workspace is an amazing app. Each time I work on a new project, I set a new Workspace and it boosts my productivity. I don't need to spend time on my folder to open the documents I need, no time to look at my Bookmarks in the web browser. With Workspace, I can open whatever I want, whenever I want in a second. All I need is gathered in one app! Download citrix workspace app mac. Amazon WorkSpaces plays nice with everyone. Access your personal Windows environment on Android, iOS, Fire, Mac, PC, Chromebook, and Linux devices. WATCH THE VIDEO. Citrix Workspace app for Mac uses platform (OS X) crypto for connections between Citrix. Citrix Workspace app for Mac.

  1. Create build/resignAndPackage.sh script

    In build/resignAndPackage.sh change APPLICATION NAME to your application name (should be as productName in package.json). Replace CERTIFICATE NAME (***********) to your certificate name in two places.

  2. Binaries that are listed in build/resignAndPackage.sh valid for Electron 5.0.13. You need to updated them for another Electron version or in case additional binaries will be used. To find binaries run (source)

    Binaries from node_modules can be unpacked by listing them in asarUnpack key in package.json

  3. Run

    and upload dist/mas/$APP-mac_store.pkg to Mac App Store via Transporter application.

    That's all. Probably you'll have 'an amusing trip' with Apple team explaining them why you've built your application, why you need permissions listed at entitlement files, but it's another story :-)

    Building something amazing with Electron? Contact us at webspaceteam.com - we always ready to help you with your project.

Other posts

Table Of Contents

  • Creating packages for OS X
    • Using PyInstaller and Homebrew
      • Additional Libraries
    • Using the Kivy SDK
      • To include other frameworks

Note

This guide describes multiple ways for packaging Kivy applications.Packaging with PyInstaller is recommended for general use.

Using PyInstaller and Homebrew¶

Note

Package your app on the oldest OS X version you want to support.

Complete guide¶

  1. Install Homebrew

  2. Install Python:

    Note

    To use Python 3, brewinstallpython3 and replace pip withpip3 in the guide below.

  3. (Re)install your dependencies with --build-bottle to make sure they canbe used on other machines:

    Note

    If your project depends on GStreamer or other additional libraries(re)install them with --build-bottle as describedbelow.

  4. Install Cython and Kivy:

  5. Install PyInstaller:

  6. Package your app using the path to your main.py:

    Note

    This will not yet copy additional image or sound files. You would need toadapt the created .spec file for that.

Editing the spec file¶

The specs file is named touchtracer.spec and is located in the directorywhere you ran the pyinstaller command.

You need to change the COLLECT() call to add the data of touchtracer(touchtracer.kv, particle.png, …). Change the line to add a Tree()object. This Tree will search and add every file found in the touchtracerdirectory to your final package. Your COLLECT section should look somethinglike this:

This will add the required hooks so that PyInstaller gets the required Kivyfiles. We are done. Your spec is ready to be executed.

Build the spec and create a DMG¶

  1. Open a console.

  2. Go to the PyInstaller directory, and build the spec:

  3. Run:

  4. You will now have a Touchtracer.dmg available in the dist directory.

Additional Libraries¶

GStreamer¶

If your project depends on GStreamer:

Note

If your Project needs Ogg Vorbis support be sure to add the--with-libvorbis option to the command above.

If you are using Python from Homebrew you will also need the following stepuntil this pull requestgets merged:

Using PyInstaller without Homebrew¶

First install Kivy and its dependencies without using Homebrew as mentioned herehttp://kivy.org/docs/installation/installation.html#development-version.

Once you have kivy and its deps installed, you need to install PyInstaller.

Let’s assume we use a folder like testpackaging:

Create a file named touchtracer.spec in this directory and add the followingcode to it:

Change the paths with your relevant paths:

Then run the following command:

Replace touchtracer with your app where appropriate.This will give you a <yourapp>.app in the dist/ folder.

Using Buildozer¶

pip install git+http://github.com/kivy/buildozercd /to/where/I/Want/to/packagebuildozer init

Note

Packaging Kivy applications with the following method must be done insideOS X, 32-bit platforms are no longer supported.

Edit the buildozer.spec and add the details for your app.Dependencies can be added to the requirements= section.

By default the kivy version specified in the requirements is ignored.

If you have a Kivy.app at /Applications/Kivy.app then that is used,for packaging. Otherwise the latest build from kivy.org using Kivymaster will be downloaded and used.

If you want to package for python 3.x.x simply download the packagenamed Kivy3.7z from the download section of kivy.org and extract itto Kivy.app in /Applications, then run:

Once the app is packaged, you might want to remove unneededpackages like gstreamer, if you don’t need video support.Same logic applies for other things you do not use, just reducethe package to its minimal state that is needed for the app to run.

As an example we are including the showcase example packaged usingthis method for both Python 2 (9.xMB) and 3 (15.xMB), you can find thepackages here:https://drive.google.com/drive/folders/0B1WO07-OL50_alFzSXJUajBFdnc .

https://ninpets.netlify.app/notion-so-macos-app.html. I have Evernote but it is way too complex for my very limited knowledge of computers, computer language and the Evernote app and the terms it uses and how do anything in the app.

That’s it. Enjoy!

Buildozer right now uses the Kivy SDK to package your app.If you want to control more details about your app than buildozercurrently offers then you can use the SDK directly, as detailed in thesection below.

Using the Kivy SDK¶

Note

Kivy.app is not available for download at the moment. For details,see this issue.

Note

Packaging Kivy applications with the following method must be done insideOS X, 32-bit platforms are no longer supported.

Since version 1.9.0, Kivy is released for the OS X platform in aself-contained, portable distribution.

Apps can be packaged and distributed with the Kivy SDK using the methoddescribed below, making it easier to include frameworks like SDL2 andGStreamer.

Name OS Size Last Update; Console File Converter V5.2.0 for Mac macOS 10.15-OS X 10.12: Mac: 15.9MB: 2020-08-03: Console File Converter V5.2.0 for Win 10/8.1. Yamaha ls9 app mac.

App Contents Macos Folder
  1. Make sure you have the unmodified Kivy SDK (Kivy.app) from the download page.

  2. Run the following commands:

Note

This step above is important, you have to make sure to preserve the pathsand permissions. A command like cp-rf will copy but make the appunusable and lead to error later on.

  1. Now all you need to do is to include your compiled app in the Kivy.appby running the following command:

Essential Macos Apps

Where <app_folder_name> is the name of your app.

This copies Kivy.app to <app_folder_name>.app and includes a compiled copyof your app into this package.

  1. That’s it, your self-contained package is ready to be deployed!You can now further customize your app as described bellow.

Installing modules¶

Kivy package on osx uses its own virtual env that is activated when you runyour app using kivy command.To install any module you need to install the module like so:

Where are the modules/files installed?¶

Inside the portable venv within the app at:

If you install a module that installs a binary for example like kivy-gardenThat binary will be only available from the venv above, as in after you do:

Adobe flash uninstall mac. The garden lib will be only available when you activate this env.

source /Applications/Kivy.app/Contents/Resources/venv/bin/activategarden install mapviewdeactivate

To install binary files¶

Just copy the binary to the Kivy.app/Contents/Resources/venv/bin/ directory.

App Contents Macos Folder

To include other frameworks¶

Kivy.app comes with SDL2 and Gstreamer frameworks provided.To include frameworks other than the ones provided do the following:

Do not forget to replace <Framework_name> with your framework.This tool osxrelocator essentially changes the path for thelibs in the framework such that they are relative to the executablewithin the .app, making the Framework portable with the .app.

Shrinking the app size¶

The app has a considerable size right now, however the unneeded parts can beremoved from the package.

For example if you don’t use GStreamer, simply remove it fromYourApp.app/Contents/Frameworks.Similarly you can remove the examples folder from/Applications/Kivy.app/Contents/Resources/kivy/examples/ or kivy/tools,kivy/docs etc.

Compile and build applications with IntelliJ IDEAThe IntelliJ IDEA compilation and building process compiles source files and brings together external libraries, properties files, and configurations to produce a living application. IntelliJ IDEA uses a compiler that works according to the Java specification.You can compile a single file, use the incremental build for a module or a project, and rebuild a project from scratch.If you have a pure Java or a Kotlin project we recommend that you use IntelliJ IDEA to build your project since IntelliJ IDEA supports the incremental build which significantly speeds up the building process.However, IntelliJ IDEA native builder might not correctly build the Gradle or Maven project if its build script file uses custom plugins or tasks. Macos run app using jvm version.

This way the package can be made to only include the parts that are needed foryour app.

Adjust settings¶

Icons and other settings of your app can be changed by editingYourApp/Contents/info.plist to suit your needs.

Create a DMG¶

App Contents Macos Folder Installer

To make a DMG of your app use the following command:

Note the lack of / at the end.This should give you a compressed dmg that will further shrink the size of yourdistributed app.

App Contents Macos Folder Shortcut

« Kivy on AndroidCreate a package for IOS »