code: private ProjectFile handleDosExeFile(InputStream stream) throws Exception
     {
        File file = InputStreamHelper.writeStreamToTempFile(stream, ".tmp");
        InputStream is = null;
  
        try
        {
           is = new FileInputStream(file);
           if (is.available() > 1350)
           {
              StreamHelper.skip(is, 1024);
  
              // Bytes at offset 1024
              byte[] data = new byte[2];
              is.read(data);
  
              if (matchesFingerprint(data, WINDOWS_NE_EXE_FINGERPRINT))
              {
                 StreamHelper.skip(is, 286);
  
                 // Bytes at offset 1312
                 data = new byte[34];
                 is.read(data);
                 if (matchesFingerprint(data, PRX_FINGERPRINT))
                 {
                    is.close();
                    is = null;
                    return readProjectFile(new P3PRXFileReader(), file);
                 }
              }
  
              if (matchesFingerprint(data, STX_FINGERPRINT))
              {
                 StreamHelper.skip(is, 31742);
                 // Bytes at offset 32768
                 data = new byte[4];
                 is.read(data);
                 if (matchesFingerprint(data, PRX3_FINGERPRINT))
                 {
                    is.close();
                    is = null;
                    return readProjectFile(new SureTrakSTXFileReader(), file);
                 }
              }
           }
           return null;
        }
  
        finally
        {
           StreamHelper.closeQuietly(is);
           FileHelper.deleteQuietly(file);
        }
     }
docs: This could be a self-extracting archive. If we understand the format, expand
  it and check the content for files we can read.
  
  @param stream schedule data
  @return ProjectFile instance