Zloy_Gelud У тебя получается цикл, при котором, если ты выберешь диск "C:" то у тебя он приостановится, а если ты выберешь диск "D:", то
Цитата: if (tPath.Drive.."\\" ~= cDriveLetter) then
сначала сверится с диском С и так как возвращается в данном случае true, то и выходит один раз сообщение
Цитата: Dialog.Message("Ошибка", "Установка на этот диск не возможна.", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
Если же ты выбираешь другой диск, отличный от своих локальных, то у тебя будет два раза выводится сообщение, так как цикл два раза проверит и два раза условия будут true и поэтому выводится два раза сообщение.
делай так:
Код: local sPath = Input.GetText("Install Directory Entry"); -- путь установки
local tPath = String.SplitPath(sPath); -- разлаживаем путь...
local cDrive = String.Left(sPath, 3); -- первые 3 знака в пути установки
tDrives = Drive.Enumerate(); -- таблица дисков
-- если буква диска не получена или третий символ в пути установки не является слэшем или путь установки менее 3 знаков
if (tPath.Drive == "") or (String.Right(cDrive, 1) ~= "\\") or (String.Length(sPath) <= 3) then
Dialog.Message("Ошибка", "Вы должны указать полный путь с буквой диска; например:\r\n\nC:\\APP", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
else
for i, cDriveLetter in tDrives do -- перебитаем в цикле по одному диску
if (Drive.GetType(tPath.Drive) == 3) then
else
Dialog.Message("Ошибка", "Установка на этот диск не возможна.", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
break;
end
end
end