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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 22-10-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]
Скрипты Inno Setup. Помощь и советы [часть 7]

Отправлено: 08:52, 02-02-2015

 

Аватара для Sotonisto

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


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

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


Еще раз здравствуйте.
Вот наткнулся на такой инсталлятор:

Если флажок напротив "Я ознакомлен..." отсутствует - кнопка "Далее" будет неактивна (в любом случае).

Я попытался сделать нечто похожее (за основу инсталлятора взят ЭТОТ скрипт).
Сначала использовал стандартный пример: создал чекбокс
Код: Выделить весь код
function Read: Boolean;
begin
  Result:= BtnGetEnabled(hNextBtn);
end;

procedure ReadClick(hBtn:HWND);
var
  Check: Boolean;
begin
  Check:=BtnGetChecked(hBtn);
  BtnSetEnabled(hNextBtn, Check);
end;
и добавил в wpSelectDir
Код: Выделить весь код
if BtnGetChecked(ReadCheck)=true then BtnSetEnabled(hNextBtn, true) else BtnSetEnabled(hNextBtn, false);
if BtnGetChecked(ReadCheck)=true then WizardForm.NextButton.Enabled:= true else WizardForm.NextButton.Enabled:= false;
Но, столкнулся с двумя проблемами:
1. Обычно, если на диске недостаточно места, кнопка "Далее" будет неактивной. У меня же после установки флажка она становилась активной (независимо от свободного места).
2. Также "Далее" могла стать активной после выбора диска, на котором было достаточно места, независимо от того, был установлен флажок ("Я...") или нет.

После этого решил в GetFreeSpaceCaption заменить
Код: Выделить весь код
BtnSetEnabled(hNextBtn,not (GetArrayLength(ADisk)>0));
WizardForm.NextButton.Enabled:=not (GetArrayLength(ADisk)>0);
на
Код: Выделить весь код
if BtnGetChecked(ReadCheck)=true then BtnSetEnabled(hNextBtn,not (GetArrayLength(ADisk)>0)) else BtnSetEnabled(hNextBtn, false);
if BtnGetChecked(ReadCheck)=true then WizardForm.NextButton.Enabled:=not (GetArrayLength(ADisk)>0) else WizardForm.NextButton.Enabled:= false;
Вторая проблема решилась, но первая так и осталась.
Прошу помощи у всех, кто в этом разбирается.

-------
Большой шаг вперед, как правило, следствие хорошего пинка под зад.


Отправлено: 02:21, 15-07-2015 | #791



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

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


Старожил


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

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


nik1967, извини, еще один небольшой вопрос : в твоем скрипте (ну или не совсем твоем, но автора мы то не знаем, хотя спасибо ему большое) создается новая страница. Я изучал код, но так и не понял где найти идентификатор этой страницы страницы чтобы предположим добавить на нее картинку или включить ее в панель ну и т.д. Для конкретного инсталятора оно может и не надо, просто изучить хочу. Конкретного руководства по по паскалю для Inno Setup найти не могу, а изучать весь паскаль нет времени. Если не трудно подсажи , пожалуйста.

Последний раз редактировалось Uragan66, 15-07-2015 в 09:18.


Отправлено: 09:09, 15-07-2015 | #792


Аватара для Dodakaedr

Ветеран


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

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


Uragan66, Parent:= MyNewPage.Surface

-------
Inno Setup 5 Ultra Unicode

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

Отправлено: 10:22, 15-07-2015 | #793


Аватара для nik1967

Старожил


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

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


Uragan66, если в качестве родителя, то да, как и написал Dodakaedr: Parent:= MyNewPage.Surface;. А если нужно именно id, то MyNewPage.id

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

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

Отправлено: 11:18, 15-07-2015 | #794


Старожил


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

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


Вложения
Тип файла: rar Inno MUI InstallShield.rar
(50.2 Kb, 19 просмотров)

