Inno Setup (создание инсталяционных пакетов). Часть 2

Статус
В этой теме нельзя размещать новые ответы.

Mailchik

Старожил
Проверенный
kingshady,
[SOURCE="inno"][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra
PrivilegesRequired=none
OutputDir=userdocs:Inno Setup Examples Output

[Components]
Name: text; Description: Язык интерфейса:; Types: full; Flags: fixed;
Name: text\rus; Description: Русский; Flags: exclusive;
Name: text\eng; Description: Английский; Flags: exclusive;

[Registry]
Root: HKLM; SubKey: SOFTWARE\CAPCOM\RERC; ValueType: string; ValueName: locale; ValueData: 1049; Components: text\rus; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: CheckError
Root: HKLM; SubKey: SOFTWARE\CAPCOM\RERC; ValueType: string; ValueName: locale; ValueData: 1033; Components: text\eng; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: CheckError[/source]
nazbek010,
[SOURCE="inno"] procedure CancelButtonOnClick(Sender: TObject);
begin
SuspendProc;
MyExitMessage();
if MyExit.ShowModal() = mryes then ISDoneCancel:=1;
ResumeProc;
end;
MyCancelButton.OnClick := @CancelButtonOnClick;[/source]
 
Последнее редактирование:

Adil

Старожил
Как поменять формы выбора каталога, и выбора каталога меню пуск
Пробывал через
[SOURCE="inno"]procedure DirBrowseButtonClick(Sender: TObject);
begin
DirBrowseFormMessage();
end;

with WizardForm.DirBrowseButton do
begin
Parent := WizardForm;
Left := ScaleX(232);
Top := ScaleY(160);
Width := ScaleX(83);
Height := ScaleY(25);
Font.Style:=[fsbold];
Font.Size:=9;
OnClick := @DirBrowseButtonClick;
end;

var
DirBrowseForm: TSetupForm;
DirBevel1, DirBevel2: TBevel;
DirBitmapImage: TBitmapImage;
BrowseEdit: TEdit;
BrowseFolderTree: TFolderTreeView;

procedure DirBrowseFormMessage();
begin
DirBrowseForm := CreateCustomForm();
with DirBrowseForm do
begin
///BorderIcons := [];
Position := poScreenCenter;
ClientHeight := ScaleY(303);
ClientWidth := ScaleX(405);
Caption := ExpandConstant(SetupMessage(msgBrowseDialogTitle));
Font.Style:=[fsbold];
Font.Size:=9;
Font.Color:=clblack;
Font.Name:= 'Comic Sans MS';
Color := clwhite;
end;

BrowseEdit := TEdit.Create(DirBrowseForm);
with BrowseEdit do begin
Parent := DirBrowseForm;
Left := ScaleX(16);
Top := ScaleY(136);
Width := ScaleX(373);
Height := ScaleY(21);
Text := WizardForm.DirEdit.Text;
end;

BrowseFolderTree := TFolderTreeView.Create(DirBrowseForm);
with BrowseFolderTree do begin
Parent := DirBrowseForm;
Left := ScaleX(16);
Top := ScaleY(160);
Width := ScaleX(373);
Height := ScaleY(129);
Directory := WizardForm.DirEdit.Text;
///OnChange := @ObjectFunc;
end;

DirBevel1 := TBevel.Create(DirBrowseForm);
with DirBevel1 do
begin
Name := 'DirBevel1';
Parent := DirBrowseForm;
Left := ScaleX(8);
Top := ScaleY(104);
Width := ScaleX(390);
Height := ScaleY(194);
Shape := bsFrame;
end;

DirBevel2 := TBevel.Create(DirBrowseForm);
with DirBevel2 do
begin
Name := 'DirBevel2';
Parent := DirBrowseForm;
Left := ScaleX(8);
Top := ScaleY(8);
Width := ScaleX(390);
Height := ScaleY(90);
Shape := bsFrame;
end;

DirBitmapImage := TBitmapImage.Create(DirBrowseForm);
with DirBitmapImage do
begin
Name := 'DirBitmapImage';
Parent := DirBrowseForm;
Left := ScaleX(16);
Top := ScaleY(16);
Width := ScaleX(213);
Height := ScaleY(73);
Center := True;
Bitmap.LoadFromResourceName(HInstance, '_IS_Logo');
end;
end;[/source]
Но он вообще теперь не открывает форму
 

Mailchik

Старожил
Проверенный
nazbek010, Может лучше покажешь весь код? Если и в коде у тебя такой же порядок процедур, который ты показал выше, то еще при компиляции у тебя должны были быть ошибки.
 

namquang93

Новичок
Can anyone help me a function to convert TGUID to String ? TGUID is defined as this:
Код:
type
TGUID = record D1: Cardinal; D2: Word; D3: Word; D4: Array [0..8] of Byte; end;
Thanks in advanced : Help:
 

Shegorat

Lord of Madness
Администратор
Can anyone help me a function to convert TGUID to String ? TGUID is defined as this:
I think it will be something like this
Guid2Str
 

Games

Мимокрокодил
Всем привет хотелось бы узнать где можно прочитать или узнать как создать свой красивый инсталлятор?
 
Последнее редактирование:

Shegorat

Lord of Madness
Администратор
Всем привет хотелось бы узнать где можно прочитать или узнать как создать свой красивый инсталлятор?
Руками, батенька, руками...
Сначала создать макет красивого инсталлятора в графическом редакторе, ну а потом реализовать его в коде. Все будет зависеть только от фантазии.
Опять же повторюсь - Как вопрос задашь, так тебе на него и ответят.
 

Games

Мимокрокодил
Руками, батенька, руками...
Сначала создать макет красивого инсталлятора в графическом редакторе, ну а потом реализовать его в коде. Все будет зависеть только от фантазии.
Опять же повторюсь - Как вопрос задашь, так тебе на него и ответят.
Это все я понимаю, в скриптах не особо разбираюсь вот в чем проблема
 

LexBell

Борода
Супер модератор
Примеры. Написана целаю куча примеров, как полноценного оформления, так и различных приемов. что мешает их изучать? Inno Setup - очень мощный инструмент, и довольно простой в освоении, качай примеры, читай русский перевод справки - она так-же дополнена различными примерами, и ставь себе задачу поступательно - не "Хочу все и сразу", а "Хочу все, но согласен учиться".
 

Games

Мимокрокодил
Примеры. Написана целаю куча примеров, как полноценного оформления, так и различных приемов. что мешает их изучать? Inno Setup - очень мощный инструмент, и довольно простой в освоении, качай примеры, читай русский перевод справки - она так-же дополнена различными примерами, и ставь себе задачу поступательно - не "Хочу все и сразу", а "Хочу все, но согласен учиться".
Хорошо спасибо скачал Русская справка к версии 5.5.1, автор перевода BagIra, bugron Chm-версия думаю научусь.
 

sergey3695

Ветеран
Модератор
Блин, хоть убей не помню... Как сделать установщик поверх всех окон? Помню было, знал, но забыл.. блин. :)
 

