2013-06-14 5 views
2
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'; 

procedure InitializeWizard(); 
    var 
     FileInformation: WIN32_FILE_ATTRIBUTE_DATA; 
     SystemInfo: SYSTEMTIME;  
begin 
    GetFileAttributesEx('C:\Users\Gangadhar\Desktop\white_plain.gif', GetFileExInfoStandard , FileInformation); 

    FileTimeToSystemTime(FileInformation.LastWriteTime, SystemInfo); 

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

Inno 설치 프로그램을 사용하여 설치 프로그램을 만들 때 설치 프로그램에 몇 가지 사항을 추가해야합니다. 이 코드를 통해 파일의 마지막 수정 날짜를 찾을 수 있지만 설치 프로그램을 실행하는 동안 파일 이름을 입력으로 지정하려고합니다. 여기를 참조하십시오.설정을 실행하는 동안 코드 섹션의 파일 이름을 입력으로 가져 옵니까?

GetFileAttributesEx ('C : \ Users \ Gangadhar \ Desktop \ white_plain.gif', GetFileExInfoStandard, FileInformation);

이 파일에서 매개 변수로 filename을 전달했습니다. 설치 프로그램을 실행하는 동안이 파일 이름을 선택하고 대상 폴더 마법사를 선택한 다음 선택한 파일 이름을 매개 변수로 위 함수에 전달합니다.

어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

당신이 * 무엇을 의미합니까를 : 사용자가 파일 선택을 취소하면, 그들은 시작 페이지에 남아있을 것입니다 ? 파일 대화 상자를 열고 사용자가 파일을 선택하고 선택한 파일 이름을 함수에 전달하게 하시겠습니까? 그리고 언제 그걸하고 싶니? – TLama

+0

@ TLama wpwelcome wizard – Gangadhar

답변

3

사용자가 기존 파일을 선택할 수있는 대화 상자를 표시하는 GetOpenFileName 함수를 찾고 있습니다. 다음 스크립트는 사용자가 시작 페이지를 떠날 때이 대화 상자를 표시하는 방법을 보여줍니다. * 설치 프로그램을 실행하는 동안이 파일 이름을 선택하면 월이 도움이

[Code] 
function NextButtonClick(CurPageID: Integer): Boolean; 
var 
    FileName: String; 
begin 
    // allow users to go through the wizard by default 
    Result := True; 
    // if the user is going to leave the welcome page, then... 
    if CurPageID = wpWelcome then 
    begin 
    // set the initial file name 
    FileName := ''; 
    // open the file dialog; if the user cancels it, they will stay at 
    // the welcome page (I don't know if it's your intention though) 
    Result := GetOpenFileName('Select the file to check', FileName, '', 
     'GIF Files (*.gif)|*.gif|All Files|*.*', ''); 
    // if the user selected a file, then do whatever you want with it 
    if Result then 
    begin 
     // you got the file name in FileName variable 
    end; 
    end; 
end; 
+0

죄송합니다. 귀하의 요구 사항을 얻지 못했습니다. 앞의 주석에서 환영 페이지 다음에 열린 파일 대화 상자를 표시한다고 말한 것입니다. 그것이이 스크립트가하는 것입니다. 스크립트 안의 주석은 코드의 나머지 부분을 어디에 넣어야하는지 명확하게 말해 주므로, 그 조합의 의미를 알지 못합니다. – TLama

+0

환영 페이지 다음에이 설치 프로그램에서 어떤 파일을 선택하고 다음을 클릭하면 선택한 파일을 마지막으로 수정 한 날짜를 msg 상자에 표시해야합니다. 스크립트의 구성 요소를 처음부터 살펴 보았습니다. 변경 사항을 적용하지 않은 후에 변경 사항을 적용하지 않았습니다. 현재이 작업이 현재 진행 중입니다. 대단히 감사합니다 – Gangadhar

+0

당신을 환영합니다! – TLama

0

전체 스크립트

#define MyAppName "showing the last modified date of selected file or directory" 
#define MyAppVersion "1.5" 
#define MyAppPublisher "My company" 
#define MyAppURL "http://www.example.com/" 
;#define MyAppExeName "MyProg.exe" 

[Setup] 
; NOTE: The value of AppId uniquely identifies this application. 
; Do not use the same AppId value in installers for other applications. 
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 
AppId={{CD4CCA6A-5495-4132-98EE-44BC071E850B} 
AppName={#MyAppName} 
AppVersion={#MyAppVersion} 
;AppVerName={#MyAppName} {#MyAppVersion} 
AppPublisher={#MyAppPublisher} 
AppPublisherURL={#MyAppURL} 
AppSupportURL={#MyAppURL} 
AppUpdatesURL={#MyAppURL} 
CreateAppDir=no 
DisableDirPage=yes 
DisableProgramGroupPage=yes 
OutputDir=C:\Users\Gangadhar\Desktop\showing last modified date 
OutputBaseFilename=last modified date of any file 
Compression=lzma 
SolidCompression=yes 
DisableFinishedPage=yes 

[Messages] 
buttoninstall=&Close Application 
[Languages] 
Name: "english"; MessagesFile: "compiler:Default.isl" 


[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; 

var 
    FileInformation: WIN32_FILE_ATTRIBUTE_DATA; 
     FileName: String; 
     SystemInfo: SYSTEMTIME; 



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'; 



function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, 
MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String; 
var 
    S: String; 
    Months,days:tarrayofstring; 
    i:integer; 
begin 
i:=0; 
Months:=['January','February','March','April','May','June','July','August','September','October','November','December']; 
Days:=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; 
S:='';  //Modified: 22 ?June ?2013, ??04:14:00 PM ?24 ?June ?2013, ??02:38:18 PM 
S:=S+Newline; 
S:=S+'Selected Filename :'+Newline+Filename+Newline+Newline; 
S:=S+'Last modified date of Selected file is: ' ; 
for i:=0 to 6 do 
begin 
if SystemInfo.DayOfWeek=i then 
S:=S+Days[i]+', '; 
end; 

S:=S+inttostr(SystemInfo.Day)+'-'; 
//January February March April May June July August September October November December 
for i:=0 to 11 do 
begin 
if SystemInfo.Month=i+1 then 
S:=S+Months[i]; 
end; 

S:=S+'-'+inttostr(SystemInfo.Year); 
Result:=S; 
end; 




function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    // allow users to go through the wizard by default 
    Result := True; 
    // if the user is going to leave the welcome page, then... 
    if CurPageID = wpWelcome then 
    begin 
    // set the initial file name 
    FileName := ''; 
    // open the file dialog; if the user cancels it, they will stay at 
    // the welcome page (I don't know if it's your intention though) 
    Result := GetOpenFileName('Select the file to check', FileName, '', 
     'ALL Files (*.*)|*.*|All Files|*.*', ''); 
    // if the user selected a file, then do whatever you want with it 
    if Result then 
    begin 
    GetFileAttributesEx(format('%s', [FileName]), GetFileExInfoStandard , FileInformation); 
    FileTimeToSystemTime(FileInformation.LastWriteTime, SystemInfo); 

    // MsgBox(format('LAST MODIFIED DATE OF SELECTED FILE IS : %2.d-%2.2d-%4.4d', [SystemInfo.Day, SystemInfo.Month, SystemInfo.Year]), mbInformation, MB_OK); 
     // you got the file name in FileName variable 
    end; 
    end; 
end;