Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 7]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 7]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6]

Отправлено: 11:48, 10-03-2014

 

Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


Цитата ROMKA-1977:
Возможно ли сделать так чтобы после закрытия окна с сообщением окно выбора директории не закрывалось.»
Возможно :)
Код: Выделить весь код
#define Name "Test" 

[Setup]
SourceDir=.
OutputDir=Setup
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
DefaultGroupName=Test
OutputBaseFilename=Setup
AllowNoIcons=true

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;

[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}

[CustomMessages]
russian.RestoreButton=Сброс

[Code]
#define A = (Defined UNICODE) ? "W" : "A"

const
  DRIVE_CDROM = 5;

var
  BrowseForm: TSetupForm;
  BrowseForm2: TSetupForm;
  DirTreeView: TFolderTreeView;
  DirFolderTreeView: TStartMenuFolderTreeView;
  EditTreeView: TNewEdit;
  EditFolderTreeView: TNewEdit;
  DB_Button: TNewButton;
  GB_Button: TNewButton; 
  OldEvent_NoIconsCheckClick: TNotifyEvent;
  OKButton, ButtonNewFolder: TButton;

function GetDriveType(nDrive: string): Longint; external 'GetDriveType{#A}@kernel32.dll stdcall';

function CDROM(Drive: String): Boolean;
begin
  Result:= GetDriveType(Drive) = 5;
end;

procedure GetDrive(Sender: TObject);
var
  Path, Path1: String;
begin 
  Path:= ExtractFileDrive(DirTreeView.Directory);
  Path1:= ExtractFileDrive(EditTreeView.Text);
  ButtonNewFolder.Enabled:= not CDROM(Path);
  OKButton.Enabled:= not CDROM(Path1);
    if CDROM(Path1) then MsgBox('Установка на выбранный диск невозможна!', mbError, MB_OK);
end;

procedure DirTreeViewChange(Sender: TObject);
begin
  if DirTreeView.Directory <> WizardForm.DirEdit.Text then begin
    EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
    GetDrive(nil);
  end else
    EditTreeView.Text := DirTreeView.Directory;
end;

procedure DirFolderTreeViewChange(Sender: TObject);
begin
  if DirFolderTreeView.Directory <> WizardForm.GroupEdit.Text then
  EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}' else
  EditFolderTreeView.Text := DirFolderTreeView.Directory;
end;

procedure BrowseFormButtonsTreeViewOnClick(Sender: TObject);
begin
  case TButton(Sender).Tag of
    1:	begin
	  EditTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}'));
	  GetDrive(nil);
	end;
    2:	begin
	  DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
	  EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
        end;

    3:	if EditTreeView.Text <> WizardForm.DirEdit.Text then WizardForm.DirEdit.Text := EditTreeView.Text;
  end;
end;

procedure BrowseFormButtonsFolderTreeViewOnClick(Sender: TObject);
begin
  case TButton(Sender).Tag of
    4:	EditFolderTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#Name}'));

    5:	begin
          DirFolderTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
          EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}';
        end;

    6:	if EditFolderTreeView.Text <> WizardForm.GroupEdit.Text then WizardForm.GroupEdit.Text := EditFolderTreeView.Text;
  end;
end;

procedure BrowseDirTreeViewClick(Sender: TObject);
begin
  BrowseForm := CreateCustomForm();
  with BrowseForm do
  begin
    Width := ScaleX(413);
    Height := ScaleY(361);
    Caption := SetupMessage(msgBrowseDialogTitle);
    Position := poScreenCenter;

    with TLabel.Create(nil) do
    begin
      SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
      Caption := SetupMessage(msgBrowseDialogLabel);
      Parent := BrowseForm;
      Font.Size := 8;
    end;

    DirTreeView := TFolderTreeView.Create(nil)
    with DirTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
      OnChange := @DirTreeViewChange;
      Parent := BrowseForm;
    end;

    EditTreeView := TNewEdit.Create(nil);
    with EditTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
      Text := DirTreeView.Directory;
      Parent := BrowseForm;
      Font.Color := clWindowText;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
      Parent := BrowseForm;
      Caption := SetupMessage(msgButtonCancel);
      ModalResult := mrCancel;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm;
      Caption := ExpandConstant('{cm:RestoreButton}');
      Tag := 1;
      OnClick := @BrowseFormButtonsTreeViewOnClick;
    end;

    ButtonNewFolder:= TButton.Create(nil)
    with ButtonNewFolder do
    begin
      SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm;
      Caption := SetupMessage(msgButtonNewFolder);
      Tag := 2;
      OnClick := @BrowseFormButtonsTreeViewOnClick;
    end;

    OKButton:= TButton.Create(nil);
    with OKButton do
    begin
      SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm;
      Caption := SetupMessage(msgButtonOK);
      Tag := 3;
      OnClick := @BrowseFormButtonsTreeViewOnClick;
      ModalResult := mrOk;
    end;

    DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True);
    ShowModal;
    Free;
  end;
end;

procedure BrowseDirFolderTreeViewClick(Sender: TObject);
begin
  BrowseForm2 := CreateCustomForm();
  with BrowseForm2 do
  begin
    Width := ScaleX(413);
    Height := ScaleY(361);
    Caption := SetupMessage(msgBrowseDialogTitle);
    Position := poScreenCenter;

    with TLabel.Create(nil) do
    begin
      SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
      Caption := SetupMessage(msgBrowseDialogLabel);
      Parent := BrowseForm2;
      Font.Size := 8;
    end;

    DirFolderTreeView := TStartMenuFolderTreeView.Create(nil)
    with DirFolderTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
      SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userstartup}'),ExpandConstant('{commonstartup}'));
      OnChange := @DirFolderTreeViewChange;
      Parent := BrowseForm2;
    end;

    EditFolderTreeView := TNewEdit.Create(nil);
    with EditFolderTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
      Text := DirFolderTreeView.Directory;
      Parent := BrowseForm2;
      Font.Color := clWindowText;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
      Parent := BrowseForm2;
      Caption := SetupMessage(msgButtonCancel);
      ModalResult := mrCancel;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm2;
      Caption := ExpandConstant('{cm:RestoreButton}');
      Tag := 4;
      OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm2;
      Caption := SetupMessage(msgButtonNewFolder);
      Tag := 5;
      OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm2;
      Caption := SetupMessage(msgButtonOK);
      Tag := 6;
      OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
      ModalResult := mrOk;
    end;

    DirFolderTreeView.ChangeDirectory(AddBackslash(WizardForm.GroupEdit.Text), True);
    ShowModal;
    Free;
  end;
end;

procedure NoIconsCheckClick(Sender: TObject);
 begin
   OldEvent_NoIconsCheckClick(Sender);
   GB_Button.Enabled := not WizardForm.NoIconsCheck.Checked;
 end;

procedure InitializeWizard();
begin
  OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick;
  WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick;

  WizardForm.DirBrowseButton.Hide;
  DB_Button := TNewButton.create(WizardForm);
  with DB_Button do
  begin
    Parent := WizardForm.SelectDirPage;
    SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1));
    Caption := SetupMessage(msgButtonBrowse);
    OnClick := @BrowseDirTreeViewClick;
  end;

  WizardForm.GroupBrowseButton.Hide;
  GB_Button := TNewButton.create(WizardForm);
  with GB_Button do
  begin
    Parent := WizardForm.SelectProgramGroupPage;
    SetBounds(WizardForm.GroupBrowseButton.Left, WizardForm.GroupBrowseButton.Top, WizardForm.GroupBrowseButton.Width, WizardForm.GroupBrowseButton.Height - ScaleY(1));
    Caption := SetupMessage(msgButtonBrowse);
    OnClick := @BrowseDirFolderTreeViewClick;
  end;
end;

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Последний раз редактировалось nik1967, 22-01-2015 в 20:33.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:09, 22-01-2015 | #2361



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для kotyarko@fb

Старожил


Сообщения: 212
Благодарности: 92

Профиль | Отправить PM | Цитировать


Цитата Юрій_Окропірідзе@vk:
ето вот ета форма? »
Нет. Это только ссылание на процедуру создания. Сама процедура это то, что идёт после символа "@".

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Отправлено: 20:34, 22-01-2015 | #2362


Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата kotyarko@fb:
Нет. Это только ссылание на процедуру создания. Сама процедура это то, что идёт после символа "@". »
Вот етот скрипт , я немогу понят где та процедура , я его перелопатил , некоторые процедури к себе скопировал , но так нечего не изменилось , я не понимаю в чем может быть проблема
Скрытый текст
[code]
var
pb, pb1: Longint;
WFButtonFont, UPFButtonFont: TFont;
CurrentImage, ProgressStep: integer;
mp3Name, OldDisk, TimeLeft: string;
w1, w2, w3,w4,w5, w6, w7: Longint;
Welcome, System, Catalogue, StartMenu, Tasks, Installing, Finish, Uninstalling,
PageNameLabel, PageDescriptionLabel,
WelcomeLabel1, WelcomeLabel2,
RequirementsLbl, ProcessorLbl, VideoCardLbl, SoundCardLbl, RAMLbl, SystemLbl,
ProcessorNameLbl, VideoCardNameLbl, SoundCardNameLbl, RAMTotalLbl, SystemNameLbl,

SelectDirBrowseLabel, DirEditLabel, TotalSpaceLabel, NeedSpaceLabel, FreeSpaceLabel,
SelectStartMenuFolderBrowseLabel, GroupEditLabel, NoIconsLabel,
SelectTasksLabel, DesktopLabel, QuickLaunchLabel, DirectXLabel, LanguageLabel, LngNameLbl,
FilenameLabel, StatusLabel, ProgressInfoLabel,
FinishedHeadingLabel, FinishedLabel,
WizardUninstLabel, UninstPageDescriptLabel, StatusUninstLabel : TLabel;
function InitializeSetup: Boolean;
begin
ExtractTemporaryFile('botva2.dll');
ExtractTemporaryFile('Click.wav');
ExtractTemporaryFile('isskin.dll');
ExtractTemporaryFile('Tiger.cjstyles');

LoadSkin(ExpandConstant('{tmp}\Tiger.cjstyles'), '');
Result:=True;
end;

procedure CreateWizardImage;
var
i: integer;
begin
WizardForm.ClientWidth:=ScaleX(877);
WizardForm.ClientHeight:=ScaleY(485);
WizardForm.Center;
WizardForm.BorderStyle := bsDialog;
WizardForm.OuterNotebook.Hide;
WizardForm.InnerNotebook.Hide;
WizardForm.Bevel.Hide;

ExtractTemporaryFile('WizardImage.jpg');
ExtractTemporaryFile('button.png');
ExtractTemporaryFile('buttonNext.png');
ExtractTemporaryFile('buttonBack.png');
ExtractTemporaryFile('buttonCancel.png');
ExtractTemporaryFile('buttonBrowse.png');
ExtractTemporaryFile('buttonInstall.png');
ExtractTemporaryFile('buttonEnd.png');
ExtractTemporaryFile('MusicButton.png');
ExtractTemporaryFile('RequirementsPanel.png');
ExtractTemporaryFile('Edit.png');
ExtractTemporaryFile('DirFolder.png');
ExtractTemporaryFile('HardDrivePanel.png');
ExtractTemporaryFile('HDD.png');
ExtractTemporaryFile('GroupFolder.png');
ExtractTemporaryFile('CheckBox.png');
ExtractTemporaryFile('ProgressBackground.png');
ExtractTemporaryFile('ProgressImg.png');
ExtractTemporaryFile('INF.png');
ExtractTemporaryFile('back.png');

ExtractTemporaryFile('w1.png');
ExtractTemporaryFile('w2.png');
ExtractTemporaryFile('w3.png');
ExtractTemporaryFile('w4.png');
ExtractTemporaryFile('w5.png');
ExtractTemporaryFile('w6.png');
ExtractTemporaryFile('w7.png');

ExtractTemporaryFile('WFEnter.wav');
ExtractTemporaryFile('Check.wav');
ExtractTemporaryFile('Music.ogg');
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('LogoButton.png');


WizardImg:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\WizardImage.jpg'),ScaleX(0),ScaleY(0),Wiz ardForm.ClientWidth,WizardForm.ClientHeight,True,True);

SetArrayLength(AImg,5);
for i:=0 to GetArrayLength(AImg)-1 do begin
AImg[i]:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\'+IntToStr(i+1)+'.jpg'),0,0,WizardForm.ClientWidth ,WizardForm.ClientHeight,True,True);
ImgSetVisibility(AImg[i],False);
end;


(*w1:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\w1.png'),ScaleX(0), ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
w2:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\w2.png'),ScaleX(0), ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
w3:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\w3.png'),ScaleX(0), ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
w4:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\w4.png'),ScaleX(0), ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
w5:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\w5.png'),ScaleX(0), ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
w6:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\w6.png'),ScaleX(0), ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
w7:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\w7.png'),ScaleX(0), ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,True,True); *)

Logo:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\INF.png'),ScaleX(0), ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,False,false);
ImgSetVisibility(logo,false); ////


(* ImgSetVisibility(w1,False);
ImgSetVisibility(w2,False);
ImgSetVisibility(w3,False);
ImgSetVisibility(w4,False);
ImgSetVisibility(w5,False);
ImgSetVisibility(w6,False);
ImgSetVisibility(w7,False); *)

ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\back.png'),ScaleX(0), ScaleY(0),877,485,True,True);
(*RequirementsPanel:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\RequirementsPanel.png'),ScaleX( 75), ScaleY(0),ScaleX(700),ScaleY(485),True,True);
Edit:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Edit.png'),ScaleX(307), ScaleY(240),ScaleX(420),ScaleY(22),True,True);
DirFolder:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\DirFolder.png'),ScaleX(233), ScaleY(215),ScaleX(80),ScaleY(80),True,True);
HardDrivePanel:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\HardDrivePanel.png'),ScaleX(307), ScaleY(283),ScaleX(420),ScaleY(70),True,True);
HDD:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\HDD.png'),ScaleX(243), ScaleY(283),ScaleX(60),ScaleY(74),True,True);
GroupFolder:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\GroupFolder.png'),ScaleX(223), ScaleY(210),ScaleX(80),ScaleY(80),True,True);*)

ImgApplyChanges(WizardForm.Handle);
end;

procedure SetStateNewButtons;
begin
(*with WizardForm.BackButton do begin
BtnSetText(hBackBtn,PAnsiChar(Caption));
BtnSetVisibility(hBackBtn,Visible);
BtnSetEnabled(hBackBtn,Enabled);
end;
with WizardForm.NextButton do begin
BtnSetText(hNextBtn,PAnsiChar(Caption));
BtnSetVisibility(hNextBtn,Visible);
BtnSetEnabled(hNextBtn,Enabled);
end;
with WizardForm.NextButton do begin
BtnSetText(NextBtn,PAnsiChar(Caption));
BtnSetVisibility(NextBtn,Visible);
BtnSetEnabled(NextBtn,Enabled);
end;

with WizardForm.NextButton do begin
BtnSetText(Next2Btn,PAnsiChar(Caption));
BtnSetVisibility(Next2Btn,Visible);
BtnSetEnabled(Next2Btn,Enabled);
end;
with WizardForm.CancelButton do begin
BtnSetText(hCancelBtn,PAnsiChar(Caption));
BtnSetVisibility(hCancelBtn,Visible);
BtnSetEnabled(hCancelBtn,Enabled);
end; *)
BtnSetText(hDirBrowseBtn,PAnsiChar(WizardForm.DirBrowseButton.Caption));
BtnSetText(hGroupBrowseBtn,PAnsiChar(WizardForm.GroupBrowseButton.Caption));
end;

procedure WizardFormBtnClick(hBtn:HWND);
var
Btn:TButton;
begin
sndPlaySound(ExpandConstant('{tmp}\Click.wav'),$0001);
case hBtn of
hCancelBtn: Btn:=WizardForm.CancelButton;
hNextBtn: Btn:=WizardForm.NextButton;
NextBtn: Btn:=WizardForm.NextButton;
Next2Btn: Btn:=WizardForm.NextButton;
hBackBtn: Btn:=WizardForm.BackButton;
hDirBrowseBtn: Btn:=WizardForm.DirBrowseButton;
hGroupBrowseBtn: Btn:=WizardForm.GroupBrowseButton;
end;
Btn.OnClick(Btn);
SetStateNewButtons;
BtnRefresh(hBtn);
end;

procedure WFBtnEnter(hBtn:HWND);
begin
sndPlaySound(ExpandConstant('{tmp}\WFEnter.wav'),$0001);
end;

procedure LogoClick(hBtn:HWND);
var
Check:boolean;
begin
Check:=BtnGetChecked(hBtn);
sndPlaySound(ExpandConstant('{tmp}\Click.wav'),$0001);
Check:=BtnGetChecked(hBtn);
BtnSetEnabled(hBackBtn, not Check);
BtnSetEnabled(hNextBtn, not Check);
BtnSetEnabled(NextBtn, not Check);
BtnSetEnabled(Next2Btn, not Check);
BtnSetEnabled(hCancelBtn, not Check);
BtnSetEnabled(hDirBrowseBtn, not Check);
BtnSetEnabled(hGroupBrowseBtn, not Check);
BtnSetEnabled(QuickLaunchCheck, not Check);
BtnSetEnabled(DesktopCheck, not Check);
BtnSetEnabled(NoIconsCheck, not Check);
BtnSetEnabled(MusicButton, not Check);
ImgSetVisibility(Logo, not ImgGetVisibility(Logo));
ImgApplyChanges(WizardForm.Handle);
end;

procedure ButtonsTextures;
begin
WFButtonFont:=TFont.Create;
WFButtonFont.Style:=[fsBold];

(* with WizardForm.BackButton do begin
hBackBtn:=BtnCreate(WizardForm.Handle,Left+285,Top+110,Width+31,Height+16,ExpandConstant('{tmp}\butt onBack.png'),18,False);
BtnSetEvent(hBackBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(hBackBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hBackBtn,WFButtonFont.Handle);
BtnSetFontColor(hBackBtn,$FFFFFF,$FFFFFF,$FFFFFF,$B6B6B6);
BtnSetCursor(hBackBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;

with WizardForm.NextButton do begin
hNextBtn:=BtnCreate(WizardForm.Handle,Left+312,Top+110,Width+31,Height+16,ExpandConstant('{tmp}\butt onNext.png'),18,False);
BtnSetEvent(hNextBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(hNextBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hNextBtn,WFButtonFont.Handle);
BtnSetFontColor(hNextBtn,$FFFFFF,$FFFFFF,$FFFFFF,$B6B6B6);
BtnSetCursor(hNextBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;

with WizardForm.NextButton do begin
NextBtn:=BtnCreate(WizardForm.Handle,Left+676767,Top+110,Width+106,Height+39,ExpandConstant('{tmp}\b uttonInstall.png'),18,False);
BtnSetEvent(NextBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(NextBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(NextBtn,WFButtonFont.Handle);
BtnSetFontColor(NextBtn,$FFFFFF,$FFFFFF,$FFFFFF,$B6B6B6);
BtnSetCursor(NextBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;

with WizardForm.NextButton do begin
Next2Btn:=BtnCreate(WizardForm.Handle,Left+676767,Top+110,Width+106,Height+39,ExpandConstant('{tmp}\ buttonEnd.png'),18,False);
BtnSetEvent(Next2Btn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(Next2Btn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(Next2Btn,WFButtonFont.Handle);
BtnSetFontColor(Next2Btn,$FFFFFF,$FFFFFF,$FFFFFF,$B6B6B6);
BtnSetCursor(Next2Btn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;

with WizardForm.CancelButton do begin
hCancelBtn:=BtnCreate(WizardForm.Handle,Left+335,Top+110,Width+31,Height+16,ExpandConstant('{tmp}\bu ttonCancel.png'),18,False);
BtnSetEvent(hCancelBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(hCancelBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hCancelBtn,WFButtonFont.Handle);
BtnSetFontColor(hCancelBtn,$FFFFFF,$FFFFFF,$FFFFFF,$B6B6B6);
BtnSetCursor(hCancelBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end; *)

INFBtn:=BtnCreate(WizardForm.Handle,ScaleX(40), ScaleY(435), ScaleX(120), ScaleY(45),ExpandConstant('{tmp}\LogoButton.png'),0,True);
BtnSetEvent(INFbtn,BtnClickEventID,WrapBtnCallback(@LogoClick,4));
BtnSetEvent(INFBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(INFBtn,GetSysCursorHandle(32649));

InfBtnt:=BtnCreate(WizardForm.Handle,ScaleX(40), ScaleY(435), ScaleX(120), ScaleY(45),ExpandConstant('{tmp}\LogoButton.png'),0,True);
BtnSetEvent(INFbtn,BtnClickEventID,WrapBtnCallback(@LogoClick,4));
BtnSetEvent(INFBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(INFBtn,GetSysCursorHandle(32649));

(* with WizardForm.DirBrowseButton do begin
hDirBrowseBtn:=BtnCreate(WizardForm.Handle,Left+398,Top+150,Width+31,Height+16,ExpandConstant('{tmp} \buttonBrowse.png'),18,False);
BtnSetEvent(hDirBrowseBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(hDirBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hDirBrowseBtn,WFButtonFont.Handle);
BtnSetFontColor(hDirBrowseBtn,$FFFFFF,$FFFFFF,$FFFFFF,$B6B6B6);
BtnSetCursor(hDirBrowseBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;

with WizardForm.GroupBrowseButton do begin
hGroupBrowseBtn:=BtnCreate(WizardForm.Handle,Left+398,Top+150,Width+31,Height+16,ExpandConstant('{tm p}\buttonBrowse.png'),18,False);
BtnSetEvent(hGroupBrowseBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(hGroupBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hGroupBrowseBtn,WFButtonFont.Handle);
BtnSetFontColor(hGroupBrowseBtn,$FFFFFF,$FFFFFF,$FFFFFF,$B6B6B6);
BtnSetCursor(hGroupBrowseBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end; *)
end;

Отправлено: 20:48, 22-01-2015 | #2363


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Изображения
Тип файла: jpg 2015-01-23 23-53-16 Скриншот экрана.jpg
(233.0 Kb, 25 просмотров)

Здрастуйте , в чем может быть проблема
http://forum.oszone.net/attachment.p...1&d=1422050080

Отправлено: 00:55, 24-01-2015 | #2364


Пользователь


Сообщения: 148
Благодарности: 49

Профиль | Отправить PM | Цитировать


Юрий_Онищенко@vk, винду активируй
Неизвестный идентификатор "ImgLoad" - и что не понятного? b2p.iss или botva2.iss поищи там раскомменти #include "_".
Судя по коду выше у тебя нету этого.
narod.ru/disk/7844037001/botva2_0.9.5.130.7z.html
оттуда возьми. там и примеры и библа и примеры

Отправлено: 13:12, 24-01-2015 | #2365


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата sergey3695:
винду активируй
Неизвестный идентификатор "ImgLoad" - и что не понятного? b2p.iss или botva2.iss поищи там раскомменти #include "_".
Судя по коду выше у тебя нету этого.
narod.ru/disk/7844037001/botva2_0.9.5.130.7z.html »
Ахаха , вина подождет , окно прозрачное и мне не мешает))), с ImgLoag , я розобрался еще вчера. Я конешно понимаю что я етот форм уже задолбал с етим вопросом , но уж больно немогу понять именно етот момент с картинкой. Вот вы прислали код , но теперь у меня другой вопрос , как ето превьязать к любой кнопке. Я пытался в етом коде розобраться , но там все процедуры розрошенны , и не используеться модуль ботви. И вы же рание кидаль мне готовый скрипт , я пробЫвал розобраться , но так и не понял как его превьязать к кнопке
Скрытый текст
function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
if not FileExists(ExpandConstant('{tmp}\1.png')) then ExtractTemporaryFile('1.png');
Result:=True;
end;

#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif

const
GWL_WNDPROC = -4;
WM_NCLBUTTONDOWN = $00A1;
type
LPARAM = Integer;
WPARAM = Integer;
LRESULT = Integer;
TFNWndProc = Integer;
var
OldWindowProc: Longint;

function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'CallWindowProc{#A}@user32.dll stdcall';

function WindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
begin
case Msg of
WM_NCLBUTTONDOWN:
begin
Msg := 0;
WizardForm.Close;
end;
end;
Result := CallWindowProc(OldWindowProc, hWnd, Msg, wParam, lParam);
end;

procedure CloseForm(Sender: TObject);
begin
WizardForm.Close;
end;

procedure InitializeWizard;
begin
CreateFormFromImage(wizardform.Handle,ExpandConstant('{tmp}\1.png'));
ImgApplyChanges(WizardForm.Handle);
OldWindowProc := SetWindowLong(WizardForm.Handle, GWL_WNDPROC, CallbackAddr('WindowProc'));
end;

procedure DeinitializeSetup();
begin
SetWindowlong(WizardForm.Handle, GWL_WNDPROC, OldWindowProc);
gdipShutdown;
end;

Последний раз редактировалось Юрий_Онищенко@vk, 24-01-2015 в 13:39.


Отправлено: 13:32, 24-01-2015 | #2366


Пользователь


Сообщения: 148
Благодарности: 49

Профиль | Отправить PM | Цитировать


Юрий_Онищенко@vk, а я вот не пойму там один ник, теперь такой. понаделал акков.
к какой кнопке? (большой и красной). я ж тебе давал пример на кринкелс с кнопкой, что там непонятно?

Отправлено: 16:24, 24-01-2015 | #2367


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Изображения
Тип файла: jpg 2015-01-24 16-06-53 Скриншот экрана.jpg
(156.3 Kb, 16 просмотров)

Цитата sergey3695:
, а я вот не пойму там один ник, теперь такой. понаделал акков.
к какой кнопке? (большой и красной). я ж тебе давал пример на кринкелс с кнопкой, что там непонятно? »
Ники менял потому что они были привязанные к вк , а он у меня взлман
По началу вопрос был как вы привзязали ету процидуру к кнопке , но я потом викупил етот вопрос, я немного изменил код но теперь вот такая ошибка , не подскажете в чем может быть проблема?
И еще можна как то сделать что б форма закрывалась не в углу скритой кнопкой закрить , а нажатием на туже кнопку что окривала ету форму?

http://forum.oszone.net/attachment.p...1&d=1422108545

Отправлено: 17:11, 24-01-2015 | #2368


Пользователь


Сообщения: 148
Благодарности: 49

Профиль | Отправить PM | Цитировать


Юрий_Онищенко@vk, кинь код (на файлобменик с файлами) что сделал, напиши что надо. я переделаю и скину.

Отправлено: 17:16, 24-01-2015 | #2369


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата sergey3695:
кинь код (на файлобменик с файлами) что сделал, напиши что надо. я переделаю и скину. »
я вам скину пример и сам скрипт https://yadi.sk/d/t2Yx2aq1eCz5z

Отправлено: 17:27, 24-01-2015 | #2370



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 7]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34




 
Переход