Mailchik

Старожил
Проверенный
sergey3695, InnoSetup Ultra->Scripts->WindowEffects->Wizard OnTop-NoTop.iss
Ну или вот оригинальный скрипт:
[SOURCE="inno"][Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

Код:
Const
  HWND_TOP = 0;
  HWND_TOPMOST = -1;
  HWND_NOTOPMOST = -2;
  SWP_NOSIZE = $1;
  SWP_NOMOVE = $2;
  SWP_NOZORDER = $4;
  SWP_NOREDRAW = $8;
  SWP_NOACTIVATE = $10;
  SWP_FRAMECHANGED = $20;
  SWP_SHOWWINDOW = $40;
  SWP_HIDEWINDOW = $80;
  SWP_NOCOPYBITS = $100;
  SWP_NOOWNERZORDER = $200;
  SWP_DRAWFRAME = SWP_FRAMECHANGED;
  SWP_NOREPOSITION = SWP_NOOWNERZORDER;

function SetWindowPos(hWnd, hWndInsertAfter, X, Y, cx, cy, wFlags: Longint):Boolean; external 'SetWindowPos@user32.dll stdcall';

procedure DirOnClick(Sender: TObject);
var
  res: Boolean;
  UserSelectDir: String;
begin
  UserSelectDir:= WizardForm.DirEdit.Text;
  res:= BrowseForFolder('Выберите папку из списка и нажмите «ОК»', UserSelectDir, True);
  if res then
    begin
      WizardForm.DirEdit.Text:= UserSelectDir;
    end;
end;

procedure InitializeWizard;
begin
  WizardForm.DirBrowseButton.OnClick:= @DirOnClick;
  SetWindowPos(WizardForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_SHOWWINDOW);
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  SetWindowPos(WizardForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_SHOWWINDOW);
  SetWindowPos(WizardForm.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_SHOWWINDOW);
  Confirm:= False;
  Cancel:= ExitSetupMsgBox;
  if Not Cancel then
    SetWindowPos(WizardForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_SHOWWINDOW);
end;


[/source][/SPOILER]
 
Последнее редактирование:

nik1967

Old Men
Проверенный
sergey3695, Mailchik, у меня есть другой вариант.
 

Adil

Старожил
Привет всем, при создании своей формы выбора папки, как сделать
чтобы выбранная в TFolderTreeView папка, была выбрана и в TNewEdit формы, и в DirEdit
 

aLLeXUs

Участник
nazbek010,
как-то так
Код:
procedure BrowseOnChange(Sender: TObject);
begin
    BrowseText.Text:=AddBackslash(DirTree.Directory) + '{#AppName}';
    DirEdit.Text:=BrowseText.Text;
end;
Код:
DirTree.OnChange:=@BrowseOnChange;
 
  • Like
Реакции: Adil

Winst@n

Участник
Проверенный
Подскажите и извините за нубство в данном вопросе, но как сделать исключение (отключение) одного компонента если уже выбран другой :(.
 

Snoopak96

Старожил
Winst@n,
ты про это?
Код:
procedure CompOnClick(Sender: TObject);
 var
   i: Integer;
 begin
   with WizardForm.ComponentsList do begin
     for i:= 0 to ItemCount -1 do begin
       case i of
         1,5: Checked[i]:=  Checked[9];
         2,3,6,7: ItemEnabled[i]:= not Checked[9];
       end;
     end;
   end;
 end;
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху