The project creates installers for the following system configurations:
Windows 64-bit
MacOS 64-bit
Linux 64-bit
The project requires node 14.17.5
and @angular/cli
globally installed.
git clone ...
npm install
Download the platforms
directory with binaries for mongo
and node
.
npm run setup:resources
On Mac OSX and Linux systems, it may be need to changed the permissions to all the files in the folder:
chmod -R 755 platforms/
forever-monitor will be used to launch the Go.Data web app. It will create the app-management
folder in project root.
npm run setup:forever
The Go.Data projects (frontend and backend) are included as git submodules. The submodules are cloned via SSH, therefore a SSH key must be added to the Github account used to clone the repositories (https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/).
git submodule init
git submodule update
git submodule foreach git pull origin main
This will create the go-data
folder with the source for Go.Data API (go-data/api
) and Go.Data frontend (go-data/frontend
).
-
Install the Go.Data dependencies for the Go.Data API and frontend projects:
cd go-data/api nvm use 14.17.5 npm install cd ../frontend nvm use 16.18.1 npm install
-
Build Go.Data API & Frontend for production:
cd go-data/api nvm use 14.17.5 npm run build cd ../frontend nvm use 16.18.1 npm run build
This will create the
build
folder for Go.Data API (go-data/api/build
) and thedist
folder for Go.Data frontend (go-data/frontend/dist
). -
Move the
dist
folder in thebuild/client
folder:mv go-data/frontend/dist go-data/api/build/client
-
Move the
build
folder in the project root folder:mv go-data/api/build go-data
At this point, the Go.Data installer project should have the following structure:
.
├── app-management # Contains the `forever-monitor` node module
├── build # Contains the app icon
├── controllers # Source files
├── go-data # The source code and production version of the Go.Data web app
│ ├── api # The source code of Go.Data API
│ ├── build # The production version of the Go.Data web app
│ └── frontend # The source code and of Go.Data frontend
├── logger # Source files
├── platforms # Downloaded resources for Mongo and Node
├── resources # Contains icons for the installer
├── .gitignore
├── .gitmodules
├── index.html
├── LICENSE
├── main.js
├── package.json
├── package-lock.json
├── README.md
├── renderer.js
└── setup-resources.js
If any of the folders is missing from the project structure, you may have missed a step. It may be a good idea to take a look one more time at the steps above.
Check the package.json
files for building installers. The file contains scripts for packaging (pack:*)
and distribution (dist:*)
.
The packaging scripts only create the desktop app. The distribution scripts create the desktop app and also creates the installers.
To build an installer, run npm run script
, i.e: npm run pack:osx:64
.
To build all installers, run npm run pack:*
or npm run dist:*
.
The environment variables PLATFORM, ARCH and VERSION are read by the installer when copying resources.
The -c.extraMetadata variables are used by the installed app to run node and mongo.
Note: In any script, these variables should have the same value:
PLATFORM with -c.extraMetadata.PLATFORM
ARCH with -c.extraMetadata.ARCH
VERSION with -c.extraMetadata.OSVERSION
Building for Windows x64 requires a 64-bit Windows machine.
npm run dist:win:64
Building for Mac OS x64 requires a 64-bit Mac.
npm run dist:osx:64
Building for Linux x64 requires a 64-bit Linux machine.
npm run dist:linux:cli:64
The files must be deployed on the same server that is used for auto-update.
Go to the directory on the server.
If there is any previous version on the server, create a directory named as the existing version (i.e. 48.0.0
) and move the following files in the directory:
- Go.Data-Setup.exe
- Go.Data-Setup.exe.blockmap
- latest.yml
Copy the new 64-bit version files on the server directory:
- Go.Data-Setup.exe
- Go.Data-Setup.exe.blockmap
- latest.yml
Go to the directory on the server.
If there is any previous version on the server, create a directory named as the existing version (i.e. 48.0.0
) and move the following files in the directory:
- Go.Data-Setup.zip
- Go.Data-Setup.zip.blockmap
- Go.Data-Setup.dmg
- Go.Data-Setup.dmg.blockmap
- latest-mac.yml
Copy the new version files on the server directory:
- Go.Data-Setup.zip
- Go.Data-Setup.zip.blockmap
- Go.Data-Setup.dmg
- Go.Data-Setup.dmg.blockmap
- latest-mac.yml
Go to the directory on the server.
If there is any previous version on the server, create a directory named as the existing version (i.e. 48.0.0
) and move the following file in the directory:
- Go.Data-Setup.tar.gz
Copy the new 64-bit version file on the server directory:
- Go.Data-Setup.tar.gz
The folder structure should be the following:
.
├── Go.Data-Setup.tar.gz # Linux 64-bit CLI installer
├── Go.Data-Setup.exe # Windows 64-bit installer
├── Go.Data-Setup.exe.blockmap # file used by Windows auto-updater
├── Go.Data-Setup.zip # file used by Mac auto-updater
├── Go.Data-Setup.zip.blockmap # file used by Mac auto-updater
├── Go.Data-Setup.dmg # Mac installer
├── Go.Data-Setup.dmg.blockmap # Mac installer
├── latest-mac.yml # file used by Mac auto-updater
└── latest.yml # file used by Windows auto-updater
- Download the x64 installer and run.
- Download the x64 Mac installer and run.
-
Download x64 Linux
-
Unzip the files
tar -xvzf Go.Data-Setup.tar.gz
-
Run the launch script. Optionally, the following arguments can be passed:
- --dbport
- specifies the port for Mongo
- between 1025 and 65535
- must be different from
port
- defaults to
27000
- --dbpath
- specifies the path for Mongo files
- defaults to
db
- --port
- specifies the port for Go.Data
- between 1025 and 65535
- must be different from
dbport
- defaults to
8000
`./go-data-x64 --dbport=3001 --dbpath=~/Desktop/db --port=3000
- --dbport
The auto-updater is based on the package.json
version number and the files updater/app-update-x64.yml
.
- Uninstall Go.Data from Add or Remove Programs
- Optionally, remove the data folder from
C:\Users\
username
\AppData\Roaming\GoData
- Delete the Go.Data application from /Applications
- Optionally, remove the data folder from
~/Library/Application Support/Go.Data
- Remove the folder where GoData was unarchived
- Optionally, remove the folder set as
dbpath
Please read these Terms of Use and Software License Agreement (the “Agreement”) carefully before installing the Go.Data Software (the “Software”).
By installing and/or using the Software, you (the “Licensee”) accept all terms, conditions, and requirements of the Agreement.
The Software is a product published by WHO (the “Software”) and enables you to input, upload and view your data (the “Data”).
This Agreement governs your use of the Software you have downloaded.
The Software contains third party open source software components, issued under various open source licenses:
- 0BSD
- AFL-2.1
- BSD-3-Clause
- BSD-2-Clause
- BSD-3-Clause-Clear
- Apache-2.0
- MIT
- MIT-0
- MPL-2.0
- CC-BY-3.0
- CC-BY-4.0
- CC0-1.0
- ISC
- Unlicense
- WTFPL
- AGPL-3.0
- Python-2.0
- BlueOak-1.0.0
- Artistic-2.0
- Zlib
- Ruby
The text of the respective licenses can be found in Annex 2.
WHO makes no warranties whatsoever, and specifically disclaims any and all warranties, express or implied, that either of the third-party components are free of defects, virus free, able to operate on an uninterrupted basis, merchantable, fit for a particular purpose, accurate, non-infringing or appropriate for your technical system.
The use of the third-party Components or other third-party software does not imply that these products are endorsed or recommended by WHO in preference to others of a similar nature.
The Software is copyright (©) World Health Organization, 2018, and is distributed under the terms of the GNU General Public License version 3 (GPL-3.0). The full license text of the GNU GPL-3.0 can be found below in Annex 1.
The boundaries and names shown and the designations used on the maps [embedded in the Software] (the “Maps”) do not imply the expression of any opinion whatsoever on the part of WHO concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted and dashed lines on maps represent approximate border lines for which there may not yet be full agreement.
Unlike the Software, WHO is not publishing the Maps under the terms of the GNU GPL-3.0. The Maps are not based on “R”, they are an independent and separate work from the Software, and not intended to be distributed as “part of a whole” with the Software.
You shall not state or imply that results from the Software are WHO’s products, opinion, or statements. Further, you shall not (i) in connection with your use of the Software, state or imply that WHO endorses or is affiliated with you or your use of the Software, the Software, the Maps, or that WHO endorses any entity, organization, company, or product, or (ii) use the name or emblem of WHO in any way. All requests to use the WHO name and/or emblem require advance written approval of WHO.
Any matter relating to the interpretation or application of this Agreement which is not covered by its terms shall be resolved by reference to Swiss law. Any dispute relating to the interpretation or application of this Agreement shall, unless amicably settled, be subject to conciliation. In the event of failure of the latter, the dispute shall be settled by arbitration. The arbitration shall be conducted in accordance with the modalities to be agreed upon by the parties or, in the absence of agreement, in accordance with the UNCITRAL Arbitration Rules. The parties shall accept the arbitral award as final.
Nothing contained herein or in any license or terms of use related to the subject matter herein (including, without limitation, the GNU General Public License version 3 mentioned in paragraph 3.1 above) shall be construed as a waiver of any of the privileges and immunities enjoyed by the World Health Organization under national or international law, and/or as submitting the World Health Organization to any national jurisdiction.
Annex 1
Annex 2