imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 09.12.2004, 08:23     # 1
ryfm
Guest
 
Сообщения: n/a

Скрипты для InnoSetup

Кто разбирается в этом инсталляке помогите со скриптом, который бы выполнял следующее:

1. В инсталляк проги должен ходить .Net framework (при генерации нового инсталляка я его просто тупо добавил со всеми другими файлами)

2. Перед инсталляцией проги должна быть проверка на присутствие на компе .net framework и если его нет, то установить и только после этого ставится основная прога...

я в своем инсталляке просто добавил ключ в секцию RUN
Filename: "{app}\dotnetfx.exe"; Description: "{cm:LaunchProgram,Установить фреймворк}"; Flags: nowait postinstall skipifsilent

Тупо но работает, правда потом инсталляк остается среди файлов, и проверки на присутствие net framework не проводиться...


Жду предложений...
 
Старый 09.12.2004, 09:30     # 2
SwiMMeR
::VIP::
Отыпный Саводод
 
Аватар для SwiMMeR
 
Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452

SwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собой
ryfm
Я сделал также, тока dotnetfx с двумя апдейтами расспаковываю в папку {tmp} потом запускаю (сетап ждет) после завершения установки ДотНета и апдейтов завершается основная установка и файлы удаляются из временной директории.

Проверку на наличие уже установленного ДотНета можно сделать, но зачем? если он сам делает эту проверку
__________________
The Information will be FREE!
SwiMMeR вне форума  
Старый 09.12.2004, 09:45     # 3
ryfm
Guest
 
Сообщения: n/a

Просто нет премени разбираться с документацией к InnoSetup...
Поэтому вопрос, какие ключи нужны, чтобы net framework распаковывался в темп(сейчас он копируется в папку проги и остается там), запускался до сетапа проги, а потом удалялся (хотя наверное если он в темпе, то он удаляется автоматом?)... Или просто запости пример скрипта с этим, сам разберусь.

Да и проверку я считаю надо сделать самому, чтобы не ждать пока инсталляк net framework запуститься и сам начнет проверять...
 
Старый 09.12.2004, 09:54     # 4
SwiMMeR
::VIP::
Отыпный Саводод
 
Аватар для SwiMMeR
 
Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452

SwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собой
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!
SwiMMeR вне форума  
Старый 09.12.2004, 09:58     # 5
ryfm
Guest
 
Сообщения: n/a

Ок. пасиба...
Цитата:
SwiMMeR:
Кста ... у меня несколько программ которые юзают библиотеки ДотНета и я в свою ветку в реестре пишу, что ДотНета уже установлен. При установке следующей программы я читаю эту ветку ...
Если мониторишь ветку, то тогда уж мониторить HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramewor, так на всякий случай...
Кстати, как в инно считать значение реестра... Надеюсь еще не заколебал .
 
Старый 09.12.2004, 11:08     # 6
SwiMMeR
::VIP::
Отыпный Саводод
 
Аватар для SwiMMeR
 
Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452

SwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собой
ryfm
Цитата:
Если мониторишь ветку, то тогда уж мониторить HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
Это еще не точно, что мониторить эту ветку поможет. Я всего лишь предположил. Проверять лень

А насчет считывания значения реестра, дык ...
В секции кода пишешь
Код:
[С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 пишешь ...
Код:
[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.
SwiMMeR вне форума  
Старый 09.12.2004, 11:23     # 7
ryfm
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 используется просто паскаль?

Так лаконичнее...
 
Старый 09.12.2004, 11:56     # 8
SwiMMeR
::VIP::
Отыпный Саводод
 
Аватар для SwiMMeR
 
Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452

SwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собой
ryfm
Сам Инно написан на Дельфи, поэтому нельзя сказать что это Паскаль или Дельфи ... скорее клон по возможностям, но паскаль по синтаксису

ЗЫ: ИМХО
__________________
The Information will be FREE!
SwiMMeR вне форума  
Старый 09.12.2004, 12:09     # 9
ryfm
Guest
 
Сообщения: n/a

Цитата:
DotNetInstalled:=False;
Не хочет он это компилить, говорит что identificator expected, в делфи насколько я помню это должно было проходить, как возвращаемый результат... Пришлось сделать как у тебя, работает вроде нормально...
 
Старый 01.12.2008, 21:33     # 10
Robert_W
Junior Member
 
Регистрация: 22.08.2004
Сообщения: 155

Robert_W МолодецRobert_W МолодецRobert_W Молодец
Есть вопросик по скриптам для инсталятора Inno - сделал выбор языков, но картинка инсталятора и название патча остались на русском - как сие можно изменить?
Robert_W вне форума  
Старый 30.11.2010, 19:43     # 11
Volkogriz
Guest
 
Сообщения: n/a

Exclamation DotNetInstalled(): Boolean;

[С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.
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 01:32.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.