FMXBridge.dll для Inno Setup

DLL FMXBridge.dll для Inno Setup 21.08

Нет прав для скачивания
audiofeel обновил(а) ресурс FMXBridge.dll для Inno Setup новой записью:

FMXBridge - последние изменения

Добавлены два новых контрола:

FGlassRectangle - Liquid Glass
Поддерживает:
- размытием фона;
- преломлением изображения;
- эффектом объёма и оптической толщины;
- дисперсией;
- поддержкой скруглённых углов;
- отдельной настройкой GlassAmount и BlurAmount.
- стандартные свойства FMX-контрола.

FBlurRectangle - Blur
Отдельный контрол только для размытия содержимого под ним, без эффекта стекла.
Поддерживает:
- настройку силы размытия;
- скруглённые углы;
-...

Узнать больше об этом обновлении...
 
Тык я не админ, просто к слову, подметил, что внимательнее читать посты нужно при скачивании материала :) Без негатива
Да, это понятно. Но я и изначально правильно делал, но ломалось. Точнее, сразу брал из примера и подключал 64-й вариант, как показано, но понял, что другие библиотеки на x86. Точнее, проблему составляла одна для скачки из интернета с сервера. Потом нашел функцию, которая решает проблему, когда что-то 64, а что-то x86. Заработало. Потом почитал, что на производительность, если я вообще выберу x86, никак на скорость ничего не повлияет, и уже окончательно заменил dll на x86 с 64, чтобы было, так сказать, все под одну гребенку. Разницы-то никакой нет. Если бы у меня была IDP 64, то можно было бы и 64 все поставить, а так, насколько я знаю, она только x86 идет или в интернете плавает. Ну я не нашел. а как загрузчик использовать плюс распаковка та что с инно идет или в примерах на бриджах массово и с большими потоками ну хотя бы 16 я так и не разобрался . только понял что можно один фал грузить а у меня их на сервере 160 лежит и если человек выбирет в модпаке например 50 модов то я не знаю как зделать что бы быстро и качалось с сервака и распаковывалось сделать на каком то другом примере без использования IDP и 7za. если кто знает то подскажите .
 
Да, это понятно. Но я и изначально правильно делал, но ломалось. Точнее, сразу брал из примера и подключал 64-й вариант, как показано, но понял, что другие библиотеки на x86. Точнее, проблему составляла одна для скачки из интернета с сервера. Потом нашел функцию, которая решает проблему, когда что-то 64, а что-то x86. Заработало. Потом почитал, что на производительность, если я вообще выберу x86, никак на скорость ничего не повлияет, и уже окончательно заменил dll на x86 с 64, чтобы было, так сказать, все под одну гребенку. Разницы-то никакой нет. Если бы у меня была IDP 64, то можно было бы и 64 все поставить, а так, насколько я знаю, она только x86 идет или в интернете плавает. Ну я не нашел. а как загрузчик использовать плюс распаковка та что с инно идет или в примерах на бриджах массово и с большими потоками ну хотя бы 16 я так и не разобрался . только понял что можно один фал грузить а у меня их на сервере 160 лежит и если человек выбирет в модпаке например 50 модов то я не знаю как зделать что бы быстро и качалось с сервака и распаковывалось сделать на каком то другом примере без использования IDP и 7za. если кто знает то подскажите .
В Inno Setup 7 это уже штатно есть: [Files] умеет скачивать файлы по HTTP/HTTPS, а extractarchive - сразу распаковывать архивы.
Документация [Files]
Документация ArchiveExtraction

например наверное как то так
Код:
[Setup]
ArchiveExtraction=full

[Files]
Source: "https://server.ru/mod1.zip"; \
  DestDir: "{app}\Mods\Mod1"; \
  DestName: "mod1.zip"; \
  ExternalSize: 50000000; \
  Flags: external download extractarchive ignoreversion

Посиди спокойно, почитай документацию - думаю, разберёшься. Если есть конкретные предложения по интерфейсу или что-то хочешь изменить/добавить - пиши, я не отказываюсь помочь, если конкретно знаешь, что именно хочешь сделать.

Если GPT не доступен то забей все в DeepSeek.
За тебя это наверное никто не будет делать.
 
В Inno Setup 7 это уже штатно есть: [Files] умеет скачивать файлы по HTTP/HTTPS, а extractarchive - сразу распаковывать архивы.
Документация [Files]
Документация ArchiveExtraction

например наверное как то так
Код:
[Setup]
ArchiveExtraction=full

