anchor.diff:  
     CheckForDangerousFiles;
     CheckKeyboardVersions;
  -
  -  if pack.KPSOptions.FollowKeyboardVersion then
  -  begin
  -    if pack.Keyboards.Count = 0 then
  -    begin
  -      FatalMessage('The option "Follow Keyboard Version" is set but there are no keyboards in the package.');
  -      Exit;
  -    end;
  -
  -    FPackageVersion := pack.Keyboards[0].Version;
  -
  -    for i := 1 to pack.Keyboards.Count - 1 do
  -      if pack.Keyboards[i].Version <> FPackageVersion then
  -      begin
  -        FatalMessage(
  -          'The option "Follow Keyboard Version" is set but the package contains more than one keyboard, '+
  -          'and the keyboards have mismatching versions.');
  -        Exit;
  -      end;
  -  end
  -  else
  -    FPackageVersion := pack.Info.Desc[PackageInfo_Version];
   
     GetTempPath(260, buf);
     FTempPath := buf;
  
positive.code: 
      FOutputFileName: string;
      FTempFiles: TTempFiles;
      FPackageVersion: string;
  
      procedure FatalMessage(const msg: string);
      procedure WriteMessage(AState: TProjectLogState; const msg: string);   // I4706
  
negative.code:     { Create KMP.INF and KMP.JSON }
  
      kmpinf.Assign(pack);
  
      // Add keyboard information to the package 'for free'
      // Note: this does not get us very far for mobile keyboards as
  