| 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 в 12: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 в 20:47. |