English 中文(简体)
得到一个文件最后更新时间使用pascal (innosetup)
原标题:
  • 时间:2009-04-15 01:17:06
  •  标签:

卸载一个innosetup脚本的一部分,我想添加一个检查一个特定的文件年代最后更新日期时间发生在最后10分钟。

有人知道innosetup对照表帕斯卡代码?

问题回答

您可以使用Windows API函数<代码> GetFileAttributesEx > < /代码的最后修改日期。把这个(代码)中的部分工作:

const
    GetFileExInfoStandard = $0;

type 
    FILETIME = record 
      LowDateTime:  DWORD; 
      HighDateTime: DWORD; 
    end; 

    WIN32_FILE_ATTRIBUTE_DATA = record 
      FileAttributes: DWORD; 
      CreationTime:   FILETIME; 
      LastAccessTime: FILETIME; 
      LastWriteTime:  FILETIME; 
      FileSizeHigh:   DWORD; 
      FileSizeLow:    DWORD; 
    end; 

    SYSTEMTIME = record 
      Year:         WORD; 
      Month:        WORD; 
      DayOfWeek:    WORD; 
      Day:          WORD; 
      Hour:         WORD; 
      Minute:       WORD; 
      Second:       WORD; 
      Milliseconds: WORD; 
    end; 

function GetFileAttributesEx (
    FileName:            string;  
    InfoLevelId:         DWORD; 
    var FileInformation: WIN32_FILE_ATTRIBUTE_DATA
    ): Boolean; 
external  GetFileAttributesExA@kernel32.dll stdcall ; 

function FileTimeToSystemTime(
    FileTime:        FILETIME; 
    var SystemTime:  SYSTEMTIME
    ): Boolean; 
external  FileTimeToSystemTime@kernel32.dll stdcall ; 

你可以测试它通过修改安装项目的InitializeWizard功能如下:

procedure InitializeWizard();
    var 
      FileInformation: WIN32_FILE_ATTRIBUTE_DATA; 
      SystemInfo: SYSTEMTIME;     
begin
    GetFileAttributesEx(
         c:
tldr , 
        GetFileExInfoStandard , 
        FileInformation); 

    FileTimeToSystemTime(
        FileInformation.LastWriteTime, 
        SystemInfo); 

    MsgBox(
        format(
             %4.4d-%2.2d-%2.2d , 
            [SystemInfo.Year, SystemInfo.Month, SystemInfo.Day]),
        mbInformation, MB_OK);
end;

在我的系统(XP SP3),弹出窗口说:<代码> 2008-08-04 < /代码>

目前支持这个的唯一方法是使用一个DLL链接到你的卸载。

您必须编写DLL,拥有你想要的功能。

默认INNOSetup安装示例向您展示如何调用dll。之后,它应该是简单的。

只要你能写一个DLL。

HTH, Ryan.





相关问题
热门标签