|  | @@ -7,7 +7,8 @@ uses
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const
 | 
	
		
			
				|  |  |    ProductName = 'Measure';
 | 
	
		
			
				|  |  | -  FileVersion = '1.0.0.0';
 | 
	
		
			
				|  |  | +  EmptyFileVersion = '1.0.0.0';
 | 
	
		
			
				|  |  | +  FileVersion = '1.0.0.1';
 | 
	
		
			
				|  |  |    EncryptVersion = 'Auto1.0';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  type
 | 
	
	
		
			
				|  | @@ -50,7 +51,9 @@ type
 | 
	
		
			
				|  |  |      CreateExeVersion: string[20];
 | 
	
		
			
				|  |  |      // 最后一次打开 -- Exe版本号
 | 
	
		
			
				|  |  |      LastestExeVersion: string[20];
 | 
	
		
			
				|  |  | -    Reserve: array [0..1024 - 21 - 21] of Char;
 | 
	
		
			
				|  |  | +    // 历史最大 -- exe版本号
 | 
	
		
			
				|  |  | +    MaxExeVersion: string[20];
 | 
	
		
			
				|  |  | +    Reserve: array [0..1024 -21 -21 -21] of Char;
 | 
	
		
			
				|  |  |    end;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    TEncryptConnection = class(TCommonConnection)
 | 
	
	
		
			
				|  | @@ -68,7 +71,8 @@ type
 | 
	
		
			
				|  |  |      procedure ResetFileHead;
 | 
	
		
			
				|  |  |      function CheckFileEncrypt: Boolean; overload;
 | 
	
		
			
				|  |  |      function CheckFileEncrypt(AFileName: string): Boolean; overload;
 | 
	
		
			
				|  |  | -    function GetIsLastest: Boolean;
 | 
	
		
			
				|  |  | +    function GetNeedUpdate: Boolean;
 | 
	
		
			
				|  |  | +    function GetOverExe: Boolean;
 | 
	
		
			
				|  |  |    public
 | 
	
		
			
				|  |  |      destructor Destroy; override;
 | 
	
		
			
				|  |  |      procedure Open(const AFileName: string); override;
 | 
	
	
		
			
				|  | @@ -76,7 +80,8 @@ type
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      procedure UpdateFileVersion;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    property IsLastest: Boolean read GetIsLastest;
 | 
	
		
			
				|  |  | +    property NeedUpdate: Boolean read GetNeedUpdate;
 | 
	
		
			
				|  |  | +    property OverExe: Boolean read GetOverExe;
 | 
	
		
			
				|  |  |    end;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    procedure SimpleDecrypt(const ASourceFile, AResultFile: string);
 | 
	
	
		
			
				|  | @@ -340,9 +345,10 @@ begin
 | 
	
		
			
				|  |  |      FFileHead.ProductName := ProductName;
 | 
	
		
			
				|  |  |      FFileHead.FileType := 1;
 | 
	
		
			
				|  |  |      FFileHead.EncryptVersion := EncryptVersion;
 | 
	
		
			
				|  |  | -    FFileHead.FileVersion := FileVersion;
 | 
	
		
			
				|  |  | +    FFileHead.FileVersion := EmptyFileVersion;
 | 
	
		
			
				|  |  |      FFileHead.CreateExeVersion := GetVersion;
 | 
	
		
			
				|  |  |      FFileHead.LastestExeVersion := GetVersion;
 | 
	
		
			
				|  |  | +    FFileHead.MaxExeVersion := GetVersion;
 | 
	
		
			
				|  |  |    end;
 | 
	
		
			
				|  |  |  end;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -359,6 +365,46 @@ begin
 | 
	
		
			
				|  |  |    FFileHead.LastestExeVersion := GetVersion;
 | 
	
		
			
				|  |  |  end;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +procedure TEncryptConnection.UpdateFileVersion;
 | 
	
		
			
				|  |  | +begin
 | 
	
		
			
				|  |  | +  FFileHead.FileVersion := FileVersion;
 | 
	
		
			
				|  |  | +end;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +procedure TEncryptConnection.RecoverFileHead(AFileName: string);
 | 
	
		
			
				|  |  | +var
 | 
	
		
			
				|  |  | +  sTempFile: string;
 | 
	
		
			
				|  |  | +  FileStream: TFileStream;
 | 
	
		
			
				|  |  | +begin
 | 
	
		
			
				|  |  | +  sTempFile := ExtractFilePath(AFileName) + ExtractSimpleFileName(AFileName) + '.tmp';
 | 
	
		
			
				|  |  | +  CopyFile(PChar(AFileName), PChar(sTempFile), False);
 | 
	
		
			
				|  |  | +  try
 | 
	
		
			
				|  |  | +    if FileExists(sTempFile) then
 | 
	
		
			
				|  |  | +    begin
 | 
	
		
			
				|  |  | +      FileStream := TFileStream.Create(sTempFile, fmOpenWrite);
 | 
	
		
			
				|  |  | +      try
 | 
	
		
			
				|  |  | +        FileStream.Seek($00, soFromBeginning);
 | 
	
		
			
				|  |  | +        FileStream.Write(MDBOrgHead, SizeOf(MDBOrgHead));
 | 
	
		
			
				|  |  | +      finally
 | 
	
		
			
				|  |  | +        FileStream.Free;
 | 
	
		
			
				|  |  | +      end;
 | 
	
		
			
				|  |  | +      CopyFile(PChar(sTempFile), PChar(AFileName), False);
 | 
	
		
			
				|  |  | +      DeleteFile(PChar(sTempFile));
 | 
	
		
			
				|  |  | +    end;
 | 
	
		
			
				|  |  | +  except
 | 
	
		
			
				|  |  | +    DeleteFile(PChar(sTempFile));
 | 
	
		
			
				|  |  | +  end;
 | 
	
		
			
				|  |  | +end;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function TEncryptConnection.GetNeedUpdate: Boolean;
 | 
	
		
			
				|  |  | +begin
 | 
	
		
			
				|  |  | +  Result := CompareCode(FileVersion, FFileHead.FileVersion, '.') > 0;
 | 
	
		
			
				|  |  | +end;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function TEncryptConnection.GetOverExe: Boolean;
 | 
	
		
			
				|  |  | +begin
 | 
	
		
			
				|  |  | +  Result := CompareCode(FileVersion, FFileHead.FileVersion, '.') < 0;
 | 
	
		
			
				|  |  | +end;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  { TConnection }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  procedure TConnection.Close;
 | 
	
	
		
			
				|  | @@ -416,39 +462,4 @@ begin
 | 
	
		
			
				|  |  |    FConnection.Open;
 | 
	
		
			
				|  |  |  end;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -function TEncryptConnection.GetIsLastest: Boolean;
 | 
	
		
			
				|  |  | -begin
 | 
	
		
			
				|  |  | -  Result := CompareCode(CurrencyString, FFileHead.FileVersion, '.') > 0;
 | 
	
		
			
				|  |  | -end;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -procedure TEncryptConnection.UpdateFileVersion;
 | 
	
		
			
				|  |  | -begin
 | 
	
		
			
				|  |  | -  FFileHead.FileVersion := CurrencyString;
 | 
	
		
			
				|  |  | -end;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -procedure TEncryptConnection.RecoverFileHead(AFileName: string);
 | 
	
		
			
				|  |  | -var
 | 
	
		
			
				|  |  | -  sTempFile: string;
 | 
	
		
			
				|  |  | -  FileStream: TFileStream;
 | 
	
		
			
				|  |  | -begin
 | 
	
		
			
				|  |  | -  sTempFile := ExtractFilePath(AFileName) + ExtractSimpleFileName(AFileName) + '.tmp';
 | 
	
		
			
				|  |  | -  CopyFile(PChar(AFileName), PChar(sTempFile), False);
 | 
	
		
			
				|  |  | -  try
 | 
	
		
			
				|  |  | -    if FileExists(sTempFile) then
 | 
	
		
			
				|  |  | -    begin
 | 
	
		
			
				|  |  | -      FileStream := TFileStream.Create(sTempFile, fmOpenWrite);
 | 
	
		
			
				|  |  | -      try
 | 
	
		
			
				|  |  | -        FileStream.Seek($00, soFromBeginning);
 | 
	
		
			
				|  |  | -        FileStream.Write(MDBOrgHead, SizeOf(MDBOrgHead));
 | 
	
		
			
				|  |  | -      finally
 | 
	
		
			
				|  |  | -        FileStream.Free;
 | 
	
		
			
				|  |  | -      end;
 | 
	
		
			
				|  |  | -      CopyFile(PChar(sTempFile), PChar(AFileName), False);
 | 
	
		
			
				|  |  | -      DeleteFile(PChar(sTempFile));
 | 
	
		
			
				|  |  | -    end;
 | 
	
		
			
				|  |  | -  except
 | 
	
		
			
				|  |  | -    DeleteFile(PChar(sTempFile));
 | 
	
		
			
				|  |  | -  end;
 | 
	
		
			
				|  |  | -end;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  end.
 |