Consistent approach to getting the product family and version

What I want to know is what product(e.g., Express, Professional or Corporate) and what version(i.e., 2017 R3) I am integrating with. I am currently calling server command service for this and have tried multiple SOAP actions, but different versions of the Milestone service give different response, or no response at all.

I have tried:

  • GetVersion - E-Code returns 3 and C-Code returns 1211. Have no idea what these numbers mean and have tried different releases of professional and it always returns 3.
  • GetProductInfo - E-Code doesn’t support this method
  • GetSystemLicenseInfo - Works on both C-Code and E-Code latest versions(2018 R1). But tried on Express 2016 and it didn’t return the ProductSku which is the field I was after.
  • GetServerVersion - E-Code doesn’t support this method

Is there a command I can call(or a series of calls) that will reliably give me the product family and version?

Try take a look at the ProductCode.

For component integration it is available on SystemLicense.ProductCode.

This field is build from information from SystemInfo.xml from E-Code products, and from GetProductInfo from C-Code products.

This will identify the product, but not the version - you will need help from the .net library to get version info.

What .net property allows you to get the version? there seems to be 2 different version numbers for example in the recorderconfig.xml … 2018 R2 seems to show as 12.2a in the management client and in recorderconfig but also the version is listed as 12.2.0.1 … can you confirm the proper way through the .net sdk to get the 12.2a version? we need to be able to differentiate installed versions for our application.

For the .NET library please see the following from the PTZandPresets sample -

private void CheckServerVersionForPTZManagement()
{
    List<Item> lServ = Configuration.Instance.GetItemsByKind(Kind.Server);
    Item server = lServ[0];
    //ProductVersion in XPE is formatted [0-9].[0-9][a-z] eg 8.5a
    //ProductVersion in XPCO is formatted [0-9].[0-9].[0-9].[0-9] eg 6.1.0.1
    //ServerType is Express = 250, Professional = 300, Enterprise = 400, ( Expert = 500, Corporate = 600 )
    //  - 440 - Essential+, 460 - Express +, 480 - Professional +
    string productVersionString = server.Properties["ProductVersion"];
    string servertypeString = server.Properties["ServerType"];

XPE means e-code and XPCO means c-code.