imho.ws |
![]() |
![]() |
![]() |
# 1 |
Guest
Сообщения: n/a
|
Скрипты для InnoSetup
Кто разбирается в этом инсталляке помогите со скриптом, который бы выполнял следующее:
1. В инсталляк проги должен ходить .Net framework (при генерации нового инсталляка я его просто тупо добавил со всеми другими файлами) 2. Перед инсталляцией проги должна быть проверка на присутствие на компе .net framework и если его нет, то установить и только после этого ставится основная прога... я в своем инсталляке просто добавил ключ в секцию RUN Filename: "{app}\dotnetfx.exe"; Description: "{cm:LaunchProgram,Установить фреймворк}"; Flags: nowait postinstall skipifsilent Тупо но работает, правда потом инсталляк остается среди файлов, и проверки на присутствие net framework не проводиться... Жду предложений... |
![]() |
# 2 |
::VIP::
Отыпный Саводод Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ryfm
Я сделал также, тока dotnetfx с двумя апдейтами расспаковываю в папку {tmp} потом запускаю (сетап ждет) после завершения установки ДотНета и апдейтов завершается основная установка и файлы удаляются из временной директории. Проверку на наличие уже установленного ДотНета можно сделать, но зачем? если он сам делает эту проверку ![]()
__________________
The Information will be FREE! |
![]() |
![]() |
# 3 |
Guest
Сообщения: n/a
|
Просто нет премени разбираться с документацией к InnoSetup...
Поэтому вопрос, какие ключи нужны, чтобы net framework распаковывался в темп(сейчас он копируется в папку проги и остается там), запускался до сетапа проги, а потом удалялся (хотя наверное если он в темпе, то он удаляется автоматом?)... Или просто запости пример скрипта с этим, сам разберусь. Да и проверку я считаю надо сделать самому, чтобы не ждать пока инсталляк net framework запуститься и сам начнет проверять... |
![]() |
# 4 |
::VIP::
Отыпный Саводод Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ryfm
Для проверки установленного ДотНета имхо стоит мониторить веточку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework в реестре вот код который я юзаю ... Код:
[Run] Filename: {tmp}\dotnetfx.exe; Parameters: ; StatusMsg: Установка .Net Framework {#ApplVersion} ...; Components: main; Flags: runmaximized Filename: {tmp}\devupdate40.exe; Parameters: ; StatusMsg: Установка .Net Framework Device Update ...; Components: update\update; Flags: runmaximized Filename: {tmp}\sp1.exe; Parameters: ; StatusMsg: Установка .Net Framework SP1 ...; Components: update\sp1; Flags: runmaximized [Files] Source: dotnetfx.exe; DestDir: {tmp}; Components: main; Attribs: hidden system; Flags: ignoreversion Source: devupdate40.exe; DestDir: {tmp}; Components: update\update; Attribs: hidden system; Flags: ignoreversion Source: sp1.exe; DestDir: {tmp}; Components: update\sp1; Attribs: hidden system; Flags: ignoreversion
__________________
The Information will be FREE! |
![]() |
![]() |
# 5 | |
Guest
Сообщения: n/a
|
Ок. пасиба...
Цитата:
Кстати, как в инно считать значение реестра... Надеюсь еще не заколебал ![]() |
|
![]() |
# 6 | |
::VIP::
Отыпный Саводод Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ryfm
Цитата:
![]() А насчет считывания значения реестра, дык ... В секции кода пишешь Код:
[Сode] var vDotNet: Boolean; function InitializeSetup(): Boolean; var RegValue: String; begin RegValue:=''; RegQueryStringValue(HKLM,'SOFTWARE\Microsoft\.NETFramework', 'InstallRoot',RegValue); vDotNet:=False; if (Length(RegValue)>0) then vDotNet:=True; Result:=True; end; function DotNetInstalled(): Boolean; begin Result:=vDotNet; end; Код:
[Files] Source: dotnetfx.exe; DestDir: {tmp}; Components: main; Attribs: hidden system; Flags: ignoreversion; Check: DotNetInstalled (Если функция вернет True, то строка обработается если же Ложь, то строка не обрабатывается во время установки
__________________
The Information will be FREE! Последний раз редактировалось SwiMMeR; 09.12.2004 в 11:11. |
|
![]() |
![]() |
# 7 |
Guest
Сообщения: n/a
|
Замечательно, код я переделал на следующий:
function DotNetInstalled(): Boolean; begin RegValue:=''; RegQueryStringValue(HKLM,'SOFTWARE\Microsoft\.NETF ramework','InstallRoot',RegValue); if (Length(RegValue)>0) then DotNetInstalled:=True; else DotNetInstalled:=False; end; В innosetup используется просто паскаль? Так лаконичнее... |
![]() |
# 8 |
::VIP::
Отыпный Саводод Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ryfm
Сам Инно написан на Дельфи, поэтому нельзя сказать что это Паскаль или Дельфи ... скорее клон по возможностям, но паскаль по синтаксису ![]() ЗЫ: ИМХО
__________________
The Information will be FREE! |
![]() |
![]() |
# 11 |
Guest
Сообщения: n/a
|
![]()
[Сode]
function InitializeSetup(): Boolean; var DotNetInstalled(): Boolean; begin RegValue:=''; RegQueryStringValue(HKLM,'SOFTWARE\Microsoft\.NETF ramework','InstallRoot',RegValue); if (Length(RegValue)>0) then DotNetInstalled:=True; else DotNetInstalled:=False; end; Последний раз редактировалось Volkogriz; 30.11.2010 в 19:47. |