Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 517
Благодарности: 314

Профиль | Отправить PM | Цитировать


Johny777, спасибо. Склеил простенький скрипт на проверку файловой системы с выводом имени оной в TNewStaticText на SelectDirPage Может, кому сгодится:
читать дальше »
Код: Выделить весь код
#ifdef UNICODE
    #define A "W"
#else
    #define A "A"
#endif

[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
OutputDir=.

[Code]
const
  MAX_PATH           = 260;
  TARGET_FILE_SYSTEM = 'NTFS';

function GetVolumeInformation(lpRootPathName: String; lpVolumeNameBuffer: String; nVolumeNameSize: DWORD; lpVolumeSerialNumber: DWORD; var lpMaximumComponentLength, lpFileSystemFlags: DWORD; lpFileSystemNameBuffer: String; nFileSystemNameSize: DWORD): BOOL; external 'GetVolumeInformation{#A}@kernel32.dll stdcall';

var
  FileSystemLabel, FileSystemLabel2: TNewStaticText;

function ExtractFileSystemName(const DriveLetter: string): string;
var
  VolumeName, FileSystemName: String;
  ComponentLength, SerialNumber, FileSystemFlags: DWORD;
begin
  VolumeName := StringOfChar(#32, MAX_PATH);
  FileSystemName := StringOfChar(#32, MAX_PATH);
  DriveLetter := AddBackslash( ExtractFileDrive(WizardDirValue()) );
  GetVolumeInformation(DriveLetter, VolumeName, MAX_PATH, SerialNumber, ComponentLength, FileSystemFlags, FileSystemName, MAX_PATH);
  Result := Trim(FileSystemName);
end;

procedure ObjectOnChange(Sender: TObject);
var
FileSystemType: String;
begin
  case TEdit(Sender) of
    WizardForm.DirEdit:
    begin
      FileSystemLabel2.Caption := ExtractFileSystemName(FileSystemType);
      WizardForm.NextButton.Enabled := (ExtractFileSystemName(FileSystemType) = TARGET_FILE_SYSTEM);
      if ExtractFileSystemName(FileSystemType) = TARGET_FILE_SYSTEM then
      FileSystemLabel2.Font.Color := clBlack else FileSystemLabel2.Font.Color := clRed;
    end;
  end;
end;

procedure InitializeWizard();
begin
  with WizardForm do
  begin
    DirEdit.OnChange := @ObjectOnChange;
    FileSystemLabel := TNewStaticText.Create(nil);
    with FileSystemLabel do
    begin
      Parent := SelectDirPage;
      SetBounds(WizardForm.DiskSpaceLabel.Left, WizardForm.DiskSpaceLabel.Top - 18, 0, 0);
      AutoSize := True;
      Caption := 'Файловая система:';
    end;

    FileSystemLabel2 := TNewStaticText.Create(nil);
    with FileSystemLabel2 do
    begin
      Parent := SelectDirPage;
      SetBounds(FileSystemLabel.Left + 100, FileSystemLabel.Top, 0, 0);
      AutoSize := True;
    end;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
    wpSelectDir: ObjectOnChange(WizardForm.DirEdit);
  end;
end;

Последний раз редактировалось saurn, 30-04-2013 в 12:38.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:28, 30-04-2013 | #315