|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 3] |
|
Скрипты Inno Setup. Помощь и советы [часть 3]
|
Ветеран Сообщения: 1133 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 |
|
------- Отправлено: 00:28, 04-11-2010 |
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать Всем здравствуйте!
Проблема первая, как проверить версию .Net Framework при установке программы, запакованной в Inno Setup? В частности мне нужна версия 3.5 и выше. В нете нашёл много примеров, но они мне либо не подходят по функционалу, либо вызывают ошибку ещё на этапе компилляции. Хочется проверять версию .Net в реестре. Сам дистрибутив .Net входит в состав моего пакета, но пока-что устанавливается всегда, даже если в системе уже есть установленный Framework, что естественно плохо. Да и к тому же, на Vista и Seven установка dotNetFx40_Client_x86_x64.exe, который входит в состав моего пакета и устанавливается из секции Run, вызывает автоматическую перезагрузку системы даже с ключем /norestart еще на этапе установки, не позволяя её завершить, на XP такого не замечено. Проблема вторая, из секции Run кроме .Net Framework устанавливается ещё и другое ПО, установка занимает дополнительное время, но прогресс уже не отображается, стандартный прогрессбар уже показывает все 100%. Вопрос, как добавить второй прогрессбар для программ из секции Run с правильным расчетом процентов при установке доп. ПО (не фейковый)? Ну или хотя бы чтобы было видно только сами проценты при установке каждого пакета из дополнительного ПО, что именно из доп. ПО сейчас устанавливается в мастере отображается. Находил варианты для 7-zip, FreeArc архивов, но мне нужен способ для разных дистрибутивов, в том числе для msi-пакетов. Доп. ПО запускается из {tmp}. |
Отправлено: 21:39, 25-12-2010 | #261 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать Rostlv,
Если решиш, особенно по второму вопросу, буду рад узнать это решение, сам ищу... |
------- Отправлено: 21:43, 25-12-2010 | #262 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата Rostlv:
Цитата Rostlv:
Если это не задано автором программы, то вам это никогда не получиться, отображать реальный процент. Но как говорится если очень сильно хочится... 1. Вариант: Берём распакованный размер программы и в момент установки, сверяем размеры папок и уже от этого увеличиваем прогрессбар. 2. Вариант: Просто задаём прогрессбару стиль, такой же как у прогрессбара при установке IE, т.е. нет реального процента, а полоска бегает и пользователь видит, что программа не зависла. |
||
------- Последний раз редактировалось Serega, 26-12-2010 в 18:48. Отправлено: 22:37, 25-12-2010 | #263 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Как прявязать к радибаттонам в этом [code]
var MyNewPage: TWizardPage; MyRadioBtn_1, MyRadioBtn_2: TRadioButton; procedure GetMyNewPage(); begin MyNewPage := CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ''); MyRadioBtn_1 := TRadioButton.Create(WizardForm); with MyRadioBtn_1 do begin Top := ScaleY(50); Width := ScaleX(150); Height := ScaleY(13); Caption := ExpandConstant('{cm:MyRadioCaption_1}'); Checked := True; Parent := MyNewPage.Surface; end; MyRadioBtn_2 := TRadioButton.Create(WizardForm); with MyRadioBtn_2 do begin Top := ScaleY(120); Width := ScaleX(150); Height := ScaleY(13); Caption := ExpandConstant('{cm:MyRadioCaption_2}'); Parent := MyNewPage.Surface; end; end; procedure InitializeWizard(); begin GetMyNewPage(); end; например такие (раньше я их привязывал в секциях компоненты к радиокнопкам, но охота сделать на новой странице это. |
Отправлено: 23:46, 25-12-2010 | #264 |
Пользователь Сообщения: 129
|
Профиль | Отправить PM | Цитировать Цитата ksunechkin:
[Files] Source: d:\Programs\!Install\norm\boot1.ini; DestDir: {app}; Components: a; Check: GetRadio_1Checked; Source: d:\Programs\!Install\port\boot2.ini; DestDir: {app}; Components: b; Check: GetRadio_2Checked; [code] function GetRadio_1Checked(): Boolean; begin Result := MyRadioBtn_1.Checked; end; function GetRadio_2Checked(): Boolean; begin Result := MyRadioBtn_2.Checked; end; |
|
Отправлено: 00:05, 26-12-2010 | #265 |
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать С первой проблемой разобрался путём замены дистрибутива .Net с версии 4.0 на 3.5, которая, в отличие от 4.0, сама проверяет наличие установленной в системе версии .Net Framework и не устанавливает повторно то, что уже есть. Serega, приведённый код на Seven работает некорректно, в указанной ветке реестра на чистой системе есть только v2.0, хотя в системе установлена v3.5.
По второму вопросу полноценный прогрессбар сделать не получится, поэтому придётся довольствоваться фейковым, как при установке IE. Где найти код для него и как "прикрутить" его к секции Run? У меня сейчас уже задействован код для отображения процентов при распаковке всех файлов моего дистрибутива, поэтому нужно соединить обе части кода, первую привожу: 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:= IntToStr(size) + ' bytes'; 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; |
Отправлено: 04:52, 26-12-2010 | #266 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Rostlv,
загляни в реестр HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\ - по подключам типа 3.5 можно узнавать какая версия фреймворка стоит |
------- Отправлено: 09:37, 26-12-2010 | #267 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 19:13, 26-12-2010 | #268 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:39, 26-12-2010 | #269 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать в дополнение к этому вопросу (который решен) - http://forum.oszone.net/post-1573479-236.html, что сделать в чтобы под радибаттаноми можно было написать текст - .
попытался просто в секции [CustomMessages] в MyRadioCaption_1 и MyRadioCaption_2 дальше писать - вставив после Обыная установка" и "Портативная" переменную %n (вроде как это же перенос каретки), и написал делее нужный текст, но текст написался в строку и не был виден. (только начало, см на скрине) |
Последний раз редактировалось Duality, 26-12-2010 в 21:04. Отправлено: 20:59, 26-12-2010 | #270 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Утилиты - [addon] Inno Setup | CrOsP | Наборы обновлений для Windows XP/2003/Windows 7 | 33 | 11-05-2011 16:03 | |
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 | |
Inno Setup 5.3.6 | OSZone Software | Новости программного обеспечения | 0 | 15-11-2009 17:30 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
Inno Setup | tradeukraine | Вебмастеру | 3 | 13-06-2006 20:39 |
|