Inno setup 使用pascal(innosetup)获取上次更新的文件
在innosetup脚本的卸载部分,我想添加一个检查,查看特定文件的上次更新日期时间是否发生在最近10分钟内Inno setup 使用pascal(innosetup)获取上次更新的文件,inno-setup,pascal,Inno Setup,Pascal,在innosetup脚本的卸载部分,我想添加一个检查,查看特定文件的上次更新日期时间是否发生在最近10分钟内 有人知道这方面的innosetup兼容pascal代码吗?目前支持这一点的唯一方法是使用DLL并将其链接到卸载 您必须编写具有所需功能的DLL 默认的INNOSetup安装有一些示例,演示如何调用DLL。在那之后,它应该是简单的 只要你能写一个DLL 嗯,, Ryan。目前支持此功能的唯一方法是使用DLL并将其链接到卸载 您必须编写具有所需功能的DLL 默认的INNOSetup安装有一些
有人知道这方面的innosetup兼容pascal代码吗?目前支持这一点的唯一方法是使用DLL并将其链接到卸载 您必须编写具有所需功能的DLL 默认的INNOSetup安装有一些示例,演示如何调用DLL。在那之后,它应该是简单的 只要你能写一个DLL 嗯,,
Ryan。目前支持此功能的唯一方法是使用DLL并将其链接到卸载 您必须编写具有所需功能的DLL 默认的INNOSetup安装有一些示例,演示如何调用DLL。在那之后,它应该是简单的 只要你能写一个DLL 嗯,,
Ryan。您可以使用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:\ntldr',
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
您可以使用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:\ntldr',
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
这是不正确的。InnoSetup支持轻松导入大多数Windows API函数。这是不正确的。InnoSetup支持轻松导入大多数Windows API函数。