Вопрос DwinsHs (Downloader for Inno Setup)

Cyberworm

Новичок
Решил протестировать сторонний загрузчик для Inno Setup от Han-soft, но что-то пошло не так. Понятное дело, что начиная с Inno Setup 6.1 имеется встроенная поддержка загрузки. Скрипт DwinsHs предлагает некоторые функции, которых нет во встроенной версии, такие как поддержка FTP и зеркальных источников. Помимо этого у DwinsHs уже есть готовая оптимизация под Modern UI, чего не скажешь относительно древнего плагина Inno Download Plugin (у которого плывут компоненты при увеличении интерфейса). Так вот, на расширенной версии Inno Setup VCL постоянно вылетает данная ошибка:
DwinsHs.png
Для этого расширения от Han-soft нужна китайская расширенная версия Inno Setup или изначально что-то с ним не так? Чуть ниже скинул архив с двумя примерами.
 

Вложения

Хамик

Старожил
Ошибка говорит, что тип Tmsg продублирован, то есть этот тип уже ранее объявлен. Удалите его или лучше закомментируйте строки с 45 по 53.
 

Leserg

Участник
расширенной версии Inno Setup VCL постоянно вылетает данная ошибка
В Inno Setup VCL тип TMsg уже объявлен как:
code_language.pascal:
type
  TMsg = record
    hwnd: HWND;
    message: LongWord;
    wParam: LongInt;
    lParam: LongInt;
    time: LongWord;
    pt: TPoint;
  end;
Вам компилятор говорит "Duplicate Identifier 'TMsg'" - повтор идентификатора 'TMsg'.
Т.е. надо в dwinshs.iss закомментировать блок кода с объявлением типа TMsg.
code_language.pascal:
//type
//  TMsg = record
//    hWnd: HWnd;
//    Msg: LongInt;
//    wParam: LongInt;
//    lParam: LongInt;
//    Time: LongInt;
//    Pt: TPoint;
//  end;
И сделать изменения в процедуре DwinsHs_ProcessMessages():
вместо Msg.Msg записать Msg.message.

А можно попробовать переименовать TMsg (по всему коду dwinshs.iss) во что-то другое, например в TMsg1 и т.п.

В архиве с Inno Setup VCL поставляется файл SupportClasses.txt, где перечислены все поддерживаемые классы.
Если компилятор выдает сообщение о дубликате, то просто проверьте его наличие в SupportClasses.txt. Если таковой имеется, то подкорректируйте код.
 

Cyberworm

Новичок
В Inno Setup VCL тип TMsg уже объявлен как:
code_language.pascal:
type
  TMsg = record
    hwnd: HWND;
    message: LongWord;
    wParam: LongInt;
    lParam: LongInt;
    time: LongWord;
    pt: TPoint;
  end;
Вам компилятор говорит "Duplicate Identifier 'TMsg'" - повтор идентификатора 'TMsg'.
Т.е. надо в dwinshs.iss закомментировать блок кода с объявлением типа TMsg.
code_language.pascal:
//type
//  TMsg = record
//    hWnd: HWnd;
//    Msg: LongInt;
//    wParam: LongInt;
//    lParam: LongInt;
//    Time: LongInt;
//    Pt: TPoint;
//  end;
И сделать изменения в процедуре DwinsHs_ProcessMessages():
вместо Msg.Msg записать Msg.message.
Пример#1.jpg
А можно попробовать переименовать TMsg (по всему коду dwinshs.iss) во что-то другое, например в TMsg1 и т.п.
Пример#2.jpg
У меня в обоих вариантах одна и таже ошибка. Что не так с этой переменной? Даже во втором варианте дополнительно пробовал её переименовать на Msg.Message по телу скрипта, но и это не помогло. Нужна помощь...
 

Andreo Fadio

Старожил
У меня в обоих вариантах одна и таже ошибка.
Не надо так редактировать параметры под участком Var

Код:
type
  T1Msg = record
    hWnd: HWnd;
    Msg: LongInt;
    wParam: LongInt;
    lParam: LongInt;
    Time: LongInt;
    Pt: TPoint;
  end;

function PeekMessage(var Msg: T1Msg; Wnd: HWnd; MsgFilterMin, MsgFilterMax, wRemoveMsg: LongInt): BOOL;
external 'PeekMessageA@user32.dll stdcall delayload setuponly';

function TranslateMessage(var Msg: T1Msg): BOOL;
external 'TranslateMessage@user32.dll stdcall delayload setuponly';

function DispatchMessage(var Msg: T1Msg): LongInt;
external 'DispatchMessageA@user32.dll stdcall delayload setuponly';

procedure DwinsHs_ProcessMessages();
var
  Msg: T1Msg;
begin
  while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
  if Msg.Msg <> WM_QUIT then
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end
  else
  begin
    DwinsHs_CancelDownload := cdExit;
  end;
end;
 

Leserg

Участник
У меня в обоих вариантах одна и таже ошибка. Что не так с этой переменной?
Вы невнимательно прочитали мое сообщение!
Еще раз о том, что нужно сделать в файле dwinshs.iss

1) закомментировать блок кода с объявлением типа TMsg
2) в процедуре DwinsHs_ProcessMessages() вместо Msg.Msg записать Msg.message

IS-vcl01.png

На этом все.
 

JEKE24

Новичок
@Leserg, (Вопрос не по теме ) Нe подскажите что за шрифт у вас стоит (редактор Inno Setup)
 

Cyberworm

Новичок
Всем спасибо за помощь. Пока вопросов больше нет, а шрифт PT Mono действительно классно смотрится при просмотре синтаксиса.
 
Сверху