BUU Цитата: Всем привет, можно в inno setup сделать такое - при указании куда будет ставиться игра или программа, и установщик определял есть там файлы какие нибудь, запрет проще сказать, указал с файлами, нельзя, выбрал пустую, начал установку, спс заранее
[more=NotEmptyFile][Setup]
AppName=My Program
AppVersion=1.5
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DirExistsWarning=False
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
ru.NotEmptyFile=Папка установки не пустая, выберите другую!
[Code]
function FindFirstNotEmptyFile(FromDir: String; Mask: String): LongWord;
var
FSR, DSR: TFindRec; FindResult: Boolean;
begin
Result:=0;
FindResult:= FindFirst(AddBackslash(FromDir) + Mask, FSR);
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
Result:= FSR.SizeLow + FSR.SizeHigh;
if Result>0 then Exit;
FindResult:= FindNext(FSR);
end;
if (Result=0) then begin
FindResult:= FindFirst(AddBackslash(FromDir)+ '*.*', DSR);
while FindResult do begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then begin
Result:=FindFirstNotEmptyFile(AddBackSlash(FromDir)+DSR.Name, Mask);
break;
end;
FindResult:= FindNext(DSR);
end;
end;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:=True;
if CurPageID = wpSelectDir then
begin
if FindFirstNotEmptyFile(Trim(WizardForm.DirEdit.Text)+'\', '*.*')<>0 then
begin
MsgBox(ExpandConstant('{cm:NotEmptyFile}'), mbError, MB_OK);
Result:=False;
end;
end;
end;
[/more]
[more=NotEmptyFile2][Setup]
AppName=My Program
AppVersion=1.5
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
ru.NotEmptyFile=Папка установки не пустая, выберите другую!
[Code]
function FindFirstNotEmptyFile(FromDir: String; Mask: String): LongWord;
var
FSR, DSR: TFindRec; FindResult: Boolean;
begin
Result:=0;
FindResult:= FindFirst(AddBackslash(FromDir) + Mask, FSR);
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
Result:= FSR.SizeLow + FSR.SizeHigh;
if Result>0 then Exit;
FindResult:= FindNext(FSR);
end;
if (Result=0) then begin
FindResult:= FindFirst(AddBackslash(FromDir)+ '*.*', DSR);
while FindResult do begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then begin
Result:=FindFirstNotEmptyFile(AddBackSlash(FromDir)+DSR.Name, Mask);
break;
end;
FindResult:= FindNext(DSR);
end;
end;
end;
procedure DirEditOnChanged(Sender: TObject);
begin
case Sender of
WizardForm.DirEdit: begin
if FindFirstNotEmptyFile(Trim(WizardForm.DirEdit.Text)+'\', '*.*')<>0 then
begin
MsgBox(ExpandConstant('{cm:NotEmptyFile}'), mbError, MB_OK);
WizardForm.NextButton.Enabled:=False;
end;
end;
end;
end;
procedure InitializeWizard();
begin
WizardForm.DirEdit.OnChange:=@DirEditOnChanged;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpSelectDir: begin
DirEditOnChanged(WizardForm.DirEdit);
end;
end;
end;
[/more]