Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
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.3.0 [17.01.2015] - Скачать;



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

Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z
Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z
Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 04-04-2018

 

Аватара для TheLeon

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


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

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


Изображения
Тип файла: jpg Снимок.jpg
(152.1 Kb, 13 просмотров)

habib2302, да, возник вопрос, а можно ли отключить на первом пункте меню изображение, чтобы писалось "Наведите курсор.."?(см.скрин)

Секция code
пусто

Последний раз редактировалось TheLeon, 08-04-2018 в 12:07.


Отправлено: 21:26, 07-04-2018 | #11



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

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


Аватара для habib2302

Ветеран


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

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


TheLeon, дайте мне полный скрипт вместе с картинками

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 21:54, 07-04-2018 | #12


Аватара для habib2302

Ветеран


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

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


Цитата TheLeon:
да, возник вопрос, а можно ли отключить на первом пункте меню изображение, чтобы писалось "Наведите курсор.."?(см.скрин) »
нет. т.к. в TBitmapImage нельзя добавлять текст. для текста специально предназначена TLabel. Вот полный вариант скрипта
Код: Выделить весь код
[Setup]
AppName=Моя программа
AppVersion=1.5
AppPublisher=YURSHAT
AppPublisherURL=http://krinkels.org/
DefaultDirName={pf}\Моя программа

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

[CustomMessages]
RU.CompName1=Компонент 1
RU.CompName2=Компонент 2
RU.ComponentsInfo=Наведите курсор мыши на компонент, чтобы прочитать его описание.
RU.ComponentsImgInfo=Наведите курсор мыши на компонент, чтобы посмотреть его превью.
RU.CompDesc1=Описание первого компонента
RU.CompDesc2=Описание второго компонента

[Files]
Source: "compiler:WizModernImage.bmp"; DestName: "CompDescImg1.bmp"; Flags: dontcopy
Source: "compiler:WizModernImage-IS.bmp"; DestName: "CompDescImg2.bmp"; Flags: dontcopy

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: comp1; Description: "{cm:CompName1}"; Types: full
Name: comp2; Description: "{cm:CompName2}"; Types: full

[Code]
type
  TComponentDesc = record
    Description: String;
    ImageName: String;
    Index: Integer;
  end;

var
  CompDescs: array of TComponentDesc;
  CompDescPanel, CompDescImgPanel: TPanel;
  CompDescText: array[1..2] of TLabel;
  CompIndex, LastIndex: Integer;
  CompDescImg: TBitmapImage;

procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);
var
  i: Integer;
begin
  if Index = LastIndex then Exit;
  CompIndex := -1;
  for i := 0 to GetArrayLength(CompDescs) -1 do
  begin
    if (CompDescs[i].Index = Index) then
    begin
      CompIndex := i;
      Break;
    end;
  end;
  if (CompIndex >= 0) and (Area = iaItem) then
  begin
    if not FileExists(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName) then
      ExtractTemporaryFile(CompDescs[CompIndex].ImageName);
    CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName);
    CompDescImg.Show;

    CompDescText[2].Caption := CompDescs[CompIndex].Description;
    CompDescText[2].Enabled := True;
  end else
  begin
    CompDescText[2].Caption := CustomMessage('ComponentsInfo');
    CompDescText[2].Enabled := False;
    CompDescImg.Hide;
  end;
  LastIndex := Index;
end;

procedure CompListMouseLeave(Sender: TObject);
begin
  CompDescImg.Hide;
  CompDescText[2].Caption := CustomMessage('ComponentsInfo');
  CompDescText[2].Enabled := False;
  LastIndex := -1;
end;

procedure AddCompDescription(AIndex: Integer; ADescription: String; AImageName: String);
var
  i: Integer;
begin
  i := GetArrayLength(CompDescs);
  SetArrayLength(CompDescs, i + 1);
  CompDescs[i].Description := ADescription;
  CompDescs[i].ImageName := AImageName;
  CompDescs[i].Index := AIndex - 1
end;

