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

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

GVS276

Старожил
Проверенный
Winst@n, Молодец..., красиво

Добавлено через 4 минуты
Только вот форму таскать нельзя

Добавлено через 2 минуты
да и когда закрываешь инсталл, такое чудо появляется:


Добавлено через 5 минут
Видео
http://rghost.ru/29948411
 

Snoopak96

Старожил
Winst@n,
Врубаешь аэро - не работает захват.
С выключенным аэро вот такая фигня при потере фокуса:
 
Последнее редактирование:

Winst@n

Участник
Проверенный
Snoopak96,
Я в курсе всего этого. Это лишь пример,данных версии с приблодой аж 7 штук рабочая лишь 2е и то только с iswin. Все выглядит криво так как нет хундла у окна TFolderTreeView.
Если кому нужен пример всех этих писанин то вот ловите http://rghost.ru/30042421
На данный момент другого варианта я не нашел xто бы повесить картинку.
VinTagE,
Форму можно таскать но за самый край с iswin так же но нет провала. Если кто и будет переделать то старая версия iswin вам в помощь.
 
Последнее редактирование:

Winst@n

Участник
Проверенный
Возник вопрос как в коде указать файл (rtf и т.д) для wpLicense. Не через секцию Setup , а именно через код.
Впервые столкнулся с этой стр. и мало что о ней знаю.

Поставлю вопрос по другому,как выгрузить текст из вне в TMemo.

Вопрос снят.
Сделал,но есть одно но не понимает кодировку.
 
Последнее редактирование:

Edison007

Ветеран
Модератор
v1nt
Код:
[_code] 
var
  WelcomeLabel1, WelcomeLabel2, FinishedLabel, FinishedHeadingLabel: TLabel; 
  
procedure InitializeWizard(); 
begin 
  WizardForm.WizardBitmapImage.Width:= ScaleX(497); 
  WizardForm.WizardBitmapImage2.Width:= ScaleX(497); 

  WelcomeLabel1:= TLabel.Create(WizardForm); 
  WelcomeLabel1.AutoSize:= False; 
  with WizardForm.WelcomeLabel1 do 
  WelcomeLabel1.SetBounds(Left, Top, Width, Height); 
  WelcomeLabel1.Font:= WizardForm.WelcomeLabel1.Font 
  WelcomeLabel1.Font.Color:= clWhite; 
  WelcomeLabel1.Transparent:= True; 
  WelcomeLabel1.WordWrap:= true; 
  WelcomeLabel1.Caption:= WizardForm.WelcomeLabel1.Caption; 
  WelcomeLabel1.Parent:= WizardForm.WelcomePage 
  
  WelcomeLabel2:= TLabel.Create(WizardForm); 
  WelcomeLabel2.AutoSize:= False; 
  with WizardForm.WelcomeLabel2 do 
  WelcomeLabel2.SetBounds(Left, Top, Width, Height); 
  WelcomeLabel2.Font:= WizardForm.WelcomeLabel2.Font 
  WelcomeLabel2.Font.Color:= clWhite; 
  WelcomeLabel2.Transparent:= True; 
  WelcomeLabel2.WordWrap:= true; 
  WelcomeLabel2.Caption:= WizardForm.WelcomeLabel2.Caption; 
  WelcomeLabel2.Parent:= WizardForm.WelcomePage 
   
  FinishedHeadingLabel:= TLabel.Create(WizardForm); 
  FinishedHeadingLabel.AutoSize:= False; 
  with WizardForm.FinishedHeadingLabel do 
  FinishedHeadingLabel.SetBounds(Left, Top, Width, Height); 
  FinishedHeadingLabel.Font:= WizardForm.FinishedHeadingLabel.Font 
  FinishedHeadingLabel.Font.Color:= clWhite; 
  FinishedHeadingLabel.Transparent:= True; 
  FinishedHeadingLabel.WordWrap:= true; 
  FinishedHeadingLabel.Caption:= WizardForm.FinishedHeadingLabel.Caption; 
  FinishedHeadingLabel.Parent:= WizardForm.FinishedPage 
  
  FinishedLabel:= TLabel.Create(WizardForm); 
  FinishedLabel.AutoSize:= False; 
  with WizardForm.FinishedLabel do 
  FinishedLabel.SetBounds(Left, Top, Width, Height); 
  FinishedLabel.Font:= WizardForm.FinishedLabel.Font 
  FinishedLabel.Font.Color:= clWhite; 
  FinishedLabel.Transparent:= True; 
  FinishedLabel.WordWrap:= true; 
  FinishedLabel.Caption:= WizardForm.FinishedLabel.Caption; 
  FinishedLabel.Parent:= WizardForm.FinishedPage 
  
  WizardForm.WelcomeLabel1.Hide; 
  WizardForm.WelcomeLabel2.Hide; 
  WizardForm.FinishedLabel.Hide; 
  WizardForm.FinishedHeadingLabel.Hide; 
end; 
  
procedure CurPageChanged(CurPageID: Integer); 
begin 
  FinishedLabel.Caption:= WizardForm.FinishedLabel.Caption; 
end;
 

Winst@n

Участник
Проверенный
South,
Спс
Выше я написал что сделал . Но странно читает у меня только rtf формат. Если даю для загрузки txt то пишет что не может прочесть файл.

Пример как сделал
[_Code]
procedure InitializeWizard();
begin
WizardForm.LicenseMemo.Lines.LoadFromFile('eula.rtf');
WizardForm.LicenseAcceptedRadio.Checked:= true;
WizardForm.LicenseMemo.SetBounds(ScaleX(45),ScaleY(318), ScaleX(420), ScaleY(200));
WizardForm.LicenseMemo.BorderStyle:= bsNone;
//WizardForm.LicenseMemo.ScrollBars:= ssBoth;
//WizardForm.LicenseMemo
WizardForm.LicenseMemo.Parent:=WizardForm
end;

Если указать файл через секцию сетап то все читает нормально.
 
Последнее редактирование:

South

Знаток
Проверенный
Winst@n,
1. если не ошибаюсь манипуляции по изменению родителя LicenseMemo пересоздают его, поэтому LoadFromFile в самый конец работы с LicenseMemo,
Код:
[_Code]
procedure InitializeWizard();
begin
WizardForm.LicenseAcceptedRadio.Checked:= true;
WizardForm.LicenseMemo.SetBounds(ScaleX(45),ScaleY (318), ScaleX(420), ScaleY(200));
WizardForm.LicenseMemo.BorderStyle:= bsNone;
//WizardForm.LicenseMemo.ScrollBars:= ssBoth;
//WizardForm.LicenseMemo
WizardForm.LicenseMemo.Parent:=WizardForm
WizardForm.LicenseMemo.Lines.LoadFromFile('eula.rtf');
end;
тогда будет подключаться dll для отображения форматирования

2.ну и в [Setup] добавь LicenseFile=hz.txt, можно пустой, главное, чтобы эта строчка была. почему-то в этом случае нормально читаются txt-файлы как в ANSI так и в UNICODE, а rtf'ы понимаются как rtf'ы, а не как текстовые. с чем это связано без понятия, не разбирался

ЗЫ может где и ошибаюсь, давно ничего не писал. да и RichEdit в инно такой же темный лес как и MainForm
 

Winst@n

Участник
Проверенный
South,
ЗЫ может где и ошибаюсь, давно ничего не писал. да и RichEdit в инно такой же темный лес как и MainForm
Согласен. Вчера сам с этим столкнулся.

Не работало так же,но вот в чем загвоздка.
Решил добить первый вариант который я делал через стринг.

[Setup]
AppName=License
AppVersion=1.0
AppPublisher=Winst@n, Inc.
DefaultDirName={pf}\License
DefaultGroupName=License
AllowNoIcons=yes
OutputDir=.

[Files]
Source: License.txt ; Flags: dontcopy

Код:
procedure InitializeWizard();
var License: String;
begin
ExtractTemporaryFile('License.txt');
License:= ExpandConstant ('{tmp}\License.txt')
WizardForm.LicenseAcceptedRadio.Checked:= true;
WizardForm.LicenseMemo.SetBounds(ScaleX(45),ScaleY (18), ScaleX(420), ScaleY(200));
WizardForm.LicenseMemo.BorderStyle:= bsNone;
WizardForm.LicenseMemo.Parent:=WizardForm
WizardForm.LicenseMemo.Clear
WizardForm.LicenseMemo.Lines.LoadFromFile(License);
end;[/SPOILER]
 

South

Знаток
Проверенный
Winst@n, вобщем все гораздо проще. сначала меняем родителя, потом
Код:
WizardForm.LicenseMemo.UseRichEdit:=True;
WizardForm.LicenseMemo.Lines.LoadFromFile(License);
нормально грузит txt-файлы ANSI и UNICODE, ну и rtf соответственно с форматированием отображает. проверил на 5.4.1(а)
хотя года 2-3 назад UseRichEdit не хотел по человечески работать
 

Winst@n

Участник
Проверенный
South,
Ну вот теперь ясно почему нормально не грузился текст из rtf.
Думаю теперь пример полностью готов.
 

shidow

Новичок
Можно как-нибудь перемещать инсталл, если у него скрыты края
BorderStyle := bsNone;
 

Edison007

Ветеран
Модератор
shidow
Код:
[-code]
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall'; 
 
procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
begin 
  ReleaseCapture; 
  SendMessage(WizardForm.Handle,$0112,$F012,0) 
end; 
 
procedure InitializeWizard; 
begin 
with WizardForm do begin 
    BorderStyle:=bsNone; 
    Bevel.Hide; 
    InnerNotebook.Hide; 
    OuterNotebook.Hide; 
    Center; 
    OnMouseDown:=@MouseDown;
  end; 
end;
 

AlexandR

Новичок
Edison007, можно сделать тоже самое, но чтоб перемещалось и отображалось всё кроме границ...
shidow
Код:
[-code]
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall'; 
 
procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
begin 
  ReleaseCapture; 
  SendMessage(WizardForm.Handle,$0112,$F012,0) 
end; 
 
procedure InitializeWizard; 
begin 
with WizardForm do begin 
    BorderStyle:=bsNone; 
    Bevel.Hide; 
    InnerNotebook.Hide; 
    OuterNotebook.Hide; 
    Center; 
    OnMouseDown:=@MouseDown;
  end; 
end;
 
Последнее редактирование:

Snoopak96

Старожил
AlexandR,
Это в винде настраивается, если включён упрощённый стиль - то при захвате и перетаскивании будут отображаться границы, а если включён наилучший вид - перетаскиваются все компоненты вместе с хендлом, с кодом с этим никак не связано.
В реестре где-то эту функцию находил давно.
 
Последнее редактирование:

Winst@n

Участник
Проверенный
AlexandR,
Код:
[_Code]
const
  GWL_STYLE = (-16);
  WS_CAPTION = $C00000;

function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall';

procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(WizardForm.Handle,$0112,$F012,0)
end;

Procedure InitializeWizard();
begin
SetWindowLong(WizardForm.Handle, GWL_STYLE,
GetWindowLong(WizardForm.Handle, GWL_STYLE) and not WS_CAPTION);
with WizardForm do begin
    BorderStyle:=bsNone;
    Bevel.Hide;
    InnerNotebook.Hide;
    OuterNotebook.Hide;
    Center;
    OnMouseDown:=@MouseDown;
end;
end;
 

Snoopak96

Старожил
Winst@n,
Только что пробывал, тоже самое, отображаются только границы при перетаскивании, или он про другое имел ввиду?
 

LexBell

Борода
Супер модератор
Им вот так нужно было:
Код:
[-code]
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall'; 
 
procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
begin 
  ReleaseCapture; 
  SendMessage(WizardForm.Handle,$0112,$F012,0) 
end; 
 
procedure InitializeWizard; 
begin 
with WizardForm do begin 
    BorderStyle:=bsNone;
    OuterNotebook.Top:=ScaleY(15);
    Center; 
    OnMouseDown:=@MouseDown;
  end; 
end;
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху