Manifest
The manifest XML file describes the properties of a software module.
It is mandatory in order for the module to be recognized and used as such by WinGuard. For example, it contains information with regard to compatibility and the start of the module.
The file name of the manifest is always the name of the module (as defined in the manifest.xml itself) + “.manifest.xml”, e.g. “DemoPanel.manifest.xml”.
<Manifest>
Root Node of the XML file with the following attributes and sections:
| Attribute | Description |
|---|---|
| version | (optional) Version of the manifest format. Default is “1”. |
| Section | Description |
|---|---|
| <Identity> | Information with regard to the identification and description of the module. |
| <Properties> | Information with regard to the properties. |
| <Traits> | Supported Traits (e.g., provided services) by the module. |
| <Skills> | Provided Skills (see Versioning for details). |
| <Compatibility> | Information with which apps and versions the Extension is compatible with. |
| <Configurations> | Various configurations in which the Extension can run. Contains among other things the start parameters and the name of the Module XML. |
<Identity>
This section describes the Extension and contains each of the following elements exactly once:
| Element | Description |
|---|---|
| <Code> | The module’s code. This is a globally unique and human readable identifier. |
| <Type> | Type of module (e.g., “mod” for adapter modules). |
| <Name> | Name of the module (used as base name for LNG files, help file and manifest). |
| <Description> | Short textual description of the module. Additional translations can be provided when using the lng attribute, e.g. lng=de. |
| <Version> | Version (and preview number) of the module. The preview number can optionally be appended after the version. Allowed form of <Version>: ‘<Number>[.<Number>][.<Number>][.<Number>][-<String><Number>]’. <Number> must be lower than 65535. For example: - 1 - 3.7 - 2.2 - Preview1 - 2.4.13. - 36573 - 8.4.12.1 - Preview2. |
| <Author> | Author of the module. |
<Properties>
The properties consist of a name/value pair.
| Name | Value | Description |
|---|---|---|
| acceptlocalstates | 0/1 | Module is allowed to trigger real (i.e., not local) Datapoint States when running in local mode. (Only required with WG X4) |
| flags | Flags in numeric form, mainly used for legacy modules. For new projects individual properties should be used. |
The flags provide information about which Functionality an Extension supports.
<Traits>
Traits are used to further specify a module’s behavior and available services.
Currently, the following Traits are defined:
| Trait | Description |
|---|---|
| adapter | Interface to external Objects with States and Events. This trait adds special app settings to the extension settings. |
| monitor | Provides data streams to visualize monitor information. |
| ap | Supports querying Objects for automatic data supply. This trait adds special settings for the automatic data supply to the extension settings. |
| ui | Provides ui content. |
| X4 | This is a legacy X4 module. |
| browsable | Supports querying Objects for specific nodes. Note: This Trait is only used for legacy modules. For new projects the Node attribute should be used. |
| settings | Has individual Settings. |
| demo | Can run without license. |
| nolic ≥wg.core 0.0.5 | Can run without license. |
| multistation | Can be operated at several stations. |
| concurrent | Allows creating App Events on stations running in local mode. Use responsibly. Only recommended for notification events. |
| localobjects ≥ext.adapter 0.1.2 | Only exchange local Objects (e.g. local telephones) between the AOP server and the extension, i.e. the extension knows different objects depending on the station it runs on and thus can only trigger app states and app events for these objects. The extension may still receive operations for “non-local” objects. <ext.adapter 0.1.5An Activity is always a local Activity and is only evaluated at the local station. ≥ext.adapter 0.1.6It is, however, possible to use “non-local” objects in a generic mapping for an object’s role within an Activity. |
| multiclient | Multiple clients of this module can connect simultaneously. |
| controlpanel | Can display an Extension provided control panel. |
| userauth | Uses user sessions obtained from OAuth to authenticate against the AOP server. |
<Skills>
Skills define which API functions and notifications are provided by the module. These can be module specific, custom APIs or one of the predefined Skills specified under Versioning.
Every Skill has a name, and a version. The same Skill can be provided in different version, e.g., adapter in version 1.0 and 2.0. The version number is used to distinguish between different versions of the same Skill and is not related to the version of the module itself.
<Compatibility>
This section defines which applications and their versions the module is compatible with. If the same element is specified multiple times, the module is compatible with all versions specified.
While being able to make a module dependent on specific WinGuard versions using the <X4> and <X5> elements, it is recommended to use the <Skill> element instead. This way, the module can be used with any WinGuard version that supports the specified Skill / version combination.
| Element | Description |
|---|---|
| X4 | The module is compatible with WinGuard X4. The WinGuard version is specified in the version attribute. |
| X5 | The module is compatible with WinGuard X5. The WinGuard version is specified in the version attribute. |
| Skill | The module is compatible with the API defined by the Skill given in the name attribute and the version specified in the version attribute. |
<Configurations>
This area is just a container for
<Configuration>
| Attribute | Description |
|---|---|
| name | (optional) Identifier of the configuration. Only needed if there is more than one. |
| compatibility | (optional) Marks the configuration compatible with a specific WinGuard version. Possible values are “X4” or “X5”. Attribute is only needed if a distinction is necessary. |
| <Traits> ≥aop 0.2.0 | Supported Traits (e.g., provided services) by the module in this configuration. |
A configuration contains each of the following sections exactly once:
<Definitions>
This section contains each of the following elements exactly once:
| Element | Description |
|---|---|
| ModuleDef | File name (or path relative to Manifest XML) of the Module XML that is used in this configuration. If the file is placed in the custom configuration folder, the path is ignored. |
| AppDef | File name (or path relative to Manifest XML) of the App XML that is used in this configuration. If the file is placed in the custom configuration folder, the path is ignored. |
| ConfigDef | File name (or path relative to Extension executable) of the Config XML that shall be used in this configuration. If the file is not found, the default will be loaded. If the file is placed in the custom configuration folder, the full path is used. Paths to parent folders for the Config XML (..\config.xml) must be avoided. |
| LngFileBase | Name (or path relative to Manifest XML) that shall be used to identify the .lng files of this Extension (“MyName” searches for “MyName_de.lng”, “MyName_en.lng”, etc.). If no value is given or the file is not found, the Name is used as the default. |
| HelpFileBase | Name (or path relative to Manifest XML) that shall be used to identify the .html help files of this Extension (“MyName” searches for “MyName_de.html”, “MyName_en.html”, etc.). If no value is given or the file is not found, the Name is used as the default. |
| LegacyDef | File name (or path relative to Manifest XML) of the Legacy XML that is used in this configuration. This is required to run X4 Extensions under X5 and vice versa. If the file is placed in the custom configuration folder, the path is ignored. |
<Execution>
This area is a container for elements that describe which calls are made upon module startup.
<ShellExecute>
Specifies how the application should be started if started by WinGuard.
| Attribute | Description |
|---|---|
| file | File name of the application to be started |
| dir | (optional) Relative path specification of the folder containing the file. |
| params | Parameter with which the application is started. There are the following options and placeholders:
|
<LoadLibrary>
This section is only used by WinGuard X4 to load legacy DLL-based interfaces.
<X4ModuleAdapter>
This section is only used by WinGuard X5 to load legacy DLL-based interfaces written for WinGuard X4.
<Traits>
Configuration-dependent traits can be defined here. These will be applied in addition to the module traits.
Sample
<?xml version="1.0" encoding="utf-8"?>
<Manifest version="1">
<Identity>
<Code>demopanel</Code>
<Type>mod</Type>
<Name>DemoPanel</Name>
<Description>Interface Module for DemoPanel</Description>
<Description lng="de">Schnittstellenmodul für DemoPanel</Description>
<Version>1.0-preview1</Version>
<Author>Advancis Software & Services GmbH</Author>
</Identity>
<Properties>
<Property name="acceptlocalstates" value="1"/>
</Properties>
<Traits>
<Trait name="adapter"/>
<Trait name="browsable"/>
<Trait name="settings"/>
</Traits>
<Skills>
<Skill name="adapter" version="1.0"/>
</Skills>
<Compatibility>
<X4 version="8.4.18.0"/>
<X5 version="8.5.1.0"/>
<Skill name="ext.adapter" version="1.0"/>
<Skill name="ext.common" version="1.0"/>
</Compatibility>
<Configurations>
<Configuration>
<Definitions>
<ModuleDef>DemoPanel.module.xml</ModuleDef>
<AppDef>DemoPanel.app.xml</AppDef>
<LegacyDef>DemoPanel.legacy.xml</LegacyDef>
<LngFileBase>MyLngName</LngFileBase>
<HelpFileBase>MySubfolder/MyHelpName</HelpFileBase>
</Definitions>
<Execution>
<ShellExecute file="DemoPanel.exe" dir=".\" params="--id ${id} --host ${host}"/>
</Execution>
</Configuration>
<Configuration>
<Definitions>
<ModuleDef>DemoPanel.module.xml</ModuleDef>
<AppDef>DemoPanel.app.xml</AppDef>
<LegacyDef>DemoPanel.legacy.xml</LegacyDef>
<LngFileBase>MyLngName</LngFileBase>
<HelpFileBase>MySubfolder/MyHelpName</HelpFileBase>
</Definitions>
<Execution>
<ShellExecute file="DemoPanel.exe" dir=".\" params="--id ${id} --host ${host}"/>
</Execution>
<Traits>
<Trait name="localobjects">
</Traits>
</Configuration>
</Configurations>
</Manifest>