anchor.diff:    # authorEmail -- from kmp.inf
     # lastModifiedDate -- build time: this only gets refreshed when the version num increments so it's close enough then
     # packageFilename -- from $keyboard_info_packageFilename
  +  # packageFileSize -- get from the size of the file
     # jsFilename -- from $keyboard_info_jsFilename
  +  # jsFileSize -- get from the size of the file
  +  # documentationFileSize -- get from the size of the file
  +  # isRTL -- from .js, KRTL\s*=\s*1
     # encodings -- from .kmx (existence of .js implies unicode)
     # packageIncludes -- from kmp.inf?
     # version -- from kmp.inf, js
  
positive.code:     CheckOrAddPackageFilename;
      CheckOrAddJsFilename;
      CheckOrAddEncodings;
      AddPackageIncludes;
      CheckOrAddMinKeymanDesktopVersion;
      AddPlatformSupport;
  
negative.code:   if FKMPFile = '' then
      Exit(True);
  
    if not SameText(ExtractFileExt(FKMPFile), '.kmp') then
      Exit(Failed('packageFile must be a .kmp file '+FKMPFile));
  
    try
      Zip := TZipFile.Create;
  