procedure InitializeWizard();
begin
  WizardForm.SelectComponentsLabel.Hide;
  WizardForm.TypesCombo.Hide;
  WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(0), ScaleX(184), ScaleY(205));
  WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;
  WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;

  CompDescImgPanel := TPanel.Create(WizardForm);
  with CompDescImgPanel do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(192), ScaleY(0), ScaleX(225), ScaleY(120));
    BevelInner := bvLowered;
  end;

  CompDescText[1] := TLabel.Create(WizardForm);
  with CompDescText[1] do
  begin
    Parent := CompDescImgPanel;
    SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));
    AutoSize := False;
    WordWrap := True;
    Enabled := False;
    Caption := CustomMessage('ComponentsImgInfo');
  end;

  CompDescImg := TBitmapImage.Create(WizardForm);
  with CompDescImg do
  begin
    Parent := CompDescImgPanel;
    SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));
    Stretch := True;
    Hide;
  end;

  CompDescPanel := TPanel.Create(WizardForm);
  with CompDescPanel do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(192), ScaleY(125), ScaleX(225), ScaleY(80));
    BevelInner := bvLowered;
  end;

  CompDescText[2] := TLabel.Create(WizardForm);
  with CompDescText[2] do
  begin
    Parent := CompDescPanel;
    SetBounds(ScaleX(5), ScaleY(5), CompDescPanel.Width - ScaleX(10), CompDescPanel.Height - ScaleY(10));
    AutoSize := False;
    WordWrap := True;
    Enabled := False;
    Caption := CustomMessage('ComponentsInfo');
  end;

  AddCompDescription(1, CustomMessage('CompDesc1'), 'CompDescImg1.bmp');
  AddCompDescription(2, CustomMessage('CompDesc2'), 'CompDescImg2.bmp');
end;

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 00:08, 08-04-2018 | #13


Аватара для TheLeon

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


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

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


Изображения
Тип файла: png Снимок.PNG
(159.8 Kb, 9 просмотров)

habib2302, тут с описанием компонента, то, что мне не нужно. Да, хотел спросить, можно ли сделать кликабельный баннер и кликабельный текст "сделано в фирме..." (при клике открывался браузер), коды которых вы мне давали?

Секция CODE
пусто

Последний раз редактировалось TheLeon, 08-04-2018 в 15:31.


Отправлено: 12:04, 08-04-2018 | #14


Аватара для habib2302

Ветеран


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

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


Цитата TheLeon:
кликабельный текст "сделано в фирме..." (при клике открывался браузер) »
Код: Выделить весь код
var
  Label1: TLabel;

procedure Label1Click(Sender: TObject);
var ErrorCode: Integer;
begin
ShellExec('open','http://www.innosetup.com','', '', SW_SHOW, ewNoWait, ErrorCode)
end;

procedure InitializeWizard();
begin
  Label1 := TLabel.Create(WizardForm);
  with Label1 do
  begin
    Parent  := WizardForm;
    Caption := 'Developed by Leon and OSzone.net';
    SetBounds(ScaleX(15),ScaleY(338),ScaleX(132),ScaleY(130));
    Font.Size := 7;
    OnClick:=@Label1Click;
    Font.Color:=clBlue;
    Enabled:=True;
    Cursor:=crHand;
  end;
end;
Цитата TheLeon:
кликабельный баннер »
Код: Выделить весь код
var
  Image1: TBitmapImage;

procedure Image1Click(Sender: TObject);
var ErrorCode: Integer;
begin
ShellExec('open','http://www.innosetup.com','', '', SW_SHOW, ewNoWait, ErrorCode)
end;

procedure InitializeWizard();
begin
  Image1 := TBitmapImage.Create(WizardForm);
  with Image1 do
  begin
    Parent  := WizardForm.SelectDirPage;
    SetBounds(ScaleX(0),ScaleY(70),ScaleX(416),ScaleY(170));
    ExtractTemporaryFile('BMP.bmp');
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\BMP.bmp'));
    OnClick:=@Image1Click;
    Enabled:=True;
    Cursor:=crHand;
  end;
end;

-------
Помог? От "Полезное сообщение" не откажусь!!!


Последний раз редактировалось habib2302, 09-04-2018 в 11:45.

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

Отправлено: 14:17, 08-04-2018 | #15


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

Ветеран


Contributor


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

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


Цитата ABBAT:
Как можно определить системный диск ({sd}) ssd или hdd. »
ABBAT, пробуйте.
Скрытый текст

Код: Выделить весь код
[Setup]
AppName=test
AppVerName=test
CreateAppDir=no
DefaultDirName={tmp}
Uninstallable=no
CreateUninstallRegKey=no

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

[Code]
#define A = (Defined UNICODE) ? "W" : "A"
const
  GENERIC_READ = $80000000;
  GENERIC_WRITE = $40000000;
  FILE_SHARE_READ = $1;
  FILE_SHARE_WRITE = $2;
  OPEN_EXISTING = 3;
  INVALID_HANDLE_VALUE = -1;
  IOCTL_ATA_PASS_THROUGH = $0004D02C;
  ATA_FLAGS_DRDY_REQUIRED = $0001;
  ATA_FLAGS_DATA_IN = $0002;
  ID_CMD = $EC;

type
  TATAPassThroughEx = record
    Length: WORD;
    AtaFlags: WORD;
    PathId: Byte;
    TargetId: Byte;
    Lun: Byte;
    ReservedAsUchar: Byte;
    DataTransferLength: DWORD;
    TimeOutValue: DWORD;
    ReservedAsUlong: DWORD;
    DataBufferOffset: DWORD;
    PreviousTaskFile: array [0..7] of Byte;
    CurrentTaskFile: array [0..7] of Byte;
  end;

  TATAIdentifyDeviceQuery = record
    Header: TATAPassThroughEx;
    Data: array [0..255] of WORD;
  end;

// Device Management Functions
function DeviceIoControlATAIdentifyDeviceQuery(hDevice: THandle; dwIoControlCode: DWORD; var lpInBuffer: TATAIdentifyDeviceQuery; nInBufferSize: DWORD; out lpOutBuffer: TATAIdentifyDeviceQuery; nOutBufferSize: DWORD; out lpBytesReturned: DWORD; lpOverlapped: DWORD): BOOL; external 'DeviceIoControl@kernel32.dll stdcall';

// File Management Functions
function CreateFile(lpFileName: string; dwDesiredAccess, dwShareMode: DWORD; lpSecurityAttributes: Longint; dwCreationDisposition, dwFlagsAndAttributes: DWORD; hTemplateFile: THandle): THandle; external 'CreateFile{#A}@kernel32.dll stdcall';

// Handle and Object Functions
function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall';

/////////////////////////////////////////////////////////
function IsDriveSSD(const ADriveLetter: string): Boolean;
var
  BytesReturned: DWORD;
  DeviceHandle: THandle;
  ATAIdentifyDeviceQuery: TATAIdentifyDeviceQuery;
begin
  Result := False;
  try
    DeviceHandle := CreateFile(Format('\\.\%s', [ADriveLetter]), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    if DeviceHandle = INVALID_HANDLE_VALUE then
      RaiseException(SysErrorMessage(DLLGetLastError));

    ATAIdentifyDeviceQuery.Header.Length := SizeOf(ATAIdentifyDeviceQuery.Header);
    ATAIdentifyDeviceQuery.Header.AtaFlags := ATA_FLAGS_DATA_IN or ATA_FLAGS_DRDY_REQUIRED;
    ATAIdentifyDeviceQuery.Header.DataTransferLength := SizeOf(ATAIdentifyDeviceQuery.Data);
    ATAIdentifyDeviceQuery.Header.TimeOutValue := 3;
    ATAIdentifyDeviceQuery.Header.DataBufferOffset := SizeOf(ATAIdentifyDeviceQuery.Header);
    ATAIdentifyDeviceQuery.Header.CurrentTaskFile[6{ = Command/Status register }] := ID_CMD; // ATA IDENTIFY DEVICE command

    if not DeviceIoControlATAIdentifyDeviceQuery(DeviceHandle, IOCTL_ATA_PASS_THROUGH, ATAIdentifyDeviceQuery, SizeOf(ATAIdentifyDeviceQuery), ATAIdentifyDeviceQuery, SizeOf(ATAIdentifyDeviceQuery), BytesReturned, 0) then
    begin
      Log(Format('DeviceIoControl failed: %s', [SysErrorMessage(DLLGetLastError)]));
      Exit;
    end;
    Result := ATAIdentifyDeviceQuery.Data[{ Word }217{: Nominal media rotation rate }] = 1;
  finally
    if DeviceHandle > 0 then
      CloseHandle(DeviceHandle);
  end;
end;

///////////////////////////
procedure InitializeWizard;
begin
  if IsDriveSSD(ExpandConstant('{sd}')) then
    MsgBox('SSD', mbInformation, MB_OK)
  else
    MsgBox('No SSD', mbInformation, MB_OK);
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:28, 08-04-2018 | #16


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


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

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


El Sanchez,
Цитата:
пробуйте
Спасибо большое. Отлично работает.

Отправлено: 21:58, 08-04-2018 | #17


Аватара для TheLeon

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


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

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


El Sanchez, здравствуйте, сможете ли помочь с задуманным?

1.Можно ли сделать шапку, похожую на данную, также текст, слева иконка(любого формата), а справа иконка "Вопроса", при наведении на которую, вылезает подсказка? (см.скрин 1)
2.Можно ли сделать анимированный баннер(или слайд-шоу)? (см.скрин 2)
3.Можно ли при наведении, именно на первый пункт, показывало в превью изображения "Наведите курсор..."? (см.скрин 3)
4.Можно ли сделать подобный стиль для кнопок(не меня размеры, просто стиль)? (см.скрин 4)

Скрин 1: https://a.radikal.ru/a05/1804/e9/0e14377bc14b.jpg
Скрин 2: https://d.radikal.ru/d28/1804/c9/5c42c37af7fe.png
Скрин 3: https://d.radikal.ru/d43/1804/92/c9c776c58eaa.png
Скрин 4: https://d.radikal.ru/d26/1804/fa/eaa9c86a90f9.jpg

.ISS
пусто

Последний раз редактировалось TheLeon, 11-04-2018 в 19:10.


Отправлено: 19:09, 10-04-2018 | #18


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

Ветеран


Contributor


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

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


Цитата TheLeon:
1.Можно ли сделать шапку, похожую на данную, также текст, слева иконка(любого формата), а справа иконка "Вопроса", при наведении на которую, вылезает подсказка? (см.скрин 1) »
TheLeon, пример
Скрытый текст

Код: Выделить весь код
[Setup]
AppName=test
AppVerName=test
DefaultDirName={tmp}
Uninstallable=no
CreateUninstallRegKey=no
LicenseFile=compiler:license.txt

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

[Messages]
ru.WizardLicense=Сканирование...

[Code]
//////////////////////////
procedure ChangeMainPanel;
var
  HelpBitmap: TBitmapImage;
begin
  WizardForm.PageDescriptionLabel.Hide;

  with WizardForm.WizardSmallBitmapImage do
  begin
    Left := ScaleX(10);
    Top := (Parent.Height - Height) div 2;
  end;

  HelpBitmap := TBitmapImage.Create(WizardForm.MainPanel);
  with HelpBitmap do
  begin
    Parent := WizardForm.MainPanel;
    Bitmap.LoadFromFile('{#CompilerPath }\WizModernSmallImage-IS.bmp');
    AutoSize := True;
    Left := Parent.Width - Width - ScaleX(10);
    Top := (Parent.Height - Height) div 2;
    ShowHint := True;
    Hint := 'Sample text';
  end;

  with WizardForm.PageNameLabel do
  begin
    Font.Color := clGray;
    Font.Size := 14;
    Font.Style := [];
    AdjustHeight;
    Left := WizardForm.WizardSmallBitmapImage.Left + WizardForm.WizardSmallBitmapImage.Width + ScaleX(10);
    Top := (Parent.Height - Height) div 2;
    Width := HelpBitmap.Left - Left - ScaleX(10);
  end;
end;

///////////////////////////
procedure InitializeWizard;
begin
  ChangeMainPanel;
end;

Цитата TheLeon:
2.Можно ли сделать анимированный баннер(или слайд-шоу)? (см.скрин 2) »
TheLeon, пример
Скрытый текст

Код: Выделить весь код
[Setup]
AppName=test
AppVerName=test
DefaultDirName={tmp}
Uninstallable=no
CreateUninstallRegKey=no

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

[Code]
#define A = (Defined UNICODE) ? "W" : "A"
const
  WS_CHILD = $40000000;
  WS_VISIBLE = $10000000;
  WS_DISABLED = $08000000;

// ATL Functions
function AtlAxWinInit: BOOL; external 'AtlAxWinInit@atl.dll stdcall';
function AtlAxCreateControl(lpszName: string; hWnd: HWND; pStream, ppUnkContainer: Longint): HResult; external 'AtlAxCreateControl@atl.dll stdcall';

// Window Functions
function GetSysColor(nIndex: Integer): DWORD; external 'GetSysColor@user32.dll stdcall';
function CreateWindowEx(dwExStyle: DWORD; lpClassName, lpWindowName: string; dwStyle: DWORD; x, y, nWidth, nHeight: Integer; hWndParent: HWND; hMenu: HMENU; hInstance, lpParam: Longint): HWND; external 'CreateWindowEx{#A}@user32.dll stdcall';
function DestroyWindow(hWnd: HWND): BOOL; external 'DestroyWindow@user32.dll stdcall';

var
  GIFWndHandle: HWND;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function ShowAnimatedGIF(AWndParent: HWND; ALeft, ATop, AWidth, AHeight: Integer; AUrl: string; AColor: TColor): HWND;
(*
Parameters:
  AWndParent...: A handle to the parent window
  ALeft........: The initial horizontal position of the window
  ATop.........: The initial vertical position of the window
  AWidth.......: The width of the window
  AHeight......: The height of the window
  AUrl.........: The URL or full path of the GIF file
  AColor.......: Color background
Return value:
  A handle to ActiveX control host window
*)
var
  HTMLStr: string;
  ResultCode: HResult;
begin
  if not AtlAxWinInit then Exit;
  Result := CreateWindowEx(0, 'AtlAxWin', '', WS_CHILD or WS_VISIBLE or WS_DISABLED, ALeft, ATop, AWidth, AHeight, AWndParent, 0, 0, 0);
  if Result = 0 then
    RaiseException(SysErrorMessage(DLLGetLastError));

  if AColor < 0 then
    AColor := GetSysColor(AColor and $0000FF);
  HTMLStr := Format('about:<html><body leftmargin="0" topmargin="0" scroll="no" bgcolor="#%.2x%.2x%.2x"><p align="center"><img src="%s" height="100%%"></img></p></body></html>', [AColor and $0000FF, AColor and $00FF00 shr 8, AColor and $FF0000 shr 16, AUrl]);

  ResultCode := AtlAxCreateControl(HTMLStr, Result, 0, 0);
  if ResultCode <> 0 then
    RaiseException(SysErrorMessage(ResultCode));
end;

///////////////////////////
procedure InitializeWizard;
begin
  GIFWndHandle := ShowAnimatedGIF(WizardForm.SelectDirPage.Handle,
    0, WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ScaleY(5), WizardForm.SelectDirPage.Width, WizardForm.DiskSpaceLabel.Top - WizardForm.DirEdit.Top - WizardForm.DirEdit.Height - ScaleY(5),
    'https://media.giphy.com/media/9y0qXExCElAgU/giphy.gif', WizardForm.SelectDirPage.Color);
end;

////////////////////////////
procedure DeinitializeSetup;
begin
  if GIFWndHandle <> 0 then
    DestroyWindow(GIFWndHandle);
end;

Цитата TheLeon:
3.Можно ли при наведении, именно на первый пункт, показывало в превью изображения "Наведите курсор..."? (см.скрин 3) »
TheLeon, в ShowCompDescription после CompDescImg.Show; дописываете:
Скрытый текст

Код: Выделить весь код
if Index = 0 then
  CompDescText.Caption := 'Наведите курсор...'
else
  CompDescText.Caption := '';

Цитата TheLeon:
4.Можно ли сделать подобный стиль для кнопок(не меня размеры, просто стиль)? (см.скрин 4) »
TheLeon, ISSkin, ISSkinEx, vcl-styles-plugins, SkinSharp.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:12, 11-04-2018 | #19


Аватара для ROMKA-1977

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


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

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


Здраствуйте, ув. форумчане. Подскажите пож. Возникла следующая проблема:
1. Создана кастомная страница
Код: Выделить весь код
var
  Page: TWizardPage;

procedure InitializeWizard();
begin
 Page := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');
end;
2. Необходимо создать панель расположенную на WizardForm но так чтобы она отображалась только при отображении кастомной страницы.
Код: Выделить весь код
var
  Test_pnl: TPanel;

procedure InitializeWizard();
begin
  Test_pnl:= TPanel.Create(WizardForm);
  with Test_pnl do
  begin
    Top:= ScaleY(60);
    Width:= ScaleX(497);
    Height:= ScaleY(253);
    BevelOuter:= bvNone;
    Color := clLime;
    Parent:= WizardForm;
  end;
end;
Со стандартными страницами всё ясно на как быть в таком случае ?

Отправлено: 21:14, 24-04-2018 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты 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




 
Переход