Dodakaedr, nik1967, Спасибо большое, но ничего у меня не получается, не воспринимает ее компилятор как MyNewPage , ошибка как не в одном то в другом месте, например в этом
коде
HTML код: Выделить весь код
; --- Generated by InnoSetup Script Joiner version 3.0, Jul 22 2009, (c) Bulat Ziganshin <Bulat.Ziganshin@gmail.com>. More info at http://issjoiner.codeplex.com/ ; --- Source: exstracted.iss ------------------------------------------------------------ [Setup] AppName=My Program AppVerName=My Program DefaultDirName={pf}\My Program OutputDir=. Uninstallable=IsChecked CreateUninstallRegKey=IsChecked [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Tasks] ; Дополнительно ; Ярлык(и) на «Рабочем столе» Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked ; Ярлыки в меню «Пуск» Name: "starticon"; Description: "Ярлыки в меню «Пуск»"; GroupDescription: "Дополнительно:"; Check: IsChecked [Icons] Name: "{group}\My Program"; Filename: "{uninstallexe}"; Tasks: starticon Name: "{commondesktop}\My Program"; Filename: "{uninstallexe}"; Tasks: desktopicon [Files] ; Файлы для проверки и демонстрации. При реальном использовании - закомментировать или удалить! Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs [CustomMessages] HeaderLabelPage=Выбор типа установки LabelPage=Выберите нужный тип установки MyRadioCaption_1=Распаковка MyRadioCaption_2=Обычная установка PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен. MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице MyText_2=Будет произведена стандартная установка Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. ExtractedFolder4=Программа установит %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} [code] const DI_NORMAL = 3; var MyNewPage: TWizardPage; Rect: TRect; HIcon: LongInt; AIconFileName: String; MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton; function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall'; function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall'; function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;external 'DrawIconEx@user32.dll stdcall'; function DestroyIcon(hIcon: LongInt): LongInt; external 'DestroyIcon@user32.dll stdcall'; function IsChecked: Boolean; begin Result:= MyRadioBtn_2.checked; end; procedure RadBtnOnClick(Sender: TObject); begin case Sender of MyRadioBtn_1: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; MyRadioBtn_2: begin WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; procedure GetInstTypePage(); begin MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}')); try // в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа. // Можно использовать обычные .ico AIconFileName:= ExpandConstant('{sys}\shell32.dll'); // Rect.Left:= 0; Rect.Top:= 0; Rect.Right:= 32; Rect.Bottom:= 32; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 26); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(138); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 19); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(68); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; except end; with TNewStaticText.Create(WizardForm) do begin Width:= WizardForm.InnerNotebook.Width; Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:PageTextHeader}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_1:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_1 do begin Top:= ScaleY(120); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_1}'); OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(138); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_1}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_2:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_2 do begin Top:= ScaleY(50); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_2}'); Checked:= True; OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(68); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_2}'); Parent:= MyNewPage.Surface; end; end; function ShouldSkipPage1(PageID: Integer): Boolean; begin if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then Result:= True; end; procedure InitializeWizard1(); begin GetInstTypePage(); WizardForm.DiskSpaceLabel.Hide; end; procedure CurPageChanged1(CurPageID: Integer); begin if not IsChecked then begin case CurPageID of wpSelectDir: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; wpInstalling: begin WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; wpFinished: begin WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; end; [Setup] ; --- Source: MUI_InstallShield.iss ------------------------------------------------------------ //====={ Выбор языка }=====\\ [Languages] Name: "rus"; MessagesFile: "compiler:Default.isl" Name: "eng"; MessagesFile: "compiler:Languages\English.isl" [Files] Source: "bottom.bmp"; Flags: dontcopy Source: "topline.bmp"; Flags: dontcopy [code] const SM_CXSCREEN = 0; SM_CYSCREEN = 1; function GetSystemMetrics(nIndex: Integer): Integer; external 'GetSystemMetrics@user32.dll stdcall'; procedure Set_MUI_InstallShield; var MyNewPage, ScreenWidth, ScreenHeight: Integer; begin WizardForm.BEVEL1.Hide; ExtractTemporaryFile('bottom.bmp'); WizardForm.WizardSmallBitmapImage.SetBounds(0, 418, 690, 41); WizardForm.WizardSmallBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\bottom.bmp')); WizardForm.WizardSmallBitmapImage.Parent := WizardForm; ExtractTemporaryFile('topline.bmp'); WizardForm.WizardBitmapImage2.SetBounds(0, 53, 690, 2); WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\topline.bmp')); WizardForm.WizardBitmapImage2.Parent := WizardForm; WizardForm.SelectDirBitmapImage.Hide; WizardForm.SelectGroupBitmapImage.Hide; WizardForm.Height := 483; WizardForm.Width := 696; ScreenWidth := GetSystemMetrics(SM_CXSCREEN); ScreenHeight := GetSystemMetrics(SM_CYSCREEN); WizardForm.SetBounds((ScreenWidth - WizardForm.Width) div 2, (ScreenHeight - WizardForm.Height) div 2, WizardForm.Width, WizardForm.Height); WizardForm.BACKBUTTON.SetBounds(296, 427, 77, 22); WizardForm.NEXTBUTTON.SetBounds(378, 427, 77, 22); WizardForm.CANCELBUTTON.SetBounds(600, 427, 77, 22); WizardForm.WizardBitmapImage.SetBounds(0, 55, 171, 363); WizardForm.WizardBitmapImage.Parent := WizardForm; WizardForm.WelcomePage.Parent.SetBounds(171,55,519,363); WizardForm.WelcomePage.Color := $00AB663D; WizardForm.FinishedPage.Color := $00AB663D; WizardForm.LicensePage.Color := $00AB663D; WizardForm.PasswordPage.Color := $00AB663D; WizardForm.InfoBeforePage.Color := $00AB663D; WizardForm.UserInfoPage.Color := $00AB663D; WizardForm.SelectDirPage.Color := $00AB663D; WizardForm.SelectDirPage.Parent.Align := alClient; WizardForm.SelectComponentsPage.Color := $00AB663D; WizardForm.SelectProgramGroupPage.Color := $00AB663D; WizardForm.SelectTasksPage.Color := $00AB663D; WizardForm.ReadyPage.Color := $00AB663D; WizardForm.PreparingPage.Color := $00AB663D; WizardForm.InstallingPage.Color := $00AB663D; WizardForm.InfoAfterPage.Color := $00AB663D; WizardForm.MAINPANEL.Parent := WizardForm; WizardForm.MAINPANEL.Color := $00663300; WizardForm.MAINPANEL.SetBounds(0, 0, 690, 53); WizardForm.WELCOMELABEL1.SetBounds(45, 119, 437, 42); WizardForm.WELCOMELABEL1.Font.Height := -12; WizardForm.WELCOMELABEL1.Font.Color := clWhite; WizardForm.WELCOMELABEL2.SetBounds(85, 167, 378, 160); WizardForm.WELCOMELABEL2.Font.Color := clWhite; WizardForm.PAGENAMELABEL.SetBounds(17, 5, 380, 12); WizardForm.PAGENAMELABEL.Font.Color := clWhite; WizardForm.PAGEDESCRIPTIONLABEL.SetBounds(30, 24, 366, 29); WizardForm.PAGEDESCRIPTIONLABEL.Font.Color := clWhite; WizardForm.LICENSELABEL1.SetBounds(64, 20, 437, 300); WizardForm.LICENSELABEL1.Font.Color := clWhite; WizardForm.LICENSEMEMO.SetBounds(64, 56, 437, 227); WizardForm.LICENSEMEMO.BringToFront; WizardForm.LICENSEACCEPTEDRADIO.Font.Color := clWhite; WizardForm.LICENSEACCEPTEDRADIO.SetBounds(64, 332, 150, 16); WizardForm.LICENSENOTACCEPTEDRADIO.Font.Color := clWhite; WizardForm.LICENSENOTACCEPTEDRADIO.SetBounds(230, 332, 150, 16); WizardForm.INFOBEFORECLICKLABEL.SetBounds(64, 20, 437, 24); WizardForm.INFOBEFORECLICKLABEL.Font.Color := clWhite; WizardForm.INFOBEFOREMEMO.SetBounds(64, 56, 437, 227); WizardForm.INFOAFTERCLICKLABEL.SetBounds(64, 20, 437, 24); WizardForm.INFOAFTERCLICKLABEL.Font.Color := clWhite; WizardForm.INFOAFTERMEMO.SetBounds(64, 56, 437, 227); WizardForm.USERINFONAMELABEL.SetBounds(64, 60, 128, 14); WizardForm.USERINFONAMELABEL.Font.Color := clWhite; WizardForm.USERINFONAMEEDIT.SetBounds(64, 79, 435, 20); WizardForm.USERINFOORGLABEL.SetBounds(64, 112, 128, 14); WizardForm.USERINFOORGLABEL.Font.Color := clWhite; WizardForm.USERINFOORGEDIT.SetBounds(64, 131, 435, 20); WizardForm.USERINFOSERIALLABEL.SetBounds(64, 164, 128, 14); WizardForm.USERINFOSERIALLABEL.Font.Color := clWhite; WizardForm.USERINFOSERIALEDIT.SetBounds(64, 183, 435, 20); WizardForm.SELECTDIRLABEL.SetBounds(64, 20, 437, 24); WizardForm.SELECTDIRLABEL.Font.Color := clWhite; WizardForm.SelectDirBrowseLabel.SetBounds(64, 44, 435, 24); WizardForm.SelectDirBrowseLabel.Font.Color := clWhite; WizardForm.DISKSPACELABEL.SetBounds(72, 277, 60, 14); WizardForm.DISKSPACELABEL.Font.Color := clWhite; WizardForm.BEVEL.SHAPE := bsFrame; WizardForm.BEVEL.SetBounds(64, 283, 437, 45); WizardForm.BEVEL.Parent := WizardForm.SelectDirPage; WizardForm.DIREDIT.SetBounds(72, 301, 345, 12); WizardForm.DIREDIT.BorderStyle := bsNone; WizardForm.DIREDIT.Color := $00AB663D; WizardForm.DIREDIT.Font.Color := clWhite; WizardForm.DIREDIT.AUTOSELECT := False; WizardForm.DirBrowseButton.SetBounds(420, 296, 77, 23); WizardForm.SELECTCOMPONENTSLABEL.SetBounds(64, 20, 437, 24); WizardForm.SELECTCOMPONENTSLABEL.Font.Color := clWhite; WizardForm.TYPESCOMBO.SetBounds(64, 56, 437, 20); WizardForm.COMPONENTSLIST.SetBounds(64, 80, 437, 227); WizardForm.COMPONENTSDISKSPACELABEL.SetBounds(64, 320, 437, 24); WizardForm.COMPONENTSDISKSPACELABEL.Font.Color := clWhite; WizardForm.SELECTSTARTMENUFOLDERLABEL.SetBounds(64, 20, 437, 36); WizardForm.SELECTSTARTMENUFOLDERLABEL.Font.Color := clWhite; WizardForm.SelectStartMenuFolderBrowseLabel.SetBounds(64, 100, 437, 14); WizardForm.SelectStartMenuFolderBrowseLabel.Font.Color := clWhite; WizardForm.GROUPEDIT.SetBounds(64, 120, 343, 20); WizardForm.GroupBrowseButton.SetBounds(414, 119, 77, 23); WizardForm.READYLABEL.SetBounds(64, 20, 437, 24); WizardForm.READYLABEL.Font.Color := clWhite; WizardForm.READYMEMO.SetBounds(64, 53, 437, 280); WizardForm.FINISHEDHEADINGLABEL.SetBounds(64, 20, 437, 24); WizardForm.FINISHEDHEADINGLABEL.Font.Height := -12; WizardForm.FINISHEDHEADINGLABEL.Font.Color := clWhite; WizardForm.FINISHEDLABEL.SetBounds(64, 60, 437, 14); WizardForm.FINISHEDLABEL.Font.Color := clWhite; WizardForm.RUNLIST.SetBounds(64, 146, 437, 190); WizardForm.RUNLIST.Font.Color := clWhite; WizardForm.STATUSLABEL.SetBounds(64, 20, 437, 14); WizardForm.STATUSLABEL.Font.Color := clWhite; WizardForm.FILENAMELABEL.SetBounds(64, 60, 437, 14); WizardForm.FILENAMELABEL.Font.Color := clWhite; WizardForm.PROGRESSGAUGE.SetBounds(64, 90, 430, 20); WizardForm.PASSWORDLABEL.SetBounds(64, 60, 437, 14); WizardForm.PASSWORDLABEL.Font.Color := clWhite; WizardForm.PASSWORDEDITLABEL.SetBounds(64, 90, 437, 14); WizardForm.PASSWORDEDITLABEL.Font.Color := clWhite; WizardForm.PASSWORDEDIT.SetBounds(64, 110, 400, 20); WizardForm.SELECTTASKSLABEL.SetBounds(64, 20, 437, 14); WizardForm.SELECTTASKSLABEL.Font.Color := clWhite; WizardForm.TASKSLIST.SetBounds(64, 45, 430, 300); WizardForm.TASKSLIST.Color := $00AB663D; WizardForm.TASKSLIST.Font.Color := clWhite; WizardForm.MyNewPage.Font.Color := clWhite; end; function CheckSerial(Serial: String): Boolean; begin Result := Serial = '123456'; end; procedure InitializeWizard2(); begin Set_MUI_InstallShield; end; [Setup] ; --- Dispatching code ------------------------------------------------------------ [code] function ShouldSkipPage(PageID: Integer): Boolean; begin Result := ShouldSkipPage1(PageID); if not Result then exit; end; procedure InitializeWizard(); begin InitializeWizard1(); InitializeWizard2(); end; procedure CurPageChanged(CurPageID: Integer); begin CurPageChanged1(CurPageID); end;

ругается что нет такого идентификатора (хотел цвет страницы поменять)

Последний раз редактировалось Uragan66, 15-07-2015 в 12:56.


Отправлено: 12:37, 15-07-2015 | #795


Аватара для nik1967

Старожил


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

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


Uragan66, страница кастомная, создана пользователем, и к WizardForm отношения не имеет. То есть вместо WizardForm.MyNewPage.Color := $00AB663D; нужно MyNewPage.Surface.Color := $00AB663D;

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


Последний раз редактировалось nik1967, 15-07-2015 в 13:06.

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

Отправлено: 12:57, 15-07-2015 | #796


Старожил


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

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


nik1967, спасибо !

Отправлено: 16:28, 15-07-2015 | #797


Старожил


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

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


Всем доброго времени суток ! Может кто подскажет как в этом
коде
[code]
Код: Выделить весь код
procedure iswin7_add_glass(Handle:HWND; Left, Top, Right, Bottom : Integer; GDIPLoadMode: boolean);external 'iswin7_add_glass@files:iswin7.dll stdcall';
procedure iswin7_add_button(Handle:HWND);external 'iswin7_add_button@files:iswin7.dll stdcall';
procedure iswin7_free;external 'iswin7_free@files:iswin7.dll stdcall';

// функция проверки того, сработает iswin7, или нет
function GlassEnabled:Boolean;external 'GlassEnabled@files:dwmEnabled.dll stdcall';


