|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 3] |
|
Скрипты Inno Setup. Помощь и советы [часть 3]
|
Ветеран Сообщения: 1133 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 |
|
------- Отправлено: 00:28, 04-11-2010 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Цитата Sollar:
Цитата Sollar:
|
||
------- Отправлено: 19:10, 07-09-2011 | #3011 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата Gugle:
Цитата Gugle:
|
||
Отправлено: 22:39, 07-09-2011 | #3012 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
справку смотрел, на примерах лучше пойму не очень ясно как поступать с зависимыми задачами, они же должны быть под основной |
|
Отправлено: 09:26, 08-09-2011 | #3013 |
Пользователь Сообщения: 57
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
Усли поставить условие WHERE Description LIKE "%Ethernet%" OR Description LIKE "%Сетевая%", отсеиваются (названия из картинки): 4_port_01 4_port_02 4_port_03 4_port_04 LAN_BASEBOARD_1 LAN_BASEBOARD_2 Local Area connection Что бы они туда попали, надо в условие внести какое нить слово/фразу, которая есть в названии. Я думаю, что сами винды определяют адаптеры, которые надо отобразить (на картинке это Network Connections и Server Manager), немного по другому, а не через поле Description. Я так и не смогу выяснить как это делается. ((( Вот и спрашиваю на форуме, вдруг кто то сталкивался с проблемой, а может быть кто то просто посмотрев на "поля таблицы", определит как это можно сделать. Мне надо, чтобы в установщике отображался то же самый список, что и в Network Connections / Server Manager. Очень надо. Пока я сам не могу догнаться как это сделать. То ли глуповат, то ли руки не так заточены (а может и все сразу). Кстати, VPN сетевые адаптеры у меня так и не попали в список. |
|
Последний раз редактировалось Gugle, 08-09-2011 в 18:00. Отправлено: 16:03, 08-09-2011 | #3014 |
![]() Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось kindza811, 08-09-2011 в 21:35. Отправлено: 21:28, 08-09-2011 | #3015 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Ребята а есть ли в Inno Setup возможность записать значение в реестр следующим образом:
Допустим устанавливаем программу на диск С в папку Test, а в реестр нужно занести два значения 1-е это буква диска C 2-е это название папки в которую установили программу Test [HKEY_LOCAL_MACHINE\SOFTWARE\Test program] "Path"="C:\\" "Directory"="Test" Я знаю что переменная {app} хранит путь установки, а есть ли другая переменная которая хранит букву диска и название директории |
Отправлено: 22:11, 08-09-2011 | #3016 |
Ветеран Сообщения: 510
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:21, 08-09-2011 | #3017 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата Gugle:
[code] type IP_ADDR_INFO = array of record Name: String; IPv4: String; IPv6: String; MAC: String; end; function GetLocalIP(var IPAddrInfo: IP_ADDR_INFO): Boolean; var objSWbemLocator, objSWbemServices, objSWbemObjectSet, objSWbemObject, objRegExp, objRegExpMatches: Variant; IndexCount, i: Byte; strBuf, ptrnIPv4, ptrnIPv6: String; begin try objSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator'); objRegExp := CreateOleObject('VBScript.RegExp'); except ShowExceptionMessage; Exit; end; ptrnIPv4 := '(\d{1,3}[.]){3}\d{1,3}'; //IPv4 regexp ptrnIPv6 := //IPv6 regexp '(([0-9a-fA-F]{1,4}:){1,1}(:[0-9a-fA-F]{1,4}){1,6})|(([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5})|' + '(([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4})|//(([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3})|' + '(([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2})|(([0-9a-fA-F]{1,4}:){1,6}(:[0-9a-fA-F]{1,4}){1,1})|' + '((([0-9a-fA-F]{1,4}:){1,7}|:):)|(:(:[0-9a-fA-F]{1,4}){1,7})|(((([0-9a-fA-F]{1,4}:){6})(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}))|' + '((([0-9a-fA-F]{1,4}:){5}[0-9a-fA-F]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}))|' + '(([0-9a-fA-F]{1,4}:){5}:[0-9a-fA-F]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|' + '(([0-9a-fA-F]{1,4}:){1,1}(:[0-9a-fA-F]{1,4}){1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|' + '(([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,3}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|' + '(([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,2}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})'; objSWbemServices := objSWbemLocator.ConnectServer(); objSWbemServices.Security_.ImpersonationLevel := 3; IndexCount := objSWbemServices.ExecQuery('SELECT * FROM Win32_NetworkAdapter').Count; objSWbemObjectSet := objSWbemServices.ExecQuery('SELECT Name,MACAddress FROM Win32_NetworkAdapter WHERE NetConnectionID!=NULL'); for i := 1 to IndexCount do try //check object in collection objSWbemObjectSet.Item('Win32_NetworkAdapter.DeviceID="' + IntToStr(i) + '"').GetObjectText_; strBuf := objSWbemServices.Get('Win32_NetworkAdapterConfiguration.Index=' + IntToStr(i)).GetObjectText_; SetArrayLength(IPAddrInfo, GetArrayLength(IPAddrInfo)+1); //Name IPAddrInfo[GetArrayLength(IPAddrInfo)-1].Name := objSWbemObjectSet.Item('Win32_NetworkAdapter.DeviceID="' + IntToStr(i) + '"').Properties_.Item('Name').Value; //IPv4 address objRegExp.Pattern := ptrnIPv4; if objRegExp.Test(strBuf) then begin objRegExpMatches := objRegExp.Execute(strBuf); IPAddrInfo[GetArrayLength(IPAddrInfo)-1].IPv4 := objRegExpMatches.Item[0].Value; end; //IPv6 address objRegExp.Pattern := ptrnIPv6; if objRegExp.Test(strBuf) then begin objRegExpMatches := objRegExp.Execute(strBuf); IPAddrInfo[GetArrayLength(IPAddrInfo)-1].IPv6 := objRegExpMatches.Item[0].Value; end; //MAC IPAddrInfo[GetArrayLength(IPAddrInfo)-1].MAC := objSWbemObjectSet.Item('Win32_NetworkAdapter.DeviceID="' + IntToStr(i) + '"').Properties_.Item('MACAddress').Value; except end; Result := (GetArrayLength(IPAddrInfo) > 0); end; procedure InitializeWizard(); var i: Byte; arr: IP_ADDR_INFO; begin if GetLocalIP(arr) then for i := 0 to GetArrayLength(arr)-1 do MsgBox( 'Name: ' + arr[i].Name + #13#10 + 'IPv4: ' + arr[i].IPv4 + #13#10 + 'IPv6: ' + arr[i].IPv6 + #13#10 + 'MAC: ' + arr[i].MAC, mbInformation, MB_OK); end; |
|
Отправлено: 23:53, 08-09-2011 | #3018 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать С ini более-менее разобрался, все равно не понятно с зависимыми задачами, но это сейчас неважно
Интересует, возможно ли создание циклов в секции Types? Можно ли ее заменить полностью функцией из кода? {code:gets} А не только Name: и Description: ? Существует ли функция для определения количества секций в INI файле? Если нет, то как их можно подсчитать? вот примерно то что я хочу сделать function InitializeSetup(): Boolean; begin for I := 1 to [количество секций в ini-файле] do begin str:='org'+inttostr(i); org[i] := GetIniString(str, 'org', 'Error', 'C:\временная\example.ini'); if GetIniString(str, 'ex1', 'Error', 'C:\временная\example.ini') = '1' then s1 :=s1 +' ' + GetIniString(str, 'org', 'Error', 'C:\временная\example.ini'); if GetIniString(str, 'ex2', 'Error', 'C:\временная\example.ini') = '1' then s2 :=s2 +' ' + GetIniString(str, 'org', 'Error', 'C:\временная\example.ini'); end; Result := True; end; [Types] for i := 1 to [количество секций в ini-файле] do Name: {code:gets|org[i]}; Description: {code:gets|org[i]} |
Отправлено: 10:40, 09-09-2011 | #3019 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата Polsta:
|
|
Отправлено: 13:13, 09-09-2011 | #3020 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Утилиты - [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 |
|