/// <summary>
                                      /// Returns the best suitable package binaries for this application - packages that match the specified OS
                                      /// </summary>
                                      /// <param name="os">OS to match</param>
                                      /// <returns>Best suitable packages</returns>
                                      public IEnumerable <AppPackage> MatchPackageBinaries(string os)
                                      {
                                          var platform = Metabank.GetOSPlatformName(os);

                                          var result = new List <AppPackage>();

                                          foreach (var ap in Packages)
                                          {
                                              var match = Metabank.CatalogBin.Packages.Where(pi => Metabank.INVSTRCMP.Equals(pi.Name, ap.Name) &&
                                                                                             Metabank.INVSTRCMP.Equals(pi.Version, ap.Version) &&
                                                                                             (pi.IsAnyPlatform || Metabank.INVSTRCMP.Equals(pi.Platform, platform)) &&
                                                                                             (pi.IsAnyOS || Metabank.INVSTRCMP.Equals(pi.OS, os))
                                                                                             ).OrderBy(pi => - pi.Specificity).FirstOrDefault();//highest first
                                              if (match == null)
                                              {
                                                  throw new MetabaseException(StringConsts.METABASE_APP_DOES_NOT_HAVE_MATCHING_BIN_ERROR.Args(Name, ap.Name, ap.Version, os));
                                              }

                                              result.Add(new AppPackage(ap, match));
                                          }
                                          return(result);
                                      }