Welcome to X-Updater’s documentation!

The X-Updater system consists from 4 parts:

If you wish you can see the repository of this documentation https://github.com/steptosky/x-updater-doc

Contents:

Terms

administrator
The guys who administrate the X-Updater system.
developer
The guys who develop the X-Updater system.
distributor
A person who uses X-Updater system to distribute updates of his products.
consumer
A person who uses X-Updater for getting updates for his products copy.
commit
The process for making a new product’s snapshot in the system.

For distributors

This section is for distributors

Howtos

How to create new product

You have to contact the administrator he will add your new product into the system and give you instructions.

How to prepare your product

Before you will be able to use the X-Updater for distribution of your products you have to prepare it.

  • If you want to setup a new product no server you have to ask the administrator to create a new product there.
  • Install dev client (named xupd) See Dev client (xupd). if you don’t have the client you have to ask the administrator where you can get it.
  • Run xupd init -product="product id" See init.

Description of the x-updater files:

  • x-updater/client-configuration - this file is the configuration for the client. Actually you don’t have to change it yourself, but you must commit this file with your product i.e. don’t put it into the x-updater ignore list.
  • x-updater/productId - this file contains the public id of your product. It must be committed with your product i.e. don’t put it into the x-updater ignore list*.
  • x-updater/description.txt - this file should describe your product, for example you can put the changelog there and any other text. notes: the content of this file will be shown for the consumers while updating. This file is processed while committing so you have to prepare all its content before you commit a new snapshot.
  • x-updater/xupdignore - this is the ignore list. See How to use ignore list.

Note

The x-updater automatically ignores unnecessary files like description.txt, xupdignore.

Note

  • The files info.msg, x-updater/info.msg, x-updater/x-updater.cnf, .xupdignore, x-updater/.xupdignore are not used anymore and should be deleted after xupd init.

How to upload your product or its update

  • Setup your xupd client if you haven’t done so. See client.
  • Put necessary information into x-updater/description.txt file.

Warning

If you forget to put changes into this file there is no way to fix it except ask the administrator

  • Use command xupd status if you want to see the changes before uploading them. See status.
  • Use command xupd commit to upload your changes and make new snapshot. Since your changes are uploaded they immediately are available for the consumers. See commit.

Examples:

# It initializes and commits your product
$ xupd init -productId=7b8ea61ebb1082b9e8300c304b182f808d1bccae
$ xupd commit -apiKey=ca5c22db1805612b49264281bffcfa86caa4a879 \
              -productId=7b8ea61ebb1082b9e8300c304b182f808d1bccae \
              -desc="any text here"
# Sets you distributor api key into local storage.
# It allows you to not specify it each time when you want to use status or commit command.
$ xupd client set -apiKey=ca5c22db1805612b49264281bffcfa86caa4a879
# go into product folder
$ cd path_to_product
# It initializes your local product in the current working dir
# Also it allows you to not specify peoductId each time when you want to use status or commit command.
$ xupd init -productId=7b8ea61ebb1082b9e8300c304b182f808d1bccae
# It checks changes
$ xupd status
# It makes snapshot on the server with your changes
# and starts distributing it
$ xupd commit -desc="any text here"

Note

In the previous version after your changes were uploaded you had to run X-Updater-client to initialize preparation process on the server then you had to wait for an email that confirms that the server has indeed prepared the files. Now if xupd commit doesn’t return an error then all went well.

How to use ignore list

Ignore list is located x-updater/xupdignore

Ignore list uses a prefix and postfix conception. The prefix and postfix should be separated by * if there is no * presented then text considered as prefix. For example: folder2/*ex any file or folder that starts with folder2/ and ends with ex will be ignored.

Examples:

folder1/A - ignore file or whole folder 'A'
folder1/A/* - ignore whole folder 'A'.
folder2/*ex - ignore all files in the folder 'folder2' that end with 'ex'
*ex - ignore all files in all the folders that end with 'ex'

You can use ! or not for the files that you don’t want to ignore.

This example shows how to ignore whole folder except one file:

folder1/A/* - ignore whole folder 'A'.
!folder1/A/myFile - but don't ignore the file 'myFile' in the folder 'A'
# the previous line can also be written the following way:
not folder1/A/myFile

Note

All paths must be specified relative to the product folder, not relative to the location of the ignore list!

Dev client (xupd)

Installation

The client doesn’t need special installation just put it somewhere and add to your environment PATH the path to the folder where xupd is located.

Commands

init
$ usage: xupd init [-productId [PRODUCT ID]]

Init a new product in you local product’s folder. This command will create x-updater folder and all necessary files with necessary content. This command doesn’t create and prepare product on the server for this issue you have to contact administrator.

arguments:
      -productId        Product public id.

optional-arguments:
      -dir              Product dir. if it isn't specified then
                        the current working dir is considered as the product's one.

Examples:

  • Init new product with its public id
$ xupd init -productId=7b8ea61ebb1082b9e8300c304b182f808d1bccae
client
$ usage: xupd client [sub-command] [arguments]

This command can be used to manage client settings. The client settings is stored in your PC you can set new values or read current ones.

sub-commands
      set                      set value
      get                      get value

arguments:
     -apiKey        [set, get] distributor's api key

Examples:

$ xupd client set -apiKey=ca5c22db1805612b49264281bffcfa86caa4a879
status
$ usage: xupd status [-dir [DIR]] [-apiKey [API KEY]] [-productId [PRODUCT ID]]

This command is for checking the difference between your local product and last committed one to the server. It is for information only and it doesn’t change anything.

optional-arguments:
      -dir              Product dir. if it isn't specified then
                        the current working dir is considered as the product's one.

      -apiKey           Distributor api key, if it isn't specified then
                        the value will be searched in the client settings.

      -productId        Product public id, if it isn't specified then
                        the value will be searched in the file *productId* inside
                        the *x-updater* folder.

Examples:

$ xupd status
$ xupd status -dir="myProductFolder" \
              -apiKey=ca5c22db1805612b49264281bffcfa86caa4a879 \
              -productId=7b8ea61ebb1082b9e8300c304b182f808d1bccae
commit
$ usage: xupd commit [-dir [DIR]] [-apiKey [API KEY]] [-productId [PRODUCT ID]]
                     [-type [TYPE]] [-slots [SLOTS]]
                     [-resetBetaAccess] [-force]

This command is for committing and uploading your changes. I.e. this command makes new snapshot in the system.

arguments:
      -desc             Commit description, for example you can set version.
                        If you are familiar with git, svn, hg etc...
                        this description is like their one.

optional-arguments:
      -dir              Product dir. if it isn't specified then
                        the current working dir is considered as the product's one.

      -apiKey           Distributor api key, if it isn't specified then
                        the value will be searched in the client settings.

      -productId        Product public id, if it isn't specified then
                        the value will be searched in the file *productId* inside
                        the *x-updater* folder.

      -type             Commit type release, beta, alpha etc...

      -slots            Number of free slots for new public beta consumers.

      -resetBetaAccess  Remove all public beta consumers.

      -force            If there is previous unfinished commit you
                        can abort it and force to make this one.
                        This parameter is recommended for continuous integration.

Note

See Beta/Alpha access for more information about -type, -slots, -resetBetaAccess.

Examples:

$ xupd commit -desc="any text here"
$ xupd commit -dir="myProductFolder" \
              -apiKey=ca5c22db1805612b49264281bffcfa86caa4a879 \
              -productId=7b8ea61ebb1082b9e8300c304b182f808d1bccae \
              -desc="any text here" \
              -type=beta \
              -slots=100 \
              -resetBetaAccess \
              -force

Beta/Alpha access

The updater gives you 3 types of snapshots release, beta, alpha with different access level. When you create a new snapshot using the commit command you are given a chose as per the type of the snapshot. X-Updater client will give the consumer will be presented a chose as per which type of snapshot to update.

  • release - the widest access type. Any consumer who has a valid login and password (key) can download the snapshot.
  • beta - this access type has limited access. You can grant the access in three ways:
    • to everyone - which means every consumer will have a chose of using the beta snapshot
    • to a selected group - similar to private beta test, only the people you chose will be able to get the beta
    • to a limited number of people (slots) - you select a number of available beta test slots which are filled when a consumer selects the beta snapshot download. The slots are used up until the amount of available slots is zero. Then you need to give out more slots. If a slot has been taken by a consumer it remains his until you reset the access for all testers.
  • alpha - this snapshot can be accessed only by the selected group of beta testers (see above). Thus, any beta tester in the selected group has the chose of getting the alpha, provided you have created a separate alpha version of course. This should be used for quick tests of fixes or new functionality.

Note

The access types are prioritized. This means that if a consumer has requested an alpha but your last snapshot was a beta, he will get the beta. The prioritization is as follows: release > beta > alpha.

Examples

  • we make a new beta snapshot and add 100 new beta slots. Note, the -slots argument can be only used with -type=beta
$ xupd client commit -desc="my new commit" -type=beta -slots=100
  • we make a release and reset the beta access for all consumers with slots
$ xupd client commit -desc="my new commit" -type=release -resetBetaAccess

Note

To change the number of available slots, take access away, reset the beta access etc. you can contact the administrator. This might be needed if you made a mistake, need to change something or want to add slots without making a new snapshot.

FAQ

How to report a bug?

You have to contact the administrator via email.

Write subject .. code-block:: text

[X-Updater][bug] Subject

How to get support?

You have to contact the administrator via email

Write subject .. code-block:: text

[X-Updater][support] Subject

X-Updater restores files that can be changed by my application. How to tell the X-Updater not to restore them?

This problem often occurs if you use the same settings file to configure your application and to store user’s data.

In general you have to design your application in such a way that application’s data and user’s data use different files and you shouldn’t distribute the files that are used to store user’s data.

Another way is to not distribute settings file and check whether settings file exist by your application. If it doesn’t then create it by your application with necessary default values.

But if you can’t use the abovemented ways for some reasons you can use tags in ignore list but it is just a workaround and is not recommended. To enable this you have to contact the administrator

My product has extended versions. How can I distribute all of them?

In this context ‘extended’ is considered a completely new product in x-plane.org store. You have to contact the administrator to get the instructions.

My product has some variations e.g. different colors, plug-ins, textures etc… How can I distribute those variations?

Actually there is no way to distribute products with variations now. But we know about this problem and we are thinking about how to implement this feature.

Pay attention it might be like ‘extended’ feature described above but actually it is a different thing and it doesn’t depend on the store.

For consumers

Java client

For using the x-updater system you should have the X-Updater-Client.jar file in the root folder of your plane. If you don’t have it you can download the file here http://update.x-plane.org/ and place it into your plane folder. Then, if you don’t have Java 8 runtime installed you have to install it from www.java.com, and run X-Updater-Client.jar, use your e-mail address from x-plane.org and license-key for your product.

If you can’t run the X-Updater-Client.jar file you should search how to run jar in Google.

Warning

The x-updater client works only with java 8 now.

Warning

The x-updater system works only with the keys from x-plane.org

Note

You can also download the latest version of your product directly from the store

FAQ

How to report a bug?

Create a ticket here http://flightfactor.aero/ticket

How to get support?

Create a ticket here http://flightfactor.aero/ticket

Changelog

The X-Updater Server

0.7.0 (19.01.2018)

  • Feature: beta/alpha snapshots.
  • Feature: new API.
  • Feature: refactoring internal code.
  • Feature: Utility xupd for delivering your updates to the server.
  • Feature: help for distributors.

Note

Breaking changes

  • Now it has other access conception
  • Now it has other conception for uploading your update

The X-Updater Dev client (xupd)

0.2.0 (19.01.2018)

  • Feature: release/beta/alpha snapshots.
  • Feature: beta slots number.
  • Feature: beta access reset.
  • Feature: force commit.
  • Feature: client’s settings.
  • Feature: init product.
  • Improved: information printing.

The X-Updater Java Client

0.6.1-beta (23.01.2018)

  • Fix: running under mac, the client couldn’t be started because of hanging self-update.

0.6.0-beta (19.01.2018)

  • Feature: selecting snapshot types release/beta/alpha.
  • Feature: fresh installation.
  • Patch: when you select the product dir it now uses the x-updater config from that dir.
    It fixes some problems when client is used as installer.
  • Fix: the problem with incorrect updating when path contains more than one folder named ‘Aircraft’.
  • Fix: the problem when some files can be rewritten while updating but they should be untouched.
  • Fix: the problem when some files must be downloaded or updated but for some reason it did not work.

0.5.1-beta (07.07.2017)

  • Fix: bound products path.

0.5.0-beta (29.06.2017)

  • Feature: supporting bound products inside the base product.
  • Fix: some minor bugs.

0.4.0-beta (01.04.2017)

  • Feature: related products.
  • Feature: bound products.
  • Patch: using case sensitive path on windows.
  • Fix: some minor bugs.

0.3.1-beta (25.12.2016)

  • Patch: config can have “cache=0” parameter for disabling the cache.

0.3.0-beta (28.11.2016)

  • Patch: some UI elements have been increased.
  • Patch: auto-trim for the authentication text (i.e. user name and key).
  • Patch: text when product’s developer doesn’t provide product description.
  • Patch: logging.
  • Fix: changing mode installer->updater when the client is run inside product’s directory.

0.2.7-beta (28.09.2016)

  • Feature: count of the files for deleting.
  • Feature: auto open finish page after installation is completed.
  • Feature: auto open finish page after verification is completed and there no files to update.
  • Fix: auto-run the client after self-update. WARNING: It will have the effect in next time.
  • Fix: progress bar value when process is completed.
  • Fix: floating error after pressing cancel button.
  • Fix: some bugs in the config.

0.2.6-beta (27.09.2016)

  • Feature: link to the support (on finish page and while critical errors)
  • Patch: log improvements.

0.2.5-beta (10.09.2016)

  • Patch: internal changes.

0.2.4-beta (24.08.2016)

  • Fix: fixes texts.

0.2.2-beta (15.08.2016)

  • Patch: internal improvements.

0.2.0-beta (12.08.2016)

  • Fix: 60 minutes before timeout now.

0.1.9-beta (07.07.2016)

  • Fix: mixed updater’s and installer’s configurations.