SymphonyElectron/DEV_SETUP.md
2019-01-25 12:20:26 +05:30

4.3 KiB

Prerequisites

Windows

  • NodeJS version >= 8.9.4 (corresponds to electron 2.0.2)
  • Microsoft Visual Studio 2015 Community or Paid (C++ and .NET/C# development tools)
  • Python >= 2.7.1
  • Dot Net 3.5 SP1
  • Advanced Installer

Notes

  • C++ tools are required to recompile node modules
  • Dot NET/C# tools required to compile screen-snippet module
  • Open 'Developer Command Prompt for VS2015'. This sets paths to visual studio build tools
  • Advanced installer is required to create msi installer

Mac

  • Xcode command line tools. Or better, XCode latest version
  • NodeJS version >= 8.9.4 (corresponds to electron 2.0.2)
  • Sudre Packages

Notes

  • Ensure you have accepted the XCode license agreement
  • Sudre packages is used to create a .pkg installer file

Run demo:

  • npm install
  • npm run demo-win (for windows)
  • npm run demo-mac (for mac osx)

Build Instructions:

Mac

  • npm install
  • npm run dev (to run locally)
  • to build mac app:
    • npm run unpacked-mac
    • The distributable is created in the dist/mac directory
  • to build mac package (installer):
    • npm run packed-mac
    • The .pkg file will be generated in the installer/mac/build directory

Windows

  • npm install
  • npm run dev (to run locally)
  • To build windows unpacked exe:
    • npm run unpacked-win
    • The distributable is created in the dist/win-unpacked directory
  • To build windows 32 bit unpacked exe (installer):
    • npm run unpacked-win-x86
    • The distributable is created in the dist/win-ia32-unpacked directory
  • To create msi (installer):
    • Run the advanced installer script located in installer/win directory
    • There are two configuration files one each for 64-bit and 32-bit

MSI command line options:

  • To install for all users (admin required): msiexec.exe /i Symphony-x64.msi ALLUSERS=1
  • To install per user: msiexec.exe /i Symphony-x64.msi ALLUSERS=""
  • To change default pod url: msiexe.exe /i Symphony-x64.msi POD_URL=my.symphony.com
  • To change auto start: msiexe.exe /i Symphony-x64.msi AUTO_LAUNCH=true (or false) - if not specified default it true.
  • To change minimize on close: msiexe.exe /i Symphony-x64.msi MINIMIZE_ON_CLOSE=true (or false) - if not specified default is true.
  • Any of the above options can be chained together, for example: msiexe.exe /i Symphony-x64.msi MINIMIZE_ON_CLOSE=true AUTO_START=false POD_URL=my.symphony.com
  • The available values for various settings in the installer is listed below
    • POD_URL (String)
    • ALWAYS_ON_TOP (Boolean)
    • AUTO_LAUNCH (Boolean)
    • MINIMIZE_ON_CLOSE (Boolean)
    • BRING_TO_FRONT (Boolean)
    • MEDIA (Boolean)
    • LOCATION (Boolean)
    • NOTIFICATIONS (Boolean)
    • MIDI_SYSEX (Boolean)
    • FULL_SCREEN (Boolean)
    • POINTER_LOCK (Boolean)
    • OPEN_EXTERNAL (Boolean)

Start URL

  • To change the start url (i.e., pod url), edit config/Symphony.config and change 'url' variable. if no protocol provided, then https will be added.
  • The installer will include file config/Symphony.config next to executable. Changes in this file will effect all users.

Tests and Code Coverage

  • Jest framework is used to run tests
  • Use npm test to run unit tests
  • Use npm run spectron-test to run UI tests
  • Code coverage reports are placed in coverage directory
  • To check the test run report, see the dist directory
  • See the tests directory to find all the unit tests
  • See the spectron directory to find all the unit tests

Logging

  • Local logging is enabled for dev environments using the module electron-log
  • On macOS, the logs are stored under ~/Library/Logs/<app name>/log.log
  • On Windows, the logs are stored under %USERPROFILE%\AppData\Roaming\<app name>\log.log
  • Remote logging is enabled for local and production cases and are sent to the backend server via the remote objects

Misc notes

  • If desiring to run against server without proper cert use cmd line option: --ignore-certificate-errors
  • To start additional instance with custom data directory (if you want seperate user) use cmd line options: --multiInstance --userDataPath=<path to data dir>
  • If directory doesn't exist, it will be created