// Сделал отдельную процедуру создания лого,чтоб удобно было - вызываем и указываем размеры
procedure LogoImage(ImgLeft,ImgTop,ImgWidth,ImgHeight:Integer);
var BtnPanel:TPanel;
begin
ExtractTemporaryFile('gnom.bmp');
//-----------start----------LOGO-----------//
     BtnPanel:=TPanel.Create(WizardForm)
     BtnPanel.SetBounds(ImgLeft,ImgTop,ImgWidth,ImgHeight);
     BtnPanel.Cursor:=crHand
     BtnPanel.ParentColor := True;
     //BtnPanel.OnClick:=@logoOnClick
     BtnPanel.Parent:=WizardForm

 with TBitmapImage.Create(WizardForm) do
  begin
    Parent := BtnPanel;
    SetBounds(0,0,BtnPanel.Width,BtnPanel.Height);
    // Собственно, применение
    if GlassEnabled then BackColor := BtnPanel.Color else BackColor := clNone;
    
    ReplaceColor := clBlack; // это обязательно
    ReplaceWithColor := clNone;
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\gnom.bmp'));
  end;
end;
procedure InitializeWizard16();
begin
    if GlassEnabled then WizardForm.WelcomeLabel2.Caption:='Включено' else  WizardForm.WelcomeLabel2.Caption:='Выключено';
  // Необходимо добавлять каждую кнопку расположенную на стекле
  // до инициализации стекла для того что бы не было дыр ))
  iswin7_add_button(WizardForm.BackButton.Handle);
  iswin7_add_button(WizardForm.NextButton.Handle);
  iswin7_add_button(WizardForm.CancelButton.Handle);
  // Параметр True не трогать он для htuos ))
  iswin7_add_glass(WizardForm.Handle, 0, 0, 0, 47, True);