[Files]
Source: "https://server.ru/mod1.zip"; \
  DestDir: "{app}\Mods\Mod1"; \
  DestName: "mod1.zip"; \
  ExternalSize: 50000000; \
  Flags: external download extractarchive ignoreversion

Посиди спокойно, почитай документацию - думаю, разберёшься. Если есть конкретные предложения по интерфейсу или что-то хочешь изменить/добавить - пиши, я не отказываюсь помочь, если конкретно знаешь, что именно хочешь сделать.

Если GPT не доступен то забей все в DeepSeek.
За тебя это наверное никто не будет делать.
Получилось, и самое что интересное, получилось сделать гибрид. То, что работало с IDP, теперь работает со встроенным загрузчиком Inno Setup. Код особо не пришлось как то изменять. Практически один в один остался. Скорость не упала, функциональность осталась, и многопоточность — то есть все ядра процессора для скорости загрузки и распаковки файлов задействуются, в общем хуже не стало, даже, мне кажется, где то лучше работает все. Ну и удалось оставить плавную загрузку прогресс-бара со временем и подробным логом. Можно было еще и проценты прикрутить. Точнее, прикрутил, но мне они пока не нужны, времени достаточно что показывает. Так что теперь какие то дополнительные библиотеки 2016 года по типу IDP, во все не нужны. А да 7zip оставил, он шустрее работает.
 
вот что хотел узнать если FMXBridgeHandle метод для ленивой загрузки + кэширования . хочу сделать для картинок но че то не понял как . ну или нет чего то в бриджах. может функций каких. если есть возможность реализации подскажите
 
вот что хотел узнать если FMXBridgeHandle метод для ленивой загрузки + кэширования . хочу сделать для картинок но че то не понял как . ну или нет чего то в бриджах. может функций каких. если есть возможность реализации подскажите
Пробуй FImageList
code_language.pascal:
  FImageList = interface(IUnknown)
    '{3943EE98-BB04-4582-8ABC-5EA024B03027}'
    function FCreate(FParent: TFmxObject): IImageList;
    procedure AddImage(const AFileImage: WideString);
    procedure AddImageResized(const AFileImage: WideString;
      FWidth, FHeight: Integer);
    procedure Clear;
    procedure Delete(FIndex: Integer);
    procedure Replace(FIndex: Integer; const AFileImage: WideString);
    procedure BeginUpdate;
    procedure EndUpdate;
    procedure SetTag(FTag: Integer);
    function Count: Integer;
    function GetTag: Integer;
    function Handle: IImageList;
  end;

Он имеет свой внутренний кэш, но это немного другой.... механизм. Готового метода именно для lazy loading картинок у меня сейчас нет и не будет.

Можно использовать FImageList вместе с ExtractAndLoad.
ExtractAndLoad у тебя как раз не будет каждый раз заново распаковывать картинку: сначала проверяет {tmp}, и если файл уже есть - просто возвращает его путь.
То есть можно сделать так:
code_language.pascal:
Index := ImageList.AddImage(ExtractAndLoad('cat.png'));

А FImageList уже использовать для самих картинок и их повторного показа. Получается, и распаковка из Inno Setup не повторяется, и картинки можно хранить в FImageList.
 
Последнее редактирование:
Пробуй FImageList
code_language.pascal:
  FImageList = interface(IUnknown)
    '{3943EE98-BB04-4582-8ABC-5EA024B03027}'
    function FCreate(FParent: TFmxObject): IImageList;
    procedure AddImage(const AFileImage: WideString);
    procedure AddImageResized(const AFileImage: WideString;
      FWidth, FHeight: Integer);
    procedure Clear;
    procedure Delete(FIndex: Integer);
    procedure Replace(FIndex: Integer; const AFileImage: WideString);
    procedure BeginUpdate;
    procedure EndUpdate;
    procedure SetTag(FTag: Integer);
    function Count: Integer;
    function GetTag: Integer;
    function Handle: IImageList;
  end;

Он имеет свой внутренний кэш, но это немного другой.... механизм. Готового метода именно для lazy loading картинок у меня сейчас нет и не будет.

Можно использовать FImageList вместе с ExtractAndLoad.
ExtractAndLoad у тебя как раз не будет каждый раз заново распаковывать картинку: сначала проверяет {tmp}, и если файл уже есть - просто возвращает его путь.
То есть можно сделать так:
code_language.pascal:
Index := ImageList.AddImage(ExtractAndLoad('cat.png'));

А FImageList уже использовать для самих картинок и их повторного показа. Получается, и распаковка из Inno Setup не повторяется, и картинки можно централизованно хранить в FImageList.
В общем, я бы пошёл именно этим путём.
просто у меня получается картинок в районе 100 точно а то уже и по больше будет на каждый то мод своя картинка и вот что лучше использовать я хрен пойму уже что бы они мгновенно летали хотя и так нет тормозов при наведении. и вот хрен его знает что выбрать потерялся уже три способа попробовал. но что реально лучше так и не врубился может вы что подскажете по этому что бы и анимация перелистования летала и картинки летали при наведении.??
 
просто у меня получается картинок в районе 100 точно а то уже и по больше будет на каждый то мод своя картинка и вот что лучше использовать я хрен пойму уже что бы они мгновенно летали хотя и так нет тормозов при наведении. и вот хрен его знает что выбрать потерялся уже три способа попробовал. но что реально лучше так и не врубился может вы что подскажете по этому что бы и анимация перелистования летала и картинки летали при наведении.??
Я бы на твоём месте пробовал FImageList.
Сама по себе картинка (её показ это не дорого) много ресурсов не ест. А вот анимации, особенно с Opacity, уже могут быть дороже.
Если сейчас при наведении всё работает плавно, то 100 картинок для FImageList вообще не должны быть проблемой.
Примере есть вархиве.
 
Я бы на твоём месте пробовал FImageList.
Сама по себе картинка (её показ это не дорого) много ресурсов не ест. А вот анимации, особенно с Opacity, уже могут быть дороже.
Если сейчас при наведении всё работает плавно, то 100 картинок для FImageList вообще не должны быть проблемой.
Примере есть вархиве.
Ну у меня щас такое работает - асинхронная предзагрузка изображений с помощью таймера и кэширования в массиве. Но щас попробую сделать из вашего примера может лучше будет. Просто я перепробовал кучу способов и разницы не где не увидел. Все по сути работает плавно синхронно без тормозов. Но хочется что бы что то самое прям лучшее использовать и производительнее. С вашим примером я не пробовал именно из архива. но метод пробовал у меня все время одна и та же ошибка. крутил я ее часов этак 8 и не смог победить. Плюс я же все сделал щас через циклы. Но не думаю что они на это как то влияют. Спасибо за наводку. пойду пробовать.
 
Я бы на твоём месте пробовал FImageList.
Сама по себе картинка (её показ это не дорого) много ресурсов не ест. А вот анимации, особенно с Opacity, уже могут быть дороже.
Если сейчас при наведении всё работает плавно, то 100 картинок для FImageList вообще не должны быть проблемой.
Примере есть вархиве.
Вот что хотел спросить как пример в архиве называется что то не нашел его
 
Вот что хотел спросить как пример в архиве называется что то не нашел его
Example_TreeView + MainMenu.iss
у FImage кроме procedure LoadPicture(const FImage: WideString; WrapMode: TImageWrapMode);
есть procedure LoadPictureFromImgList(const FIndex: Integer; FImgList: IImageList);
размещаешь FImageList , допустим.
ImgList.FCreate(FormLayer.Handle);
ImgList.AddImage(ExtractAndLoad('home_icon.png'));

в FImage указываешь индекс из листа (начинается с ноля)
FImage.ImageLoadPictureFromImgList(0, ImgList.Handle);
Это все что есть
 
Example_TreeView + MainMenu.iss
у FImage кроме procedure LoadPicture(const FImage: WideString; WrapMode: TImageWrapMode);
есть procedure LoadPictureFromImgList(const FIndex: Integer; FImgList: IImageList);
размещаешь FImageList , допустим.
ImgList.FCreate(FormLayer.Handle);
ImgList.AddImage(ExtractAndLoad('home_icon.png'));

в FImage указываешь индекс из листа (начинается с ноля)
FImage.ImageLoadPictureFromImgList(0, ImgList.Handle);
Это все что есть
В общем сделал так - асинхронная предзагрузка изображений через FImageList с таймером. Оптимальное решение. На выходе получил только плюсы. быстрая загрузка инсталятора. Быстрая анимация без задержек и мгновенный отклик картинок при наведении и все это в совокупности с циклическое построение Ui - как помне бомба прям. Может есть что то еще круче но пока мозгами не дошел. В любом случае код стал маленький и куда отзывчивее и удобнее. Спасибо. Если есть что еще подсказать буду только рад советам.
 
Назад
Сверху