let greater required =
  let current =
    let v = Cam_installation.software_version in
    try
      let p = String.index v  '+' in
      String.sub v 0 p
    with Not_found -> v
  in
  let f s =
    try
      let p = String.index_from s 0 '.' in
      let major = int_of_string (String.sub s 0 p) in
      try
        let p2 = String.index_from s (p+1) '.' in
        let minor = int_of_string (String.sub s (p+1) (p2 - p - 1)) in
        try
          let len = String.length s in
          let add = int_of_string (String.sub s (p2+1) (len - p2 - 1)) in
          (major, minor, add)
        with
          _ ->
            (major, minor, 0)
      with
        _ ->
          (major, 0, 0)
    with _ -> (0,0,0)
  in
  let (major,minor,add) = f current in
  let (major_r, minor_r, add_r) = f required in
  if major > major_r or
    (major = major_r && (minor > minor_r or
                         (minor = minor_r && add >= add_r))) then
    exit 0
  else
    exit 1