Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
by_gangster
21-03-2012, 17:07
Ivan_009, если ты про скин то вот http://forum.ru-board.com/topic.cgi?forum=5&topic=35146&start=1299&limit=1&m=8#1
Ivan_009
21-03-2012, 17:11
Нет я иммею ввиду про внешний вид
El Sanchez
21-03-2012, 17:11
у меня так »
R.i.m.s.k.y., ясно. Меня смутило:
HardwareInformation.AdapterString »
В общем, как хочешь, я бы брал из того места, которое я указал.
Johny777
21-03-2012, 18:00
Ivan_009,
прочитай сначала это
http://forum.oszone.net/post-1873551-932.html
потом это
http://forum.oszone.net/post-1874234-942.html
а внешний вид это не проблема.
Вместо "выберете компонент" можно написать "Что удалить?" или переименовать кнопку далее "установить" в "удалить" и тд
мда... вставил секцию код с заменой,теперь вообще нет ни отображения процентов ,ни отображения размера текущего файла »
Полностью скопируйте приведённый мной пример, скомпилируйте и попробуйте установить. Проценты установки и размеры файлов отображаются?
мне может кто подсказать? »
var
TypeComboBox: TNewComboBox;
procedure TypeComboBoxChange(Sender: TObject);
begin
case TypeComboBox.ItemIndex of
0: begin
hl2_main_CheckBox.Checked := True;
hl2_ru_en_RadioButton.Checked := True;
end;
1: ;// здесь тоже что-то делаем
end;
end;
procedure InitializeWizard;
begin
{ TypeComboBox }
TypeComboBox := TNewComboBox.Create(WizardForm);
with TypeComboBox do
begin
Parent := ComponentsPage.Surface;
SetBounds(ScaleX(42), ScaleY(8), ScaleX(233), ScaleY(21));
Items.add('всё на английском')
Items.add('всё на русском')
Text := 'быстрый выбор типа установки';
OnChange := @TypeComboBoxChange;
end;
end;
sergey3695
21-03-2012, 18:52
Можно ли как-нибудь изменить диалоговое окно выбора языка инсталлятора? (текст я знаю как менять). Сделать на другой форме... или что-либо?
Johny777
21-03-2012, 19:08
sergey3695,
первое что приходит в голову - создать форму и на ней переключатели или (пример выше) комбобокс, после которого будет запускаться лежащий рядом инсталл с параметром командной строки типа setup.exe/LANG=English
а в основном инсталле сделать выбор языка автоматическим
ShowLanguageDialog=auto
LanguageDetectionMethod=uilanguage
by_gangster
21-03-2012, 19:12
хочу сделать свой курсор допустим он у меня есть, а есть ли какой небудь скрипт для в писания в свой????
R.i.m.s.k.y.
21-03-2012, 19:23
В общем, как хочешь, я бы брал из того места, которое я указал. »
это место и для ХР такое же?
Johny777
21-03-2012, 19:34
by_gangster,
временный курсор. Его нужно ставить, а потом удалять, как со шрифитом.
почему не воспользуешься стандартными курсорами?
[Setup]
AppName=Cursor
AppVerName=Cursor
DefaultDirName={pf}\Cursor
[Code]
procedure InitializeWizard();
begin
WizardForm.CancelButton.Cursor := crUpArrow;
WizardForm.NextButton.Cursor := crUpArrow;
WizardForm.BackButton.Cursor := crUpArrow;
WizardForm.WelcomePage.Cursor := crHourGlass;
WizardForm.DirBrowseButton.Cursor := crUpArrow;
WizardForm.SelectDirPage.Cursor := crHand;
WizardForm.Cursor := crHand;
end;
by_gangster
21-03-2012, 20:07
Johny777, спс, а в Files его надо указывать??
Johny777, показвается только стандарт, а мне надо что бы мой курсор показывался
El Sanchez
21-03-2012, 21:42
это место и для ХР такое же? »
Разумеется. GUID-ы классов устройств (http://msdn.microsoft.com/en-us/library/windows/hardware/ff553426(v=vs.85).aspx)
FX-DENIS
22-03-2012, 00:36
Serega короче хохма такая:если использовать ваш скрипт,где указанно Source: compiler:Examples\* я так понимаю это папка инно с примерами,то отображаеться всё и проценты и размер файликов.Как только я указываю Source: F:\Test Drive Unlimited 2\* то прощай проценты и размер файлов.Я тогда пошел другим путем,просто скопировал в папку C:\Program Files (x86)\Inno Setup 5\Examples файл bigfile_RU_1.big размером 3,05 гб и нажал нечего не меняя компиляцию.После компиляции во время установки и распаковки инсталятором файла bigfile_RU_1.big нет ни процентов ни размера,а потом после того как он распаковался инсталятором,происходит распаковка тех файлов мелких в C:\Program Files (x86)\Inno Setup 5\Examples и появляються(мелькают) их размеры и проценты появляются, сразу 100% ,при этом еще раз повторяю я не чего в вашем последнем скрипте не менял,просто скопировал в папку примеров этот огромный файл. Я так понял хоть убейся не может инно показать размер огромных файлов,а мелких пожалуйста и с процентами.Кто нибудь,может решить эту загадку?Уже 4 день мучаемся. :dont-know
Johny777
22-03-2012, 01:00
FX-DENIS,
попробуй это для начала
тут правда в байтах, но если отображается как надо, то думаю можно переделать
проценты тоже есть
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma2/ultra
InternalCompressLevel=ultra
SolidCompression=yes
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: C:\Program Files (x86)\Inno Setup 5\*; DestDir: {app}; AfterInstall: Progress
[UninstallDelete]
Type: files; Name: {app}
[ Code]
var
ProgressLabel, SizeLabel: TLabel;
procedure Progress;
var
size: Integer;
begin
with WizardForm.ProgressGauge do
ProgressLabel.Caption:= IntToStr((Position-Min)/((Max - Min)/100)) + ' %';
FileSize(ExpandConstant(CurrentFileName), size);
SizeLabel.Caption:= 'Размер ' + ExtractFileName(ExpandConstant(CurrentFileName)) + ': ' +
IntToStr(size) + ' байт';
end;
procedure InitializeWizard();
begin
ProgressLabel:= TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
ProgressLabel.Top := Top + Height + ScaleY(8);
ProgressLabel.Left:= Left + Width/2 - ScaleX(8);
ProgressLabel.AutoSize := True;
ProgressLabel.Parent := WizardForm.InstallingPage;
end;
SizeLabel:= TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
SizeLabel.Top := Top + Height + ScaleY(8);
SizeLabel.Left:= Left;
SizeLabel.AutoSize := True;
SizeLabel.Parent := WizardForm.InstallingPage;
end;
end;
если использовать ваш скрипт,где указанно Source: compiler:Examples\* я так понимаю это папка инно с примерами,то отображаеться всё и проценты и размер файликов. »
Вывод, значит скрипт рабочий?!
во время установки и распаковки инсталятором файла bigfile_RU_1.big нет ни процентов ни размера »
Вы видимо не понимаете суть, определить размер файла можно только если он находится на диске, т.е. уже скопирован, отсюда и AfterInstall: Progress;, если перевести, то процедура Progress будет выполнена только после копирования файла на диск.
происходит распаковка тех файлов мелких в C:\Program Files (x86)\Inno Setup 5\Examples и появляються(мелькают) их размеры и проценты появляются, сразу 100% »
Правильно, размер всех этих оставшихся файлов всего несколько мегабайт, а вы уже скопировали 3,05ГБ, отсюда и сразу 100%.
Я так понял хоть убейся не может инно показать размер огромных файлов »
Данный скрипт, который я вам привёл, показывает любой размер файла, но только он должен быть на диске.
Кто нибудь,может решить эту загадку?Уже 4 день мучаемся. »
Вы видимо хотели, чтоб показывало как в Total Commander'е при копировании файла прогресс? В таком случае, файл должен быть внешним и копирование придётся делать через код...
FX-DENIS
22-03-2012, 02:28
Johny777, с этим скриптом я изначально пришел сюда))
Serega, Данный скрипт, который я вам привёл, показывает любой размер файла, но только он должен быть на диске. »кто файл или скрипт?на диск я запишу инсталятор или локальный диск?показывает любой размер файла только после распаковки,что то я не видел,что бы после распаковки bigfile_RU_1.big он паказал размер 3.05 гб ,попробую ещё раз всю игру скомпилировать и посмотрю.Вы видимо хотели, чтоб показывало как в Total Commander'е при копировании файла прогресс? В таком случае, файл должен быть внешним и копирование придётся делать через код... »нет,вы же выдели первые скриншоты которые выкладывал,что придуриваться.Простыми средствами инно,без отдельных прогресс баров,сжатий arc и прочей ненужной мишуры, просто общий процент распаковки и размер в мб,гб текущего файла.
В любом случае после стольких мучений тут,и перечитывания зря тысяч сообщений трех архивов форума спасибо вам Serega,а остальным,когда пишут,то прежде чем помогать Johny777 и другие,читайте с чем человек пришел к вам,или лень вернуться на несколько страниц назад,прежде чем советовать.Еще раз спасибо Serega вам,буду использовать скрипт последний предложенный вами,хоть такое отображение.
кто файл или скрипт? »
Естественно файл, он уже должен быть на локальном диске.
что то я не видел,что бы после распаковки bigfile_RU_1.big он паказал размер 3.05 гб »
Он показывает, только мелькает очень быстро, т.к. следующий файл маленького размера.
Чтоб вам было понятней прикрепил к сообщению ваш скриншот, на котором сделал пометки.
нет,вы же выдели первые скриншоты которые выкладывал,что придуриваться. »
А кто вам сказал, что я придуриваюсь или ещё что-то? Я лишь хочу донести до вас суть, я не зря вам сказал про Total Commander, он прежде чем копировать, узнаёт размер файла, а уже затем отображет прогресс в зависимости от состояния.
Если вы хотите, чтоб отображался размер именно в данный момент извлекаемого файла, вам придётся создать список всех файлов с размерами и при распаковке использовать уже BeforeInstall: Progress;, а в самой процедуре Progress в зависимости от имени файла писать его размер. Для того, чтоб изменялись проценты вместе с движением прогрессбара, показ процентов нужно писать через таймер.
то прежде чем помогать Johny777 и другие,читайте с чем человек пришел к вам »
Зачем вы так, он просто хотел вам помочь...
Ivan_009
22-03-2012, 11:22
Как расширить эту область чтобы можно было сменить текст а то при смене текста половина букв невидно
Johny777
22-03-2012, 12:21
Ivan_009,
настоятельно советую поставить расширенную версию. В ней есть графический дизайнер и все эти элементы двигаются и расширяются напрямую без ручной писанины коде!
ссылка http://forum.oszone.net/thread-148707.html или http://innoultra.ru/?page_id=70
а расширить так.
только в высоту, т.к. он шириной в InnerNotebook и пришлось бы расширять и его, что повлекло бы за собой смещение прогресбара и других элементов
procedure InitializeWizard();
begin
with WizardForm.SelectDirBrowseLabel do
begin
Top := ScaleY(36);
Height := ScaleY(45);
end;
end;
использовать уже BeforeInstall: Progress; »
Может за основу взять это. Мелкие и так мелькают. Их можно на старом лейбле отображать через AfterInstall
а для крупного сделать так
[Files]
Source: "{src}\*.dll"; DestDir: {app}; BeforeInstall: ChangeCaption('3гб')
[_Code]
procedure ChangeCaption(str: string);
begin
WizardForm.StatusLabel.Caption:= str; /// вместо этого лейбла другой
end;
_______________________________________________________________
кому нужно
у меня много временных файлов и инсталл инициализируется долго
сделал так
форма отображается в течении загрузки сколько бы она на разных компах не длилась
думаю можно ещё вынести из элементов строки типа ExtractTemporaryFile('WizardForm.BitmapImage9.bmp');
предварительно создав прогресбар прописывать после каждой строки что-то вроде
ProgresBar.Position: =5;
procedure InitializeWizard;
var
Form: TSetupForm; /// создание формы перед запуском /// часть 1
begin
begin
Form := CreateCustomForm();
with Form do
begin
ClientWidth := ScaleX(207); //Ширина формы
ClientHeight := ScaleY(180); //Высота формы
BorderStyle := bsDialog;
Left := GetSystemMetrics(16) - ClientWidth - ScaleX(5);
Top := GetSystemMetrics(17) - ClientHeight - ScaleY(5);
Caption := 'Inno Setup Wizard' //Заголовок окна
with TBitmapImage.Create(Form) do
begin
Parent := Form;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(207);
Height := ScaleY(180);
ExtractTemporaryFile('Lambda_Form_Image.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\Lambda_Form_Image.bmp'));
end;
end;
Form.Show();
Form.Repaint;
/// конец
/// здесь весь отсек InitializeWizard
RedesignWizardForm; /// это кусок дизайнера
end;
Form.Free(); инсталл загружен. Форма исчезает
end;
живой пример
http://rghost.ru/37156533
FX-DENIS
22-03-2012, 12:44
Johny777,извиняюсь ,если перегнул палку,без обид. Serega, разжевал и в рот положил,всё понял теперь.Вопросов больше нет. :oszone:
Итоговый результат :type:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC