XML Schema Definition for WPKG packages. The root element (packages) contains all packages. There might be multiple XML files of this type put to the packages/ sub-directory where WPKG is installed. Generic check definition - used for compatibility. Does not verify correct combination of attributes for all kind of checks. If you would like to verify the attributes in more detail please specify the xsi:type='checkFile' attribute where 'checkFile' can be replaced with any more-specific check type of check*. Valid types include: - checkFile - checkRegistry - checkExecute - checkUninstall - checkLogical Checks can be nested. Use logical checks to group checks with logical conditions. Specify a condition under which this check applies. If the condition does not apply then the check is ignored (exactly as if it would not have been specifyed at all). For example you might add a condition to check for specific OS version. So the check will only be applied if the OS version matches the condition. Type of check, valid values are: - file - registry - uninstall - execute - logical Check condition. Valid values are: - equals - exists - sizeequals - versionsmallerthan - versionlessorequal - versionequalto - versiongreaterorequal - versiongreaterthan - datemodifyequalto - datemodifynewerthan - datemodfyolderthan - datecreateequalto - datecreatenewerthan - datecreateolderthan - dateaccessequalto - dateaccessnewerthan - dateaccessolderthan - exitcodesmallerthan - exitcodelessorequal - exitcodeequalto - exitcodegreaterorequal - exitcodegreaterthan - not - and - or - atleast - atmost Path to be used for checks (registry path, file path). A value is required for some check conditions like VERSION, SIZE or EQUALS checks. Note for registry equals checks: The value should contain a string representing the data within the registry value. In case the value is a DWORD just enter a numeric string. The values will be compared in their string representation (DWORD converted to String). In case you compare to a REG_MULTI_SZ value all data fields will be concatenated to a single string separated by newline characters. Example: REG_MULTI_SZ='a b c' value='a b c' will match. REG_BINARY values will be converted to multiline string as well. Each octett of the binary value is converted to its decimal representation. REG_BINARY= '11 22 33 44' value = '17 34 51 68' will match. Check type for file specific tests. File checks need to specify 'file' as the TYPE of check. Specify what should be tested on the file specified within the 'path' property. - exists: Check for file existence. - sizeequals: Check for file size (exact size in Bytes specified within the 'value' attribute. - version*: Compare file version to version specified within the 'value' attribute. - date*: Compare file date to date specified within the 'value' attribute. Path to the file to be checked. You might use environment variables as well: 'C:\Windows\explorer.exe' '%TEMP%\somefile.txt' This value is optional only for existence check. For all other checks it it is required. The value should have the following format: - for 'exists' condition: For the 'exists' condition the value attribute is not evaluated. Exists just checks for existence of the file referred within the 'path' attribute. - for 'sizeequals' condition: The 'value' attribute has to tontain the file size (in bytes). - for 'version*' condition: The value has to contain a version string which can be compared against the file version. Some examples for valid version comparisons: A B Result '1' '2' B is newer '1' '15' B is newer '1.0' '1.2.b' B is newer '1.35' '1.35-2' B is newer '1.35-2' '1.36' B is newer '1.35R3' '1.36' B is newer '1' '1.0.00.0000' Versions are equal '1' '1.0' Versions are equal '1.35' '1.35-2' B is newer '1.35-2' '1.35' A is newer '1.35R3' '1.36R4' B is newer '1.35-2' '1.35-2.0' Versions are equal '1.35.1' '1.35.1.0' Versions are equal '1.3RC2' '1.3' B is newer (special case where A is an 'RC' version) '1.5' '1.5I3656' A is newer (B is an 'I'/integration version) '1.5' '1.5M3656' A is newer (B is an 'M'/milestone version) '1.5' '1.5u3656' B is newer (B is an update version) - for 'date*' condition: This value allwos to do comparison to file creation, modification and access timestamps. The 'value' attribute has to contain a string in the following format: Relative timestamp (in minutes): -100 Means the file timestamp is compared to the timestamp 100 minutes ago. +50 Means the file timestamp is compared to the timestamp 50 minutes in the future. Absolute timestamp in ISO 8601 format: '2007-11-23 22:00' (22:00 local time) '2007-11-23T22:00' (Both, 'T' and space delimiter are allowed) '2007-11-23 22:00:00' (specifies seconds which default to 0 above) '2007-11-23 22:00:00.000' (specifies milliseconds which default to 0) It is allowed to specify the timezone as well: '2007-11-23 22:00+01:00' (22:00 CET) '2007-11-23 21:00Z' (21:00 UTC/GMT = 22:00 CET) '2007-11-23 22:00+00:00' (21:00 UTC/GMT = 22:00 CET) File-Comparison: Prefix your value with the '@' character in order to point to a file to which the timestamp of the file referred in path is compared. Examples: @%SystemRoot%\explorer.exe @c:\myfile.txt Special terms: last-week Check afainst timestamp of exactly one week ago (7 days). last-month Check afainst timestamp of exactly one month ago (30 days). last-year Check afainst timestamp of exactly one year ago (365 days). yesterday Check afainst timestamp of yesterday (24 hours ago). Use this type to specify a check for registry values. Registry checks need to specify 'registry' as the the TYPE of check. exist: Check for existence of the key/value supplied within the 'path' attribute. equals: Check if the specified value contains the data entered within the 'value' attribute. Enter registry path to a key which you like to check. Valid examples: 'HKLM\Software' Data to check te specified registry value against. NOTE: This attribute is optional only for registry existence checks. It is REQUIRED if you use equal checks. Use this type to specify a check for uninstall entries (Control Panel, Add/Remove programs). Uninstall checks need to specify 'uninstall' as the the TYPE of check. - exist: Check if an uninstall entry equal to the value within the 'value' attribute exists (see Control Pane, Add/Remove software) version*: Compares the uninstall entry version to the value within the 'value' attribute. NOTE: This only works if the application specifies a 'DisplayVersion' value within the Windows registry. Valid values: - versionsmallerthan - versionlessorequal - versionequalto - versiongreaterorequal - versiongreaterthan Name of the uninstall entry as it appears within Control Panel, Add/Remove software. Specifies a version if any of the version* checks are used. Use this type of check to execute a script. Its exit code can be evaluated by rules then. Execute checks need to specify 'execute' here. Verify the exit code of the script executed. Please specify the exit code to compare to within the 'value' attribute. Valid values: exitcodesmallerthan: true in case the script exit code is numerically less than the value specified exitcodelessorequal: true in case the script exit code is numerically less or equal than the value specified exitcodeequalto: true in case the script exit code is numerically equal to the value specified exitcodegreaterorequal: true in case the script exit code is numerically greater or equal to the value specified exitcodegreaterthan: true in case the script exit code is numerically larger than the value specified Path to the script to be executed. Value used in exit code comparison. Use this check for logical chaining of other checks. Type of check has to be set to 'logical' for logical checks. Check condition: not: Requires exactly one single sub-element of type 'check' whose exit code boolean value is inverted. and: Returns false immediately if one of the contained checks returns false. Only evaluates true in case ALL checks contained evaluate true. or: Returns true immediately as soon as one of the checks return true. Only evaluates false if ALL checks contained evaluate false. atleast: Returns true only if at least the specified amount of checks contained return true. For example if you specify 5 checks and the value for 'atleast' is set to 3 then it returns true as soon as 3 checks out of 5 evaluated true. atmost: Returns true if maximum the specified amount of checks return true. For example if you specify 5 checks and the value for 'atmost' is set to 3 it will return true only if no more than 3 checks evaluate true. Number of checks required for 'atleast' and 'atmost' checks. Unused for all other conditions. Variable name. Variable value. Reference to a package. Specifies a condition under which the package reference is taken into account. If the condition is not met, then the package reference is ignored. Equal to the ID attribute of any existing package. Regular expression which matches host name. If hostname attribute is specified then this node is only applied if the host name is matched by the specified attribute regular expression. Regular expression which matches host operating system. e.g. 'microsoft windows 7 professional' Host OS description string will have the following format: '[OS-caption], [OS-description],[CSD-version], [OS-version]' Regular expression matching machine IP address. Any IP address of the host (if it has multiple) will have to match this expression. e.g. ^192\.168\.1\..* Regular expression matching domain name of the host. e.g. ^domain$ Regular expression matching group membership of host. At least one group has to match the regular expression. e.g. ^group.*$ Regular expression matching the host architecture. Currently the following architecture are supported: x86: 32-bit Windows operating system running on x86 instruction set x64: 64-bit Windows operating system running on x86-64 instruction set ia64: 64-bit Windows operating system running on IA64 instruction set Note: Note: You will have to match x86 also if you run Windows 32-bit on AMD64/EMT64/x64 hardware. Define environment variables which have to match in order to match the host. Environment variables need to be specified in the following format: environment='variable1=^regexp$|variable2=regexp...' Please note that regular expressions are matched case-insensitive and multiple variables have to be separated by the pipe ('|') character. Please also note that in case you use WPKG-client the system-user environment might differ from the environment you see when opening a command prompt and typing 'set'. Some variables might be missing and others might have different content. So use with caution. Comma-separated list of LCID values to be matched against executing host (LCID seetting of executing user locale). A full list of LCIDs might be found at: http://www.microsoft.com/globaldev/reference/lcid-all.mspx Comma-separated list of LCID values to be matched against executing host (LCID setting of Windows install language). A full list of LCIDs might be found at: http://www.microsoft.com/globaldev/reference/lcid-all.mspx Use this type to specify a check for host attributes. Type of check. Set this tho "host" for host type checks. Set condition for host check. Regular expression to match the condition.