2009-04-15 36 views

答えて

0

これをサポートする唯一の方法は、DLLを使用してアンインストールにリンクすることです。

必要な機能を持つDLLを作成する必要があります。

デフォルトのINNOSetupインストールには、DLLの呼び出し方法の例があります。その後、それは簡単でなければなりません。

あなたがDLLを書くことができる限り。

HTH、 Ryan。

+0

これは間違っています。 InnoSetupは、ほとんどのWindows API関数のインポートを容易にサポートします。 – Ilya

5

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

関連する問題