Скрипты Inno Setup. Помощь и советы [часть 6]
-
volga163@vk
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
Мне тут раньше вроде подсказывали, что делать если фаил справки пустой открывается.... перечитал сообщения за 2 месяца... не нашел... напомните, пожалуйста.
-
nik1967
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
Shkutu, для этого в Inno есть секция [CustomMessages].
Код:
Наткнулся на скрипт, который писал неизвестно когда и неизвестно кому
. Может пригодится кому.
Код:
Единственное "но" - при стандартной распаковке при нажатии на "Отмена" не останавливается распаковка.
Если я правильно понял
Код:
Код: Выделить всё
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
Name: eng; MessagesFile: compiler:Default.isl
[CustomMessages]
rus.interface=Интерфейс
rus.choice=Выберите компоненты, которые вы хотите установить.
eng.interface=Interface
eng.choice=Select components which you want to set.
[_Code]
var
Page: TWizardPage;
procedure InitializeWizard;
begin
Page:=CreateCustomPage(wpWelcome, ExpandConstant('{cm:interface}'), ExpandConstant('{cm:choice}'));
end;Наткнулся на скрипт, который писал неизвестно когда и неизвестно кому
. Может пригодится кому. MyCoustomExit
Код:
Код: Выделить всё
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
OutputDir=.
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
Name: eng; MessagesFile: compiler:Default.isl
[CustomMessages]
rus.ExitSetupTitle1=Вы уверены, что хотите выйти из программы установки?
eng.ExitSetupTitle1=Quit the setup program?
[_code]
const
ID_QUESTION = 65579;
var
MyCoustomExit: TPanel;
YesButton,NoButton: TButton;
IsExit: boolean;
PageNameLabel2,PageDescriptionLabel2: TNewStaticText;
MyExitLabel: TLabel;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:= false;
end;
procedure MyCoustomCancelClick(Sender: TObject; var CanClose: Boolean);
begin
CanClose:= IsExit;
MyCoustomExit.Show;
NoButton.Show;
YesButton.Show;
WizardForm.Bevel.Parent:= MyCoustomExit;
WizardForm.Bevel1.Parent:= MyCoustomExit;
end;
procedure NoButtonClick(Sender: TObject);
begin
IsExit:= false;
MyCoustomExit.Hide;
NoButton.Hide;
YesButton.Hide;
WizardForm.Bevel.Parent:= WizardForm;
WizardForm.Bevel1.Parent:= WizardForm.InnerPage;
end;
procedure YesButtonClick(Sender: TObject);
begin
IsExit:= True;
WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
end;
procedure InitializeWizard();
begin
MyCoustomExit:= TPanel.Create(WizardForm);
with MyCoustomExit do begin
Parent:= WizardForm;
SetBounds(ScaleX(0),ScaleY(0),WizardForm.Width,WizardForm.Height);
with TNewIconImage.Create(WizardForm) do begin
Parent:= MyCoustomExit;
Left:= ScaleX(230);
Top:= ScaleY(85);
Icon.Handle := ID_QUESTION;
end;
PageNameLabel2:= TNewStaticText.Create(MyCoustomExit);
with PageNameLabel2 do begin
Parent:= MyCoustomExit;
SetBounds(WizardForm.PageNameLabel.Left,WizardForm.PageNameLabel.Top,WizardForm.PageNameLabel.Width,WizardForm.PageNameLabel.Height);
Font.Style:= [fsBold];
Caption:= SetupMessage(msgExitSetupTitle);
end;
PageDescriptionLabel2:= TNewStaticText.Create(MyCoustomExit);
with PageDescriptionLabel2 do begin
Parent:= MyCoustomExit;
SetBounds(WizardForm.PageDescriptionLabel.Left,WizardForm.PageDescriptionLabel.Top,WizardForm.PageDescriptionLabel.Width,WizardForm.PageDescriptionLabel.Height);
Caption:= CustomMessage('ExitSetupTitle1');
end;
MyExitLabel:= TLabel.Create(MyCoustomExit);
with MyExitLabel do begin
Parent:= MyCoustomExit;
SetBounds(ScaleX(0),ScaleY(150),WizardForm.Width,ScaleY(80));
AutoSize:= False;
WordWrap:= True;
Alignment:= taCenter;
Caption:= SetupMessage(msgExitSetupMessage);
end;
NoButton:= TButton.Create(MyCoustomExit);
with NoButton do begin
Parent:= WizardForm;
SetBounds(WizardForm.CancelButton.Left,WizardForm.CancelButton.Top,WizardForm.CancelButton.Width,WizardForm.CancelButton.Height);
Caption:= SetupMessage(msgButtonNo);
OnClick:= @NoButtonClick;
end;
YesButton:= TButton.Create(MyCoustomExit);
with YesButton do begin
Parent:= WizardForm;
SetBounds(WizardForm.NextButton.Left,WizardForm.NextButton.Top,WizardForm.NextButton.Width,WizardForm.NextButton.Height);
Caption:= SetupMessage(msgButtonYes);
OnClick:= @YesButtonClick;
end;
end;
end;
Procedure CurPageChanged(CurPageID: Integer);
begin
MyCoustomExit.Hide;
NoButton.Hide;
YesButton.Hide;
WizardForm.OnCloseQuery:=@MyCoustomCancelClick;
end;Единственное "но" - при стандартной распаковке при нажатии на "Отмена" не останавливается распаковка.
-
Johny777
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
Цитата Johny777:
как например та же WinApi функция MessageBox(Ex) обрабатывает входные флаги?
вот например мы отправляем туда флаги := MB_ICONINFORMATION or MB_TASKMODAL or MB_CANCELTRYCONTINUE
or складывает эти значения, если не ошибаюсь. Получается новое. А каким макаром теперь из этого числа выдрать те 3 флага назад?
спрашиваю, потому что не понимаю, но хочу понять, тк поняв смогу использовать ( плагиатъ ) тот же подход для своих процедур/функций значительно укоротив при этом их прототипы
Нужно сделать побитовое И с нужным флагом, при учете того что значение флага является степенью двойки.
Код:
Цитата Johny777:
и просьба: у кого есть мануал, хорошая книга (посоветуйте пожалуйста), где для самых тупых описана побитавая работа с числами (shr shl xor) или момет мне кто тут всё объяснить?
Логическое И (and) - для каждого бита операндов результат равен 1, если оба бита равны 1, иначе 0
Логическое ИЛИ (or) - для каждого бита операндов результат равен 1, если в одном из битов есть 1, иначе 0
Логическое отрицание (not) - каждый бит операнда инвертируется, если был 1 станет 0 и наоборот.
Логическое исключающее ИЛИ (xor) - для каждого бита операндов результат равен 1, если биты неравны между собой (наборы 0 1, 1 0). Если 2 единицы, то результат 0, также как и при двух нулях.
Логический сдвиг влево (shl) - сдвигает все биты операнда на n разрядов влево, в освободившееся место забиваются нули.
Логический сдвиг вправо (shr) - сдвигает все биты операнда на n разрядов вправо, в освободившееся место забиваются нули.
P.S. Подразумевается работа с двумя операндами.
как например та же WinApi функция MessageBox(Ex) обрабатывает входные флаги?
вот например мы отправляем туда флаги := MB_ICONINFORMATION or MB_TASKMODAL or MB_CANCELTRYCONTINUE
or складывает эти значения, если не ошибаюсь. Получается новое. А каким макаром теперь из этого числа выдрать те 3 флага назад?
спрашиваю, потому что не понимаю, но хочу понять, тк поняв смогу использовать ( плагиатъ ) тот же подход для своих процедур/функций значительно укоротив при этом их прототипы
Скрипты Inno Setup. Помощь и советы [часть 6]
Нужно сделать побитовое И с нужным флагом, при учете того что значение флага является степенью двойки.
Код:
Код: Выделить всё
if (Flags and FM_MY_FLAG1) 0 then ...Цитата Johny777:
и просьба: у кого есть мануал, хорошая книга (посоветуйте пожалуйста), где для самых тупых описана побитавая работа с числами (shr shl xor) или момет мне кто тут всё объяснить?
Скрипты Inno Setup. Помощь и советы [часть 6]
Логическое И (and) - для каждого бита операндов результат равен 1, если оба бита равны 1, иначе 0
Логическое ИЛИ (or) - для каждого бита операндов результат равен 1, если в одном из битов есть 1, иначе 0
Логическое отрицание (not) - каждый бит операнда инвертируется, если был 1 станет 0 и наоборот.
Логическое исключающее ИЛИ (xor) - для каждого бита операндов результат равен 1, если биты неравны между собой (наборы 0 1, 1 0). Если 2 единицы, то результат 0, также как и при двух нулях.
Логический сдвиг влево (shl) - сдвигает все биты операнда на n разрядов влево, в освободившееся место забиваются нули.
Логический сдвиг вправо (shr) - сдвигает все биты операнда на n разрядов вправо, в освободившееся место забиваются нули.
P.S. Подразумевается работа с двумя операндами.
-
tr011_tmn
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
скажите пожалуйста, почему может во время установки не работать кнопка отмена?
-
jiumx60rus
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
Цитата Fakt_37:
скажите пожалуйста, почему может во время установки не работать кнопка отмена?
Гляньте в процедуре CancelButtonClick. А лучше скрипт покажите.
скажите пожалуйста, почему может во время установки не работать кнопка отмена?
Скрипты Inno Setup. Помощь и советы [часть 6]
Гляньте в процедуре CancelButtonClick. А лучше скрипт покажите.
-
nik1967
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
Johny777, благодарю! От иконки избавился, скрипт переписал. Оказалось ещё, что на ANSI не отображается бевел на панели выхода - исправил. Хотя сам пользуюсь UNICODE версией Inno.
-
icq99999999
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
Всем привет , у меня имеется 3 7zsfx архива , при установке я хочу сделать пошаговую распаковку архивов а не всех сразу через секция run , пож-та помогите , заранее спасибо !
-
insombia
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
icq99999999,
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID =wpSelectComponents) or (PageID =wpSelectProgramGroup) or (PageID =wpready) or (PageID =wpfinished) then
Result:= True;
end;
или
[setup]
DisableDirPage = yes
и т д
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID =wpSelectComponents) or (PageID =wpSelectProgramGroup) or (PageID =wpready) or (PageID =wpfinished) then
Result:= True;
end;
или
[setup]
DisableDirPage = yes
и т д
-
insombia
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
icq99999999
procedure InitializeWizard();
begin
wizardform.WelcomeLabel1.hide;
и т д, можно ещё вообще все скрыть со страницы,если хочешь создать свою страницу
procedure InitializeWizard();
begin
with WizardForm do begin
InnerNotebook.Hide;
OuterNotebook.Hide;
Bevel.Hide;
end;
procedure InitializeWizard();
begin
wizardform.WelcomeLabel1.hide;
и т д, можно ещё вообще все скрыть со страницы,если хочешь создать свою страницу
procedure InitializeWizard();
begin
with WizardForm do begin
InnerNotebook.Hide;
OuterNotebook.Hide;
Bevel.Hide;
end;
-
icq99999999
Re: Скрипты Inno Setup. Помощь и советы [часть 6]
Кто-нибудь имел дело с импортом функции из dll/stdcall по индексу, а не имени (по типу паскалевского function Bla-bla-bla(name: type): type; stdcall; external 'dll.dll'; index 10;)?