Цитата: То есть в данном виде он не работает как надо, то есть не находит ехе-файл по маске.
Цитата: Используй связку FindFirst, FindNext, FindClose.
Делал для себя - Получение списка файлов в папке, подсчет количества, удаление с отображением на прогрессбаре:
[more=код]
Код: ; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Code*]
var
UnInstPage: TWizardPage;
fIleCount: TLabel;
FileList: TNewListBox;
UninsProgress: TNewProgressBar;
OkButton,BrowseButton,UninsBtn: TNewButton;
BrowseEdit: TNewEdit;
ExtractTimer: TTimer;
Step:Integer;
procedure UpdPos(lpStep: Integer);
var k: Integer;
begin
for k:=1 to lpStep div 2 do begin
UninsProgress.Position:= UninsProgress.Position+1;
UninsProgress.Refresh;
end;
end;
procedure Extracted(Sender: TObject);
var
i: Integer;
begin
for I:=0 to FileList.Items.Count-1 do begin
UpdPos(Step);
DeleteFile(FileList.Items.Strings
);
UpdPos(Step);
UninsProgress.Position:= Step*(i+1);
end;
UninsProgress.Position:=UninsProgress.Max;
UninsProgress.Refresh;
DelTree(BrowseEdit.Text,True,True,True);
Sleep(500);
ExtractTimer.Enabled:=False;
end;
procedure GetAllFiles(Path: string; Lb: TNewListBox);
var
sRec: TFindRec;
isFound: boolean;
begin
isFound := FindFirst(Path +'\*.*',sRec);
while isFound do
begin
if (sRec.Name <> '.') and (sRec.Name <> '..') then
begin
if (sRec.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY then
GetAllFiles(Path + '\' + sRec.Name, Lb);
Lb.Items.Add(Path + '\' + sRec.Name);
fIleCount.Caption:= 'Количество файлов:'+ IntToStr(FileList.Items.Count);
end;
Application.ProcessMessages;
isFound := FindNext(sRec);
end;
FindClose(sRec);
end;
procedure BrowseEditChange(Sender: TObject);
begin
OkButton.Enabled:= BrowseEdit.Text<>'';
end;
procedure BrowseButtonClick(Sender: TObject);
var
pach:String;
begin
if BrowseForFolder('',pach,False)then
BrowseEdit.Text:=pach;
BrowseEditChange(nil);
end;
procedure OkButtonClick(Sender: TObject);
begin
FileList.Clear;
fIleCount.Caption:= 'Количество файлов:';
GetAllFiles(BrowseEdit.Text, FileList );
if FileList.Items.Count>0 then
Step:= 1000 div FileList.Items.Count;
UninsBtn.Enabled:=true;
end;
procedure UninsBtnClick(Sender: TObject);
begin
ExtractTimer.Enabled:=True;
end;
procedure InitializeWizard();
begin
{ Creates custom wizard page }
UnInstPage := CreateCustomPage(wpWelcome, 'Список файлов для удаления', 'Нажмите конпку Ок, чтобы получить список файлов');
{ fIleCount }
fIleCount := TLabel.Create(WizardForm);
with fIleCount do
begin
Parent := UnInstPage.Surface;
Alignment := taCenter;
AutoSize := False;
Caption := 'Количество файлов:';
SetBounds(ScaleX(104),ScaleY(190),ScaleX(161),ScaleY(13));
end;
{ FileList }
FileList := TNewListBox.Create(WizardForm);
with FileList do
begin
Parent := UnInstPage.Surface;
SetBounds(ScaleX(0),ScaleY(24),ScaleX(417),ScaleY(160));
ItemHeight := 13;
ItemIndex := -1;
end;
{ UninsProgress }
UninsProgress := TNewProgressBar.Create(WizardForm);
with UninsProgress do
begin
Parent := UnInstPage.Surface;
SetBounds(ScaleX(0),ScaleY(3),ScaleX(417),ScaleY(17));
Max:=1000;
end;
{ OkButton }
OkButton := TNewButton.Create(WizardForm);
with OkButton do
begin
Parent := UnInstPage.Surface;
SetBounds(ScaleX(3),ScaleY(190),ScaleX(43),ScaleY(45));
Caption := 'Ок';
OnClick := @OkButtonClick;
end;
{ BrowseEdit }
BrowseEdit := TNewEdit.Create(WizardForm);
with BrowseEdit do
begin
Parent := UnInstPage.Surface;
SetBounds(ScaleX(48),ScaleY(214),ScaleX(290),ScaleY(21));
OnChange := @BrowseEditChange;
end;
{ BrowseButton }
BrowseButton := TNewButton.Create(WizardForm);
with BrowseButton do
begin
Parent := UnInstPage.Surface;
SetBounds(ScaleX(342),ScaleY(212),ScaleX(75),ScaleY(23));
Caption := 'Обзор';
OnClick := @BrowseButtonClick;
end;
{ UninsBtn }
UninsBtn := TNewButton.Create(WizardForm);
with UninsBtn do
begin
Parent := UnInstPage.Surface;
SetBounds(ScaleX(312),ScaleY(185),ScaleX(105),ScaleY(23));
Caption := 'Удаление';
OnClick := @UninsBtnClick;
Enabled:=False;
end;
ExtractTimer := TTimer.Create(WizardForm);
with ExtractTimer do begin
Interval := 100;
OnTimer := @Extracted;
Enabled:=False;
end;
BrowseEditChange(nil);
end;