Ru-Board.club
← Вернуться в раздел «Программы»

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

Автор: iTASmania_Inc
Дата сообщения: 05.06.2007 16:29
Sampron
Sero
А-а, всё получилось - а то преименовывал! Во дурак! СПАСИБО!!!
Автор: Victor_Dobrov
Дата сообщения: 05.06.2007 21:21
Corona Skin with Buttons & SysInfo - полная обложка - кнопки принимают 5 состояний и рисуются без использования сторонних библиотек.
Автор: iTASmania_Inc
Дата сообщения: 05.06.2007 23:13
Вот решил вернуться к вопросам об анимированных кнопках, код к которым когда-то выкладывал Sampron:

1) Эстетический: можно ли избавиться от подчёркиваний под первой буквой слов командных кнопок: Next (Далее), Back (Назад), Browse (Обзор)? Как это ни странно, но с кнопкой Cancel почему-то всё нормально!
2) Серьёзный: подскажите, пожалуйста, как можно избавиться от смещения самого текста командных кнопок, если инсталлятор компилируется с русским интерфейсом. "Установить" смещается к правому краю настолько, что обрезается в конце слова, "Завершить" - еле умещается в границах кнопки.

Скрины с ошибками и собственно код можно скачать отсюда:
http://data.cod.ru/1101692362

Victor_Dobrov
Респект!

Добавлено:
А-а, допёрло! В первом случае подчёркивание происходит из-за того, что в языковых файлах isl как раз в этих словах стоят знаки &!!! А вот второй посложнее - помогите, кто может!
Автор: Sampron
Дата сообщения: 05.06.2007 23:59
iTASmania_Inc
Готовлю финальную версию скинов где много чего доработано также и кнопки.
Вот [more=код][Setup]
AppName=AppName
AppVerName=AppVerName
DefaultDirName={pf}\AppName

[Files]
Source: button.bmp; DestDir: {tmp}; Flags: dontcopy

[Code]
const
ButtonWidth = 80;
ButtonHeight = 23;

bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;

var
ButtonPanel: array [0..4] of TPanel;
ButtonImage: array [0..4] of TBitmapImage;
ButtonLabel: array [0..4] of TLabel;

procedure ButtonLabelClick(Sender: TObject);
var
Button: TButton;
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
case TLabel(Sender).Tag of
bidBack: Button:=WizardForm.BackButton
bidNext: Button:=WizardForm.NextButton
bidCancel: Button:=WizardForm.CancelButton
bidDirBrowse: Button:=WizardForm.DirBrowseButton
bidGroupBrowse: Button:=WizardForm.GroupBrowseButton
else
Exit
end
Button.OnClick(Button)
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then
ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
Image: TBitmapImage;
Panel: TPanel;
Labl: TLabel;

begin
Panel:=TPanel.Create(WizardForm)
Panel.Left:=AButton.Left
Panel.Top:=AButton.Top
Panel.Width:=AButton.Width
Panel.Height:=AButton.Height
Panel.Tag:=AButtonIndex
Panel.Parent:=AButton.Parent
ButtonPanel[AButtonIndex]:=Panel

Image:=TBitmapImage.Create(WizardForm)
Image.Width:=160
Image.Height:=23
Image.Enabled:=False
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'))
Image.Parent:=Panel
ButtonImage[AButtonIndex]:=Image

with TLabel.Create(WizardForm) do begin
Tag:=AButtonIndex
Parent:=Panel
Width:=Panel.Width
Height:=Panel.Height
Transparent:=True
OnClick:=@ButtonLabelClick
OnDblClick:=@ButtonLabelClick
OnMouseDown:=@ButtonLabelMouseDown
OnMouseUp:=@ButtonLabelMouseUp
end

Labl:=TLabel.Create(WizardForm)
Labl.Top:=5 //Указываем положение текста кнопок сверху
Labl.Width:=Panel.Width // Исправлено! Теперь текст будет по центру
Labl.Height:=Panel.Height //
Labl.Autosize:=False //
Labl.Alignment:=taCenter
Labl.Tag:=AButtonIndex
Labl.Transparent:=True
Labl.Font.Color:=clWhite
Labl.Caption:=AButton.Caption
Labl.OnClick:=@ButtonLabelClick
Labl.OnDblClick:=@ButtonLabelClick
Labl.OnMouseDown:=@ButtonLabelMouseDown
Labl.OnMouseUp:=@ButtonLabelMouseUp
Labl.Parent:=Panel
ButtonLabel[AButtonIndex]:=Labl
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
ButtonLabel[AButtonIndex].Caption:=AButton.Caption
ButtonPanel[AButtonIndex].Visible:=AButton.Visible
ButtonLabel[AButtonIndex].Enabled:=Abutton.Enabled
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=True
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=False
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
end;

procedure InitializeWizard();
begin
WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight

WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight

WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight

WizardForm.DirBrowseButton.Left:=337
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Left:=337
WizardForm.GroupBrowseButton.Width:=ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

ExtractTemporaryFile('button.bmp')
LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;[/more] на кнопки где текст по центру.
Автор: iTASmania_Inc
Дата сообщения: 06.06.2007 00:09
Sampron
Обнадёжил!
Жду с нетерпением, думаю выйдет КРУТО!!!!
В чем, в принципе, и не сомневаюсь!!!

Добавлено:
У, вот ток скрипт проглядел!
С объяснениями слегка!!!
ГЛОБАЛЬНО!

Добавлено:
И добавлений не мало!
Автор: Sampron
Дата сообщения: 06.06.2007 00:44
Victor_Dobrov
Респект за классический вид страницы программной группы!
Незнаешь как можно сделать обновление текста (TLabel) на странице установки (WizardForm.StatusLabel и WizardForm.FileNameLabel)?
Автор: paRUS_51
Дата сообщения: 06.06.2007 04:10

Пожалуйста, подскажите кто-нибудь, почему при использовании некоторых скрипов из папки «Examples» в директории программы у меня возникает такое сообщение:


Автор: iTASmania_Inc
Дата сообщения: 06.06.2007 07:10
paRUS_51
У тебя не стоит Inno Setup Preprocessor! Это такая отдельная прога, которая идёт как дополнение к Inno. А просто сам Inno не понимает того, что начинается на # перед секцией [Setup]. Например,

#pragma option -v+
#pragma verboselevel 9
#define Debug

Выход: либо не используй подобных скриптов, либо скачай Inno Setup Quickstartpack 5.1.12, что намного лучше, а впоследствии - и пригодится! Ссылки на закачку либо в шапке странице, либо о чём тебя на ошибке просит Inno. (Даже минимально зная английский можно перевести сообщение на ошибке и догадаться, чего хотит программа )

Добавлено:
Victor_Dobrov
Нашёл небольшую неточность: на странице принятия Лицензионного соглашения у тебя активна кнопка Next, даже если выбран пункт "Не согласен...". То есть перейти нельзя, но при наведении кнопка высвечивается.
Автор: DuhaLab
Дата сообщения: 06.06.2007 11:03
Как сделать новую страницу установки, после страницы выбора папки установки, чтоб там можно было тоже выбирать другую папку установки, естественно для других файлов и как их связять с данной опцией выбора.
Автор: Victor_Dobrov
Дата сообщения: 06.06.2007 14:22

Цитата:
Нашёл небольшую неточность: на странице принятия Лицензионного соглашения у тебя активна кнопка Next, даже если выбран пункт "Не согласен...".

Я в курсе, сколько багов в скине. В ближайшее время исправлю, а так же перепишу с нуля прорисовку кнопок, и добавлю анимацию на wpInstalling.
Sampron
Цитата:
Не знаешь как можно сделать обновление текста (TLabel) на странице установки?
На прозрачном фоне наверное только через таймер, вызывая с переодичностью 0.1 сек команды Label.Caption:=WizardLabel.Caption; Label.Repaint

Автор: Denis_Kokyev
Дата сообщения: 06.06.2007 16:02
Парочка вопросов.
1. Мне нужно сделать выбор установки таким:
При выборе Полная Установка - галочки ставятся на все компоненты
При выборе Установка Лучшего - галочки ставятся только на выбранном
При выборе Выборочная установка - галочки снимаются везде

[Types]
Name: "full"; Description: "Полная установка";
Name: "best"; Description: "Усттановка Лучшего";
Name: "custom"; Description: "Выборочная Установка"; Flags: iscustom

[Components]
Name: "S1"; Description: "Первый"; Types: full;
Name: "S2"; Description: "Второй"; Types: full;
Name: "S3"; Description: "Третий"; Types: full best;
Name: "S4"; Description: "Третий"; Types: full
Name: "S5"; Description: "Третий"; Types: full best;

По идее так же должно работать? А на практике custom не отличается от best

2. При задействовании скина, который я брал из пакета скинов и из последнего руководства (версия inno - .12) - поле выбора компонентов - пустое. Если продолжать установку - выбирается полная установка. Без скина - всё работает нормално - при переходе на стрницу выбора - видно что выбрана Полная Установка.

Код скина с кнопочками:
[more][Code]
Var
LicenseAcceptedText, LicenseNotAcceptedText, NoIconsGroupText: TNewStaticText;
DirBrowseButtonImage, GroupBrowseButtonImage, BackButtonImage, NextButtonImage, CancelButtonImage: TBitmapImage;

Procedure InitializeWizard();
begin
ExtractTemporaryFile('Button.bmp')
WizardForm.Bevel.Hide
WizardForm.Bevel1.Hide
WizardForm.SelectDirBitmapImage.Hide
WizardForm.SelectGroupBitmapImage.Hide

with WizardForm do begin
Position:=poScreenCenter
ClientWidth:=690
ClientHeight:=496
Font.Color:=$ead3b4
Font.Name:='MS Sans Serif'
Font.Style:=[]
with CancelButton do begin
Left:=570
Top:=463
Width:=109
Height:=27
BringToFront
end
with NextButton do begin
Left:=413
Top:=463
Width:=109
Height:=27
BringToFront
end
with BackButton do begin
Left:=293
Top:=463
Width:=109
Height:=27
BringToFront
end
with OuterNotebook do begin
Left:=0
Top:=0
Width:=690
Height:=496
with WelcomePage do begin
Color:=$786956
with WizardBitmapImage do begin
Left:=0
Top:=0
Width:=690
Height:=496
end
with WelcomeLabel2 do begin
Left:=205
Top:=230
Width:=465
Height:=200
end
with WelcomeLabel1 do begin
Left:=205
Top:=190
Width:=465
Height:=28
Font.Size:=8
Font.Color:=$ead3b4
end
end
with InnerPage do begin
with InnerNotebook do begin
Left:=205
Top:=79
Width:=465
Height:=354
BringToFront
Color:=$786956
with LicensePage do begin
with LicenseNotAcceptedRadio do begin
Left:=0
Top:=338
Width:=17
Height:=17
end
with LicenseAcceptedRadio do begin
Left:=0
Top:=318
Width:=17
Height:=17
end
with LicenseMemo do begin
Left:=0
Top:=38
Width:=465
Height:=266
end
with LicenseLabel1 do begin
Left:=0
Top:=0
Width:=465
Height:=28
end
end
with PasswordPage do begin
with PasswordEdit do begin
Left:=0
Top:=50
Width:=465
Height:=21
Color:=$ffffff
Font.Color:=$000000
end
with PasswordEditLabel do begin
Left:=0
Top:=34
Width:=465
Height:=14
end
with PasswordLabel do begin
Left:=0
Top:=0
Width:=465
Height:=28
end
end
with InfoBeforePage do begin
with InfoBeforeMemo do begin
Left:=0
Top:=24
Width:=465
Height:=327
end
with InfoBeforeClickLabel do begin
Left:=0
Top:=0
Width:=465
Height:=14
end
end
with UserInfoPage do begin
with UserInfoSerialEdit do begin
Left:=0
Top:=120
Width:=465
Height:=21
Color:=$ffffff
Font.Color:=$000000
end
with UserInfoSerialLabel do begin
Left:=0
Top:=104
Width:=465
Height:=14
end
with UserInfoOrgEdit do begin
Left:=0
Top:=68
Width:=465
Height:=21
Color:=$ffffff
Font.Color:=$000000
end
with UserInfoOrgLabel do begin
Left:=0
Top:=52
Width:=465
Height:=14
end
with UserInfoNameEdit do begin
Left:=0
Top:=16
Width:=465
Height:=21
Color:=$ffffff
Font.Color:=$000000
end
with UserInfoNameLabel do begin
Left:=0
Top:=0
Width:=465
Height:=14
end
end
with SelectDirPage do begin
with DiskSpaceLabel do begin
Left:=0
Top:=340
Width:=465
Height:=14
end
with DirBrowseButton do begin
Left:=358
Top:=289
Width:=107
Height:=25
end
with DirEdit do begin
Left:=0
Top:=290
Width:=345
Height:=21
Color:=$ffffff
Font.Color:=$000000
end
with SelectDirBrowseLabel do begin
Left:=0
Top:=24
Width:=465
Height:=28
end
with SelectDirLabel do begin
Left:=0
Top:=0
Width:=465
Height:=14
end
end
with SelectComponentsPage do begin
with ComponentsDiskSpaceLabel do begin
Left:=0
Top:=340
Width:=417
Height:=14
end
with ComponentsList do begin
Left:=0
Top:=48
Width:=465
Height:=275
Color:=$ffffff
Font.Color:=$000000
end
with TypesCombo do begin
Left:=0
Top:=24
Width:=465
Height:=21
Color:=$ffffff
Font.Color:=$000000
end
with SelectComponentsLabel do begin
Left:=0
Top:=0
Width:=465
Height:=14
end
end
with SelectProgramGroupPage do begin
with NoIconsCheck do begin
Left:=0
Top:=337
Width:=17
Height:=17
Visible:=True
end
with GroupBrowseButton do begin
Left:=358
Top:=289
Width:=107
Height:=25
end
with GroupEdit do begin
Left:=0
Top:=290
Width:=345
Height:=21
Color:=$ffffff
Font.Color:=$000000
end
with SelectStartMenuFolderBrowseLabel do begin
Left:=0
Top:=24
Width:=465
Height:=28
end
with SelectStartMenuFolderLabel do begin
Left:=0
Top:=0
Width:=465
Height:=14
end
end
with SelectTasksPage do begin
with TasksList do begin
Left:=0
Top:=34
Width:=465
Height:=317
Color:=$786956
end
with SelectTasksLabel do begin
Left:=0
Top:=0
Width:=465
Height:=28
end
end
with ReadyPage do begin
with ReadyMemo do begin
Left:=0
Top:=34
Width:=465
Height:=317
Color:=$786956
end
with ReadyLabel do begin
Left:=0
Top:=0
Width:=465
Height:=28
end
end
with InstallingPage do begin
with FilenameLabel do begin
Left:=0
Top:=16
Width:=465
Height:=16
end
with StatusLabel do begin
Left:=0
Top:=0
Width:=465
Height:=16
end
with ProgressGauge do begin
Left:=0
Top:=42
Width:=465
Height:=21
end
end
with InfoAfterPage do begin
with InfoAfterMemo do begin
Left:=0
Top:=24
Width:=465
Height:=327
end
with InfoAfterClickLabel do begin
Left:=0
Top:=0
Width:=465
Height:=14
end
end
end
with MainPanel do begin
Left:=0
Top:=0
Width:=690
Height:=496
with WizardSmallBitmapImage do begin
Left:=0
Top:=0
Width:=690
Height:=496
end
with PageDescriptionLabel do begin
Left:=25
Top:=25
Width:=500
Height:=14
Color:=$8c846b
Font.Color:=$ead3b4
end
with PageNameLabel do begin
Left:=15
Top:=7
Width:=500
Height:=14
Color:=$8c846b
Font.Color:=$ead3b4
end
end
end
with FinishedPage do begin
Color:=$786956
with WizardBitmapImage2 do begin
Left:=0
Top:=0
Width:=690
Height:=496
end
with NoRadio do begin
Left:=205
Top:=227
Width:=465
Height:=17
end
with YesRadio do begin
Left:=205
Top:=199
Width:=465
Height:=17
end
with RunList do begin
Left:=205
Top:=199
Width:=465
Height:=149
end
with FinishedLabel do begin
Left:=205
Top:=119
Width:=465
Height:=53
end
with FinishedHeadingLabel do begin
Left:=205
Top:=79
Width:=465
Height:=24
Font.Size:=8
Font.Color:=$ead3b4
end
end
end
with BeveledLabel do begin
Left:=10
Top:=468
Enabled:=False
Color:=$5c5249
end
end
LicenseAcceptedText:=TNewStaticText.Create(WizardForm)
with LicenseAcceptedText do begin
Left:=17
Top:=320
Width:=445
Height:=17
Caption:=WizardForm.LicenseAcceptedRadio.Caption
Parent:=WizardForm.LicensePage
end
LicenseNotAcceptedText:=TNewStaticText.Create(WizardForm)
with LicenseNotAcceptedText do begin
Left:=17
Top:=340
Width:=445
Height:=17
Caption:=WizardForm.LicenseNotAcceptedRadio.Caption
Parent:=WizardForm.LicensePage
end
NoIconsGroupText:=TNewStaticText.Create(WizardForm)
with NoIconsGroupText do begin
Left:=17
Top:=340
Width:=445
Height:=17
Caption:=WizardForm.NoIconsCheck.Caption
Parent:=WizardForm.SelectProgramGroupPage
end
DirBrowseButtonImage:=TBitmapImage.Create(WizardForm)
with DirBrowseButtonImage do begin
Left:=-218
Top:=-27
Width:=327
Height:=54
Enabled:=False
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Button.bmp')
Parent:=WizardForm.DirBrowseButton
end
GroupBrowseButtonImage:=TBitmapImage.Create(WizardForm)
with GroupBrowseButtonImage do begin
Left:=-218
Top:=-27
Width:=327
Height:=54
Enabled:=False
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Button.bmp')
Parent:=WizardForm.GroupBrowseButton
end
BackButtonImage:=TBitmapImage.Create(WizardForm)
with BackButtonImage do begin
Left:=0
Top:=0
Width:=327
Height:=54
Enabled:=False
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Button.bmp')
Parent:=WizardForm.BackButton
end
NextButtonImage:=TBitmapImage.Create(WizardForm)
with NextButtonImage do begin
Left:=-109
Top:=0
Width:=327
Height:=54
Enabled:=False
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Button.bmp')
Parent:=WizardForm.NextButton
end
CancelButtonImage:=TBitmapImage.Create(WizardForm)
with CancelButtonImage do begin
Left:=-218
Top:=0
Width:=327
Height:=54
Enabled:=False
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Button.bmp')
Parent:=WizardForm.CancelButton
end
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpWelcome then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpLicense then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpPassword then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpInfoBefore then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpUserInfo then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpSelectDir then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpSelectComponents then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpSelectProgramGroup then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpSelectTasks then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpReady then
begin
NextButtonImage.Left:=0
NextButtonImage.Top:=-27
end
if CurPageID=wpInfoAfter then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=0
end
if CurPageID=wpFinished then
begin
NextButtonImage.Left:=-109
NextButtonImage.Top:=-27
end
end;
[/more]
Автор: Sampron
Дата сообщения: 06.06.2007 19:50
Denis_Kokyev

Цитата:
Код скина с кнопочками:
Подробнее...

Это старая версия скинов в ней много недоработок.
Сюда выложил финальную версию стандартных скинов.
Исправления:
Убрано мерцание между переключениями страниц, решена проблема с цветом текста RTF-файлов на страницах информации, решена проблема исчезновения текста TypesCombo на странице выбора компонентов, на всех скинах анимированные кнопки, и так как многие не могут скрестить другие коды с кодом скина то сделал через препроцессор в отдельном файле.
В ближайшее время сделаю пару скинов с транспарентом.
Автор: iTASmania_Inc
Дата сообщения: 06.06.2007 22:08
Sampron
Класс!
Автор: paRUS_51
Дата сообщения: 07.06.2007 01:46
iTASmania_Inc

Спасибо!!!
Я уже сап позже догнал.

Не подскажешь где найти «get_hw_caps.dll» файл?


Добавлено:

Кто-нибудь подскажите можно ли в Inno Setup вставлять SWF объекты…………….
К примеру, в качестве Splash заставки.
Автор: Denis_Kokyev
Дата сообщения: 07.06.2007 02:31
Sampron
Великое Вам спасибо! А по первому пункту не знаете, что неправильно?

Автор: DuhaLab
Дата сообщения: 07.06.2007 05:56

Цитата:
Не подскажешь где найти «get_hw_caps.dll» файл?


качай отсюда, там 21Кб: http://www.downloads.duhalab.com/other/get_hw_caps.rar

Вопросы:

1. Как сделать новую страницу установки, после страницы выбора папки установки, чтоб там можно было тоже выбирать другую папку установки, естественно для других файлов и как их связять с данной опцией выбора.

2. вот есть скрипт: "Блокировка установки, если запущена Opera"

function NextButtonClick(CurPage: Integer): Boolean;
var s:string; h:Longint;
begin
Result:=True;
If CurPage=6 then begin
h:=FindWindowByClassName('OpWindow');
If (h>0) then begin
MsgBox('Программа установки обнаружила, что сейчас' #13'одна из копий программы Opera выполняется.' #13#13'Для продолжения установки пожалуйста,' #13 'закройте все запущенные окна программы.', mbError, mb_Ok);
Result:=False;
end;end;end;

что и куда нужно внести: нужно, чтоб в сообщение была кнопка "Закрыть Оперу" рядом с кнопкой "ОК" при нажатии которой происходит закрытие приложения (Opera.exe) и установка автоматически продолжилась, если она закрылась. Кнопка "ОК" без изменений оставить.
Автор: Kirgyz
Дата сообщения: 07.06.2007 06:33
Здарова всем!

не подскажете, как сделать при использовании splash-заставки, чтобы была видна только нужная часть картинки, а всё остальное было бы прозрачным.

Заранее сенк
Автор: iTASmania_Inc
Дата сообщения: 07.06.2007 07:09
Kirgyz

Если ты используешь этот скрипт:

[Files]
Source: Splash.bmp; DestDir: {tmp}; Flags: dontcopy
Source: callnsis.dll; DestDir: {tmp}; Flags: dontcopy
Source: AdvSplash.dll; DestDir: {tmp}; Flags: dontcopy

[Code]
procedure callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PChar);
external 'callplug@files:callnsis.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile('Splash.bmp')
ExtractTemporaryFile('AdvSplash.dll')
callplug(0,ExpandConstant('{tmp}\AdvSplash.dll'),'show','3000','2000','1500','0x000000',ExpandConstant('{tmp}\Splash'),'','','','','')
end;

то прозрачной будет та часть рисунка, для которой задан цвет в скрипте!
Найди вот это 0x000000 и редактируй:
Первые 2 ноля после х - красный цвет;
Вторые - зелёный;
Последние - синий;
Значения смотри в Paint - Изменить палитру - Определить цвет...
!!!! ЗНАЧЕНИЯ ДОЛЖНЫ БЫТЬ В ШЕСТНАДЦАТИРИЧНОМ ФОРМАТЕ! ИСПОЛЬЗУЙ ИНЖЕНЕРНЫЙ КАЛЬКУЛЯТОР!!!
Допустим, если стоит 0xff0000 - то прозрачным будет красный цвет, который в Painte имеет характеристику:
КРАСНЫЙ - 255
ЗЕЛЁНЫЙ - 0
СИНИЙ - 0
Автор: Kirgyz
Дата сообщения: 07.06.2007 08:13
iTASmania_Inc
Спасибо большое, всё понятно и доходчиво
Автор: EagleSH
Дата сообщения: 07.06.2007 08:53
Sampron
подскажи плиз, как изменить сообщение (тоесть чтоб не отображался путь, обзор и тд) о вставке другого диска... к примеру чтоб токо было "Вставьте следующий диск", или "Вставьте диск 2".
Автор: Sampron
Дата сообщения: 07.06.2007 10:35
EagleSH
Это нужно в ресурсах править.
Автор: Sero
Дата сообщения: 07.06.2007 10:57
DuhaLab

Цитата:
Как сделать новую страницу установки, после страницы выбора папки установки, чтоб там можно было тоже выбирать другую папку установки, естественно для других файлов и как их связять с данной опцией выбора.


Попробуй так:
[more=код]

Код:
[Files]
Source: OtherFile\*; DestDir: {code:GetDir}; Flags: ignoreversion

[Code]
var
Page: TInputDirWizardPage;
DataDir: String;

procedure InitializeWizard();
begin
Page := CreateInputDirPage(wpSelectDir,
'Select Backup Location', 'Where should backup files be stored?',
'Backup files will be stored in the following folder.'#13#10#13#10 +
'To continue, click Next. If you would like to select a different folder, click Browse.',
False, 'New Folder');

Page.Add('');

Page.Values[0] := ExpandConstant('{pf}\My Company\Backup');

DataDir := Page.Values[0];
end;

function GetDir(Param: String): String;
begin
Result := Page.Values[0];
end;

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo,
MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
b: String;
begin
b := b + MemoDirInfo;
b := b + NewLine + NewLine;
b := b + MemoGroupInfo;
b := b + NewLine + NewLine;
b := b + 'Backup Folder:' + NewLine + Space;
b := b + Page.Values[0];
b := b + NewLine + NewLine;
b := b + MemoTasksInfo;
Result := b;
end;
Автор: EagleSH
Дата сообщения: 07.06.2007 11:55
Sampron
дык в ресурсах ясно, сделал.. думал мож обычным кодом мона.. там же походу TNewDiskForm
Автор: Sampron
Дата сообщения: 07.06.2007 12:19
EagleSH
Через код только TWizardForm редактируется.
Автор: EagleSH
Дата сообщения: 07.06.2007 12:20
Sampron
а, понял, пасиб.
Автор: Sampron
Дата сообщения: 07.06.2007 12:57
EagleSH
Вот сделал патч для ресурсов через батник, содержимое архива распакуй в каталог inno setup и запусти нужный тебе батник.
NewDiskForm.bat - изменяет диалоговое окно вставки диска.
UninstallForm.bat - изменяет диалоговое окно деинсталлятора, полезно будет тем кто использует скины.
Автор: EagleSH
Дата сообщения: 07.06.2007 14:02
Sampron
молодца, токо прикол в том, что у нас они одинаковые получились, за исключением немного разного расположения контента)))

это моя, ток я еще добавил:

SelectDiskLabel2=Пожалуйста, вставьте диск %1 и нажмите «OK».
PathLabel=
FileNotInDir2=Необходимые данные не найдены. Пожалуйста, вставьте правильный диск.

Автор: DuhaLab
Дата сообщения: 07.06.2007 14:19
Sero

Всё рульно, только ещё вопрос: как сделать, чтоб эта страница открывалась только в случае, если в начале установки на соответсвующий радиобокс поставлена галка, вот мой скрипт, как сделать, чтоб твой реагировал на мой, если выбран первый пункт (Russian)?


Код: var
RussianBtn, EnglishBtn, GermanBtn: TRadioButton;
procedure CreateTheWizardPages;
var
LangPage: TWizardPage;
begin
LangPage:=CreateCustomPage(wpWelcome, 'Выберите версию программы OPERA', 'Какой тип поисковика должен быть установлен?');
RussianBtn:=TRadioButton.Create(LangPage);
RussianBtn.Top:=ScaleY(30);
RussianBtn.Width:=LangPage.SurfaceWidth;
RussianBtn.Height:=ScaleY(17);
RussianBtn.Caption:='Установить поисковик для браузера Opera v.9.x';
RussianBtn.Checked:=GetPreviousData('Opera v.9.x', '1') = '1';
RussianBtn.Parent:=LangPage.Surface;

EnglishBtn:=TRadioButton.Create(LangPage);
EnglishBtn.Top:=RussianBtn.Top + ScaleY(30);
EnglishBtn.Width:=LangPage.SurfaceWidth;
EnglishBtn.Height:=ScaleY(17);
EnglishBtn.Caption:='Установить поисковик для браузера Opera v.8.x';
EnglishBtn.Checked:=GetPreviousData('Opera v.8.x', '0') = '1';
EnglishBtn.Parent:=LangPage.Surface;

GermanBtn:=TRadioButton.Create(LangPage);
GermanBtn.Top:=EnglishBtn.Top + ScaleY(30);
GermanBtn.Width:=LangPage.SurfaceWidth;
GermanBtn.Height:=ScaleY(17);
GermanBtn.Caption:='Установить поисковик для браузера Opera v.7.x';
GermanBtn.Checked:=GetPreviousData('Opera v.7.x', '0') = '1';
GermanBtn.Parent:=LangPage.Surface;
end;

begin
CreateTheWizardPages;
end;

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
SetPreviousData(PreviousDataKey, 'Russian', IntToStr(Ord(RussianBtn.Checked)));
SetPreviousData(PreviousDataKey, 'English', IntToStr(Ord(EnglishBtn.Checked)));
SetPreviousData(PreviousDataKey, 'German', IntToStr(Ord(GermanBtn.Checked)));
end;

function Russian: Boolean;
begin
Result:=RussianBtn.Checked;
end;

function English: Boolean;
begin
Result:=EnglishBtn.Checked;
end;

function German: Boolean;
begin
Result:=GermanBtn.Checked;
end;
Автор: paRUS_51
Дата сообщения: 07.06.2007 17:38
DuhaLab

Благодарю!
Автор: Sero
Дата сообщения: 07.06.2007 18:06
DuhaLab
Вот весь [more=код]

Код:
[Files]
Source: Files\*; DestDir: {code:GetDir}; Flags: ignoreversion

[Code]
var
Page: TInputDirWizardPage;
DataDir: String;
RussianBtn, EnglishBtn, GermanBtn: TRadioButton;

procedure CreateTheWizardPages;
var
LangPage: TWizardPage;
begin
LangPage:=CreateCustomPage(wpWelcome, 'Select "OPERA" version', 'Please Select Version');
RussianBtn:=TRadioButton.Create(LangPage);
RussianBtn.Top:=ScaleY(30);
RussianBtn.Width:=LangPage.SurfaceWidth;
RussianBtn.Height:=ScaleY(17);
RussianBtn.Caption:='Russian';
RussianBtn.Checked:=GetPreviousData('Opera v.9.x', '1') = '1';
RussianBtn.Parent:=LangPage.Surface;

EnglishBtn:=TRadioButton.Create(LangPage);
EnglishBtn.Top:=RussianBtn.Top + ScaleY(30);
EnglishBtn.Width:=LangPage.SurfaceWidth;
EnglishBtn.Height:=ScaleY(17);
EnglishBtn.Caption:='English';
EnglishBtn.Checked:=GetPreviousData('Opera v.8.x', '0') = '1';
EnglishBtn.Parent:=LangPage.Surface;

GermanBtn:=TRadioButton.Create(LangPage);
GermanBtn.Top:=EnglishBtn.Top + ScaleY(30);
GermanBtn.Width:=LangPage.SurfaceWidth;
GermanBtn.Height:=ScaleY(17);
GermanBtn.Caption:='German';
GermanBtn.Checked:=GetPreviousData('Opera v.7.x', '0') = '1';
GermanBtn.Parent:=LangPage.Surface;
end;

procedure InitializeWizard();
begin
CreateTheWizardPages

Page := CreateInputDirPage(wpSelectDir,
'Select Backup Location', 'Where should backup files be stored?',
'Backup files will be stored in the following folder.'#13#10#13#10 +
'To continue, click Next. If you would like to select a different folder, click Browse.',
False, 'New Folder');

Page.Add('');

Page.Values[0] := ExpandConstant('{pf}\My Company\Backup');

DataDir := Page.Values[0];
end;

function GetDir(Param: String): String;
begin
Result := Page.Values[0];
end;

function Russian: Boolean;
begin
Result:=RussianBtn.Checked;
end;

function English: Boolean;
begin
Result:=EnglishBtn.Checked;
end;

function German: Boolean;
begin
Result:=GermanBtn.Checked;
end;

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
SetPreviousData(PreviousDataKey, 'Russian', IntToStr(Ord(RussianBtn.Checked)));
SetPreviousData(PreviousDataKey, 'English', IntToStr(Ord(EnglishBtn.Checked)));
SetPreviousData(PreviousDataKey, 'German', IntToStr(Ord(GermanBtn.Checked)));
end;

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo,
MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
b: String;
begin
b := b + MemoDirInfo;
b := b + NewLine + NewLine;
b := b + MemoGroupInfo;
b := b + NewLine + NewLine;
b := b + 'Backup Folder:' + NewLine + Space;
b := b + Page.Values[0];
b := b + NewLine + NewLine;
b := b + MemoTasksInfo;
Result := b;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=Page.ID then
if RussianBtn.Checked then
Result:=False
else
Result:=True
end;

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.