botva2

DLL botva2 0.9.9.156

Нет прав для скачивания

Kotyarko_O

Новичок
Awalder, в архиве с библиотекой есть несколько примеров, в том числе и с тем, который вам нужен ("CheckListBox_Example.iss").
 

Alloc

Новичок
Скажите пожалуйста, как заменить стандартную иконку папки ("SelectDirPage") на свою?

Вроде бы правильно все делаю, но она не отображается

Код:
MFolder:=ImgLoad(WizardForm.SelectDirPage.Handle,ExpandConstant('{tmp}\Folder.png'),ScaleX(100), ScaleY(100),ScaleX(200),ScaleY(200),True,True);

ImgApplyChanges(WizardForm.SelectDirPage.Handle);
 

Avengerz13

Участник
Alloc,
Код:
ExtractTemporaryFile('Folder.png');
MFolder:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Folder.png'),ScaleX(100), ScaleY(100),ScaleX(200),ScaleY(200),True,True);
ImgApplyChanges(WizardForm.Handle);


procedure CurPageChanged(CurPageID: Integer);
begin 
SelectDirBitmapImage.Hide;
ImgSetVisibility(MFolder,False);
case CurPageID of
  wpSelectDir:
   begin
    ImgSetVisibility(Image2,True);
   end;
end;
 

Alloc

Новичок
Alloc,
Код:
ExtractTemporaryFile('Folder.png');
MFolder:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Folder.png'),ScaleX(100), ScaleY(100),ScaleX(200),ScaleY(200),True,True);
ImgApplyChanges(WizardForm.Handle);


procedure CurPageChanged(CurPageID: Integer);
begin
SelectDirBitmapImage.Hide;
ImgSetVisibility(MFolder,False);
case CurPageID of
  wpSelectDir:
   begin
    ImgSetVisibility(Image2,True);
   end;
end;
спасибо за ответ. Но не в какую не хочет работать, даже не знаю в чем причина... Может быть у Вас есть простой пример замены иконки в инсталляторе?
 

Вложения

Alloc

Новичок
Все, разобрался, спасибо. Была моя ошибка.

Тогда еще один вопрос касательно защиты своих изображений. Раньше можно было использовать библиотеку b2p.dll совместно с ботвой, но новая версия с ней не работает... А мои иконки свободно можно видеть в темпе. Как это исправить? Я пользуюсь ботвой последней версией скаченной с вашего сайта.
 

Avengerz13

Участник
Alloc,
Раньше можно было использовать библиотеку b2p.dll совместно с ботвой, но новая версия с ней не работает...
Можно продолжить использовать старую версию.
А мои иконки свободно можно видеть в темпе.
или попробовать использовать функцию TMemoryStream, но я не тестировал.
Как это исправить?
Смысла скрывать свою графику в инстоляторе не имеет смысла по простой причине. Любой желающий всегда сможет получить доступ к ним используя unpacker.

Популярные инстоляторы легко поддаются распаковке:
Unpacker Example.png
 

Carlos

Участник
Модератор
Инсталлятор вскрывается на ура.
Но, если все файлы запакованы в .exe или экзешник разделён на setup-1.bin или setup-a.bin (у кого как называется), то он берёт файлы из биновского файла. Если экзешник разделён на биновские файлы, но самого биновского файла нет (в котором хранятся файлы), а экзешник присутствует, то ничего не вскрывается. Даже если биновский файл переименовать, то он не распакуется (но при этом и не запустится экзешник)
Так вот по сути же, можно как то этот биновский файл (в котором и хранятся все файлы) зашифровать или переименовать с возможностью запуска инсталлятора.
Надеюсь вы поняли ход моих мыслей.

И вот этот распаковывает пустым, хотя во время установки слайд шоу.
Если же не вскрывать, а просто устанавливать, в темпе файлы можно выдернуть.
Почему их тогда через анпакер не выдернуть?
L.A. Noire от **романов
https://yadi.sk/d/_mw1hGZLry69y
 

Avengerz13

Участник
Почему их тогда через анпакер не выдернуть?
1.png 2.png 3.png

Хотя расширенную версию от 5.4.2 таки не смог декомпилировать.
Error.PNG

Надеюсь вы поняли ход моих мыслей.
Есть такой вариант защиты файлов:
1. Создать архив с файлами из которого будет извлекаться файлы для запуска инсталлятора.
2. Запаролить архив.
3. В скрипте указываем пароль и какие файлы должны извлекаться.
4. Все файлы вместо {tmp} переводим в временный буфер или еще куда нибудь.

Написал пример:
Code.iss - Пример использования извлечение файлов из архива.
Code with Stream.iss (Требуется расширенная версия 5.5.1ee2 (u)) - Пример использования извлечение файлов из архива c функцией загрузки файлов в стрим (TMemoryStream).
Code with B2P.iss - Пример использования извлечение файлов из архива c использованием Botva2Protect (b2p.dll). Не смог переписать модуль, вечно указывает на ошибку но с обычной ботвой работает.

В скрипте:
ExpandConstant('{tmp}') + '" e -p123 -y "'
в этой строке параметр -p отвечает за пароль.

Создаете архив с паролем как в скриншоте:
1.png
Указываете пароль в скрипте, готово.
 

Вложения

Последнее редактирование:

AlexanderSergeev

Новичок
Avengerz13, как защитить графические элементы в деинсталляторе?
b2p.dll я так понял - это не может.

З.Ы. Какой должен быть комплексный подход по надежной защите setup.exe начиная от декомпиляции исходного кода скрипта до графики.
 
Последнее редактирование:

Shegorat

Lord of Madness
Администратор
AlexanderSergeev
Смысла в этом нет. Код полностью не декомпилируется до читабельного состояния. Тем, кто это может сделать, это нафиг не нужно. Им быстрее самим всё реализовать, остальные не смогут ни того ни другого.
Насчет картинок тоже не вижу смысла, достать можно всё, из той же памяти процесса вытащить. Единственный плюс - сразу грузить из буфера, без создания дополнительных файлов.
 

AlexanderSergeev

Новичок
Shegorat, большое Вам спасибо за отзывчивость и подробные разъяснения.
 
Последнее редактирование:

Alloc

Новичок
Друзья, я столкнулся еще с одной проблемой при использовании данного модуля.. Вообщем при добавление логотипа на форму инсталлятора, кнопки Назад, Далее и Отмена как то странно отображаются... без логотипа - все нормально. В чем может быть проблема?

Вот скриншот:




еще я заметил такую вещь что, если грузить картинку как кнопку то все в порядке:

Код:
LogoBtn:=BtnCreate(WizardForm.Handle,20,322,154,33,ExpandConstant('{tmp}\btn3.png'),1,false);
 
Последнее редактирование:

Alloc

Новичок
ребята, неужели никак не возможно исправить этот косяк? Может есть еще способы встраивать картинки формата png в свой инсталлятор?
 

vint56

Ветеран
Проверенный
Alloc, использовать ansi либо создать панель и на неё положить картинку
Код:
#define Files  "InstallFiles"
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: "InstallFiles\*"; Flags: dontcopy;

[code]
var
Logo: Longint;
LogoPanel: TPanel;

#include "Modules\botva2.iss"

function InitializeSetup(): Boolean;
begin
  if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
  if not FileExists(ExpandConstant('{tmp}\Logo.png')) then ExtractTemporaryFile('Logo.png');
  Result := True;
end;

procedure InitializeWizard();
begin
  LogoPanel := TPanel.Create(WizardForm);
  with LogoPanel do
  begin
    Parent := WizardForm;
    Left := ScaleX(10);
    Top := ScaleY(315);
    Width := ScaleX(175);
    Height := ScaleY(39);
    BevelOuter := bvNone;
  end;
  Logo:=ImgLoad(LogoPanel.Handle,ExpandConstant('{tmp}\logo.png'), ScaleX(0), ScaleY(0), ScaleX(175), ScaleY(39), False, False);
  ImgApplyChanges(LogoPanel.Handle);
end;
procedure DeinitializeSetup;
begin
  gdipShutdown;
end;
 

Alloc

Новичок
Alloc, использовать ansi либо создать панель и на неё положить картинку
хотелось бы еще уточнить один момент.. скажите пожалуйста, в дальнейшем у меня не возникнут неприятные неожиданности если я последую Вашему совету и скомпилирую на unicode версии? Или лучше всего скопилить на ansi что б наверняка?
 

vint56

Ветеран
Проверенный
Alloc, сам пользуюсь Inno Setup Compiler unicode там и пример писал вроде не кто не жаловался
 
Сверху