Вопрос Установка только на жесткий диск с NTFS (не работает на unicode)

Alloc

Новичок
Приветствую! Собственно сабж.

Код:
[Setup]
AppName=MyApp
AppVername=MyApp
DefaultDirName={pf}\MyApp

[code]
#ifdef UNICODE
  #define A "W"
#else
  #define A "A"
#endif

function GetVolumeInformation(PathName, VolumeName: PAnsiChar; VolumeNameSize, VolumeSerialNumber, MaxComponentLength, FileSystemFlags: Longint; FileSystemName: PAnsiChar; FileSystemNameSize: Longint): Longint;
  external 'GetVolumeInformation{#A}@kernel32.dll stdcall';

function NextButtonClick(CurPageID: Integer): Boolean;
var VolumeName, FileSystemName: String;
    VolumeSerialNo, MaxComponentLength, FileSystemFlags: Longint;
begin
  Result := True;
  if CurPageID = wpSelectDir then begin
    FileSystemName:= StringOfChar(' ', 32); VolumeName:= StringOfChar(' ', 256);
    GetVolumeInformation(PAnsiChar(ExtractFileDrive(WizardForm.DirEdit.Text)+'\'), PAnsiChar(VolumeName), 255, VolumeSerialNo, MaxComponentLength, FileSystemFlags, PAnsiChar(FileSystemName), 31);
    if Pos('NTFS', FileSystemName)=0 then begin
      MsgBox('Установка данного продукта возможна только на диск с файловой системой NTFS.'#13'Пожалуйста, измените путь установки.', mbError, mb_Ok);
      Result := False ;
    end;
  end;
end;
этот код не работает на unicode версии. Как это можно исправить?
 

SBalykov

Старожил
Приветствую! Собственно сабж.

Код:
[Setup]
AppName=MyApp
AppVername=MyApp
DefaultDirName={pf}\MyApp

[code]
#ifdef UNICODE
  #define A "W"
#else
  #define A "A"
#endif

function GetVolumeInformation(PathName, VolumeName: PAnsiChar; VolumeNameSize, VolumeSerialNumber, MaxComponentLength, FileSystemFlags: Longint; FileSystemName: PAnsiChar; FileSystemNameSize: Longint): Longint;
  external 'GetVolumeInformation{#A}@kernel32.dll stdcall';

function NextButtonClick(CurPageID: Integer): Boolean;
var VolumeName, FileSystemName: String;
    VolumeSerialNo, MaxComponentLength, FileSystemFlags: Longint;
begin
  Result := True;
  if CurPageID = wpSelectDir then begin
    FileSystemName:= StringOfChar(' ', 32); VolumeName:= StringOfChar(' ', 256);
    GetVolumeInformation(PAnsiChar(ExtractFileDrive(WizardForm.DirEdit.Text)+'\'), PAnsiChar(VolumeName), 255, VolumeSerialNo, MaxComponentLength, FileSystemFlags, PAnsiChar(FileSystemName), 31);
    if Pos('NTFS', FileSystemName)=0 then begin
      MsgBox('Установка данного продукта возможна только на диск с файловой системой NTFS.'#13'Пожалуйста, измените путь установки.', mbError, mb_Ok);
      Result := False ;
    end;
  end;
end;
этот код не работает на unicode версии. Как это можно исправить?
Неужели кто-то еще использует FAT32?
Попробуй добавить:
Код:
[code]
type
#ifdef UNICODE
PChar = PAnsiChar;
#endif
 
Последнее редактирование:
Сверху