innosetupスクリプトのアンインストール部分で、最後の10分以内に特定のファイルの最終更新日時が発生したかどうかをチェックしたいと思います。ファイルを最後に更新した時刻をパスカル(innosetup)で取得する
誰もがこれに対応するinnosetup対応のパスカルコードを知っていますか?
innosetupスクリプトのアンインストール部分で、最後の10分以内に特定のファイルの最終更新日時が発生したかどうかをチェックしたいと思います。ファイルを最後に更新した時刻をパスカル(innosetup)で取得する
誰もがこれに対応するinnosetup対応のパスカルコードを知っていますか?
これをサポートする唯一の方法は、DLLを使用してアンインストールにリンクすることです。
必要な機能を持つDLLを作成する必要があります。
デフォルトのINNOSetupインストールには、DLLの呼び出し方法の例があります。その後、それは簡単でなければなりません。
あなたがDLLを書くことができる限り。
HTH、 Ryan。
Windows API関数GetFileAttributesEx
を使用して、最終変更日を取得することができます。セクションでは、動作するはずですあなたの[CODE]でこれを置く:
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 '[email protected] stdcall';
function FileTimeToSystemTime(
FileTime: FILETIME;
var SystemTime: SYSTEMTIME
): Boolean;
external '[email protected] stdcall';
あなたはこのようなあなたのインストーラプロジェクトのInitializeWizard機能を変更することによって、それをテストすることができます:私のシステム(XP SP3)で
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;
、メッセージボックスは言う:2008-08-04
これは間違っています。 InnoSetupは、ほとんどのWindows API関数のインポートを容易にサポートします。 – Ilya