// Вызываем лого, и говорим ему координаты.
 LogoImage(ScaleX(618),ScaleY(0),ScaleX(69),ScaleY(50));
end;

procedure DeinitializeSetup11();
begin
  iswin7_free;
end;
на лого прикрепить кликабельную ссылку ? Заранее благодарен за помощь

Отправлено: 21:00, 16-07-2015 | #798


Аватара для Sotonisto

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


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

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


Uragan66, попробуйте так:
Код: Выделить весь код
procedure LogoOnClick(Sender: TObject);
var
  ErrorCode: Integer;
begin
  ShellExec('open', 'http://www.google.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

-------
Большой шаг вперед, как правило, следствие хорошего пинка под зад.


Отправлено: 05:55, 17-07-2015 | #799


Старожил


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

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


Sotonisto, так уже пробовал
Скрытый текст
[code]
Код: Выделить весь код
procedure iswin7_add_glass(Handle:HWND; Left, Top, Right, Bottom : Integer; GDIPLoadMode: boolean);external 'iswin7_add_glass@files:iswin7.dll stdcall';
procedure iswin7_add_button(Handle:HWND);external 'iswin7_add_button@files:iswin7.dll stdcall';
procedure iswin7_free;external 'iswin7_free@files:iswin7.dll stdcall';

// функция проверки того, сработает iswin7, или нет
function GlassEnabled:Boolean;external 'GlassEnabled@files:dwmEnabled.dll stdcall';


// Сделал отдельную процедуру создания лого,чтоб удобно было - вызываем и указываем размеры
procedure LogoImage(ImgLeft,ImgTop,ImgWidth,ImgHeight:Integer);
var BtnPanel:TPanel;
begin
ExtractTemporaryFile('gnom.bmp');
//-----------start----------LOGO-----------//
     BtnPanel:=TPanel.Create(WizardForm)
     BtnPanel.SetBounds(ImgLeft,ImgTop,ImgWidth,ImgHeight);
     BtnPanel.Cursor:=crHand
     BtnPanel.ParentColor := True;
     //BtnPanel.OnClick:=@logoOnClick
     BtnPanel.Parent:=WizardForm



 with TBitmapImage.Create(WizardForm) do
  begin
    Parent := BtnPanel;
    SetBounds(0,0,BtnPanel.Width,BtnPanel.Height);
    // Собственно, применение
    if GlassEnabled then BackColor := BtnPanel.Color else BackColor := clNone;
    
    ReplaceColor := clBlack; // это обязательно
    ReplaceWithColor := clNone;
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\gnom.bmp'));
  end;
end;

procedure LogoOnClick(Sender: TObject);
var
  ErrorCode: Integer;
begin
  ShellExec('open', 'http://www.google.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure InitializeWizard16();
begin
    if GlassEnabled then WizardForm.WelcomeLabel2.Caption:='Включено' else  WizardForm.WelcomeLabel2.Caption:='Выключено';
  // Необходимо добавлять каждую кнопку расположенную на стекле
  // до инициализации стекла для того что бы не было дыр ))
  iswin7_add_button(WizardForm.BackButton.Handle);
  iswin7_add_button(WizardForm.NextButton.Handle);
  iswin7_add_button(WizardForm.CancelButton.Handle);
  // Параметр True не трогать он для htuos ))
  iswin7_add_glass(WizardForm.Handle, 0, 0, 0, 47, True);

// Вызываем лого, и говорим ему координаты.
 LogoImage(ScaleX(618),ScaleY(0),ScaleX(69),ScaleY(50));
end;

procedure DeinitializeSetup11();
begin
  iswin7_free;
end;
, не работает, может не в том месте кода вставляю ?

Отправлено: 08:03, 17-07-2015 | #800



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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




 
Переход