Inno Setup Прошу протестировать

  • Автор темы Автор темы Carlos
  • Дата начала Дата начала
можно подумать у тебя там что-то секретное есть
Он как автор не секретность защищает, а уникальность.
никому твой инсталлятор и даром не нужен
Мне вот например интересно как некоторые вещи там реализованы, а высказывание звучит слегка грубовато.
 
Прошу помощи.
Уже всё перепробовал, никак не могу сделать следующее:
Как наложить .png изображение на кнопку для этого примера
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]

var
About: TNewButton;
ResultCode: Integer;

procedure AboutClick(Sender: TObject);
begin
  ShellExec('open', ExpandConstant('{src}\readme.txt'),'','', SW_SHOW, ewNoWait, ResultCode)
end;


procedure InitializeWizard();
begin
  About := TNewButton.Create(WizardForm);
  with About do
  begin
    Parent := WizardForm;
    Left := ScaleX(16);
    Top := ScaleY(325);
    Width := ScaleX(75);
    Height := ScaleY(25);
    Caption := 'О программе';
    OnClick := @AboutClick;
  end;
end;
Bmp знаю как, а вот png никак не додумаюсь.
 
Последнее редактирование:
Carlos, извините за глупый вопрос. Вы хотите наложить текстуру формата .PNG на данную кнопку или же хотите чтобы изображение png закрывало эту кнопку.
 
Nemko, Мне нужно
наложить текстуру формата .PNG на данную кнопку
Пробовал создать новую кнопку с нужной мне текстурой (button.png), но не знаю как задать для неё действие.


haboutBtn:=BtnCreate(WizardForm.Handle,ScaleX(535),ScaleY(180),ScaleX(90),ScaleY(22),ExpandConstant('{tmp}\Button.png'),1,False);
BtnSetEvent(haboutBtn,BtnClickEventID,WrapBtnCallback@WizardFormBtnClick,1)); // ---- Не пойму на что её заменить, чтобы при нажатии открывался текстовый документ
Если менять на @AboutClick, то выдаёт ошибку.
 
Простите за скорость, я пока учусь. Но вроде на botva2 все работает как часы.

#include "Modules\botva2.iss"

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={sd}\My Application

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

Код:
var
Test:HWND;

procedure ButtonClicks(hBtn: HWND);
var
  ErrorCode: Integer;
begin
  ShellExec('open', ExpandConstant ('{src}\1.txt'), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

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

procedure InitializeWizard();
begin
  Test:=BtnCreate(WizardForm.Handle,16,325,75,25,PAnsiChar(ExpandConstant('button.png')),0,False);
  BtnSetEvent(Test,BtnClickEventID,WrapBtnCallback(@ButtonClicks,1));
  BtnSetText(Test,'Тест');
  ImgApplyChanges(WizardForm.Handle);
end;

procedure DeinitializeSetup;
begin
  gdipShutdown;
end;
 

Вложения

Последнее редактирование:
Nemko, то, что нужно, но после завершения установки выскакивает ошибка.
 
Carlos,
procedure DeinitializeSetup;
begin
gdipShutdown;
end;
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

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

Код:
#include "Modules\botva2.iss"
var
InfoBtn: HWND;

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

procedure Info(hBtn:HWND);
var
ResultCode: Integer;
begin
  ShellExec('open', ExpandConstant('{src}\readme.txt'),'','', SW_SHOW, ewNoWait, ResultCode)
end;

procedure InitializeWizard;
begin
  InfoBtn:=BtnCreate(WizardForm.Handle,ScaleX(10),ScaleY(320),ScaleX(36),ScaleY(36),ExpandConstant('{tmp}\Info.png'),0,True);
  BtnSetEvent(InfoBtn,1,WrapBtnCallback(@Info,1));
  BtnSetEvent(InfoBtn,BtnClickEventID,WrapBtnCallback(@Info,1));
  ImgApplyChanges(WizardForm.Handle);
end;

procedure DeinitializeSetup;
begin
  gdipShutdown;
end;
[/SPOILER]
 
Всем спасибо за помощь.


Друзья, прошу прощения, но я перепутал скрипт.
Мне нужно было для этого скрипта наложить на кнопку button.png
Или смысл действий такой же?


Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: "1.rtf"; DestDir: "{tmp}"; Flags: ignoreversion


[code_]
var
InfoForm: TSetupForm;
Info, Ok: TButton;
InfoBefore: TRichEditViewer;
ReadmeRu: AnsiString;


procedure Okclick(Sender: TObject);
begin
  InfoForm.Close;
  WizardForm.Enabled:=True;
end;

procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WizardForm.Enabled:=true;
end;

procedure InfoClick(Sender: TObject);
begin
InfoForm:= CreateCustomForm();
with InfoForm do begin
  ClientWidth := ScaleX(350);
  ClientHeight := ScaleY(250);
  CenterInsideControl(WizardForm, False);
  Caption:='';
  onClose:=@FormClose;
Ok:=tbutton.create(InfoForm)
with Ok do begin
  SetBounds(ScaleX(290),ScaleY(210),ScaleX(50),ScaleY(30));
  parent:=InfoForm;
  Caption:='OK';
  onclick:=@OKclick;
  end;
InfoBefore:= TRichEditViewer.Create(InfoForm);
with InfoBefore do begin
  SetBounds(ScaleX(10),ScaleY(10),ScaleX(330),ScaleY(180));
  Parent:= InfoForm;
  //    ParentColor := True;
  //    Color:= WizardForm.Color;
  //    BorderStyle:= bsNone;
  ScrollBars:= ssVertical;
  ReadOnly:= true;
  RTFText:= ReadmeRu
end;
  InfoForm.Show;
  WizardForm.Enabled:=false;
end;
end;



procedure InitializeWizard;
begin

ExtractTemporaryFile('1.rtf');
  LoadStringFromFile(ExpandConstant('{tmp}')+'\1.rtf', ReadMeRu);
  Info:=tbutton.create(WizardForm);
  with Info do begin
  Parent:=WizardForm;
  SetBounds(ScaleX(80),ScaleY(325),ScaleX(45),ScaleY(30));
  Caption:='x';
  OnClick:=@InfoClick;
end;

end;
 
Последнее редактирование:
Nemko,
Не могу назначить действие на созданную кнопку.

BtnSetEvent(InfoBtn,1,WrapBtnCallback(@Info,1));
BtnSetEvent(InfoBtn,BtnClickEventID,WrapBtnCallback(@Info,1));


Что бы в этом месте не прописал, выдаёт ошибку.
 
Carlos,
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: "1.rtf"; DestDir: "{tmp}"; Flags: ignoreversion
Source: Files\*; Flags: dontcopy

Код:
#include "Modules\botva2.iss"
var
InfoForm: TSetupForm;
Info, Ok: TButton;
InfoBefore: TRichEditViewer;
ReadmeRu: AnsiString;
InfoBtn: HWND;

procedure Okclick(Sender: TObject);
begin
  InfoForm.Close;
  WizardForm.Enabled:=True;
end;

procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WizardForm.Enabled:=true;
end;

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

procedure InfoCheck(hBtn:HWND);
var
ResultCode: Integer;
begin
InfoForm:= CreateCustomForm();
with InfoForm do begin
  ClientWidth := ScaleX(350);
  ClientHeight := ScaleY(250);
  CenterInsideControl(WizardForm, False);
  Caption:='';
  onClose:=@FormClose;
Ok:=tbutton.create(InfoForm)
with Ok do begin
  SetBounds(ScaleX(290),ScaleY(210),ScaleX(50),ScaleY(30));
  parent:=InfoForm;
  Caption:='OK';
  onclick:=@OKclick;
  end;
InfoBefore:= TRichEditViewer.Create(InfoForm);
with InfoBefore do begin
  SetBounds(ScaleX(10),ScaleY(10),ScaleX(330),ScaleY(180));
  Parent:= InfoForm;
  //    ParentColor := True;
  //    Color:= WizardForm.Color;
  //    BorderStyle:= bsNone;
  ScrollBars:= ssVertical;
  ReadOnly:= true;
  RTFText:= ReadmeRu
end;
  InfoForm.Show;
  WizardForm.Enabled:=false;
end;
end;

procedure InitializeWizard;
begin
  ExtractTemporaryFile('1.rtf');
  LoadStringFromFile(ExpandConstant('{tmp}')+'\1.rtf', ReadMeRu);
  InfoBtn:=BtnCreate(WizardForm.Handle,ScaleX(10),ScaleY(320),ScaleX(36),ScaleY(36),ExpandConstant('{tmp}\Info.png'),0,True);
  BtnSetEvent(InfoBtn,1,WrapBtnCallback(@InfoCheck,1));
  BtnSetEvent(InfoBtn,BtnClickEventID,WrapBtnCallback(@InfoCheck,1));
  ImgApplyChanges(WizardForm.Handle);
end;

procedure DeinitializeSetup;
begin
  gdipShutdown;
end;
[/SPOILER]
 
vint56, Низкий Вам поклон!

Чем может быть вызвана данная ошибка?
Если скрипт, который Вы дали, компилировать отдельно, то всё работает.
Если вставить в мой скрипт, то выходит следующая ошибка.
 

Вложения

  • Снимок экрана (25).png
    Снимок экрана (25).png
    29.6 KB · Просмотры: 27
Последнее редактирование:
Назад
Сверху