Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 3]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 3]

Ветеран


Сообщения: 1133
Благодарности: 581


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 908 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 806 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 00:28, 04-11-2010

 

Ветеран


Сообщения: 510
Благодарности: 51

Профиль | Отправить PM | Цитировать


Цитата Imitri7:
ну придется почти всю страницу переписывать, и потом уже двигать текст, пример из старого скрипта злого деда вот :
читать дальше » »
Жаль не пашет только текст весь стал корявый

Отправлено: 11:12, 15-08-2011 | #2731



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 58
Благодарности: 6

Профиль | Отправить PM | Цитировать


insombia, скинь скрин, можт я подскажу че сделать чтоб все пучком было )

Отправлено: 11:27, 15-08-2011 | #2732


Ветеран


Сообщения: 510
Благодарности: 51

Профиль | Отправить PM | Цитировать


Imitri7 вот именно что скрипта у меня нету я хочу сделать что-то похожее

Отправлено: 12:01, 15-08-2011 | #2733


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1273
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата Rikill:
помнишь мы говорили про appmutex, можно ли сделать так, чтобы на деинсталлятор правило не действовало, например если у меня ошибка распаковки вызывается деинсталлятор, и выдаётся сообщение "вы уже запустили одну копию этой программы" »
Rikill, не совсем понял, что требуется. При ошибке распаковки на этапе установки и так выводится соответствующее сообщение и производится откат.

Цитата Gugle:
как получить информацию о всех сетевых интерфейсах установленных на локальном ПК? »
Gugle, может какую конкретную инфу, типа MAC, IP, название? Всех - это с минипортами, ассинхронными адаптерами и т.д.?

Отправлено: 12:13, 15-08-2011 | #2734


Пользователь


Сообщения: 57
Благодарности: 1

Профиль | Отправить PM | Цитировать


El Sanchez, мне нужны MAC, IP, Description всех ethernet адаптеров установленных на ПК.

Пока, все что нашел это работа с "cmd.exe", через команду "ipconfig /all". Оттуда, конечно, можно вытащить информацию, но я предполагаю, что это можно сделать более изящно, чем парсить вывод cmd.exe.

Отправлено: 12:22, 15-08-2011 | #2735


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1273
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Gugle, добавил MAC в этот код, еще и ошибку исправил:
скрипт

Код: Выделить весь код
[code]
type
  IP_ADDR_INFO = array of record
  Description: String;
  IPv4: String;
  IPv6: String;
  MAC: String;
end;

function GetLocalIP(var IPAddrInfo: IP_ADDR_INFO): Boolean;
var
  objSWbemLocator, objSWbemServices, objSWbemObjectSet, 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_NetworkAdapterConfiguration').Count;
  objSWbemObjectSet := objSWbemServices.ExecQuery('SELECT Description,IPAddress,MACAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE');

  for i := 1 to IndexCount do
  try
    SetArrayLength(IPAddrInfo, GetArrayLength(IPAddrInfo)+1);
    strBuf := objSWbemObjectSet.Item('Win32_NetworkAdapterConfiguration.Index=' + IntToStr(i)).GetObjectText_;
    IPAddrInfo[GetArrayLength(IPAddrInfo)-1].Description := objSWbemObjectSet.Item('Win32_NetworkAdapterConfiguration.Index=' + IntToStr(i)).Properties_.Item('Description').Value;
    objRegExp.Pattern := ptrnIPv4;
    if objRegExp.Test(strBuf) then
    begin
      objRegExpMatches := objRegExp.Execute(strBuf);
      IPAddrInfo[GetArrayLength(IPAddrInfo)-1].IPv4 := objRegExpMatches.Item[0].Value;
    end;
    objRegExp.Pattern := ptrnIPv6;
    if objRegExp.Test(strBuf) then
    begin
      objRegExpMatches := objRegExp.Execute(strBuf);
      IPAddrInfo[GetArrayLength(IPAddrInfo)-1].IPv6 := objRegExpMatches.Item[0].Value;
    end;
    IPAddrInfo[GetArrayLength(IPAddrInfo)-1].MAC := objSWbemObjectSet.Item('Win32_NetworkAdapterConfiguration.Index=' + IntToStr(i)).Properties_.Item('MACAddress').Value;
  except
    GetExceptionMessage;
    SetArrayLength(IPAddrInfo, GetArrayLength(IPAddrInfo)-1);
  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(
    'Description: ' + arr[i].Description + #13#10 +
    'IPv4: ' + arr[i].IPv4 + #13#10 +
    'IPv6: ' + arr[i].IPv6 + #13#10 +
    'MAC: ' + arr[i].MAC, mbInformation, MB_OK);
end;

Отправлено: 13:30, 15-08-2011 | #2736


Пользователь


Сообщения: 57
Благодарности: 1

Профиль | Отправить PM | Цитировать


El Sanchez, спасибо. Пошел разбиться со скриптом.

Появились вопросы:
1. На строке:
Код: Выделить весь код
strBuf := objSWbemObjectSet.Item('Win32_NetworkAdapterConfiguration.Index=' + IntToStr(i)).GetObjectText_;
Вываливается с ошибкой:
SWbemObjectSet: Не найден.

читать дальше »
2. Где и/или как можно посмотреть весь список столбцов ... (что такое ту мы используем?) для формирования своего запроса типа:
Код: Выделить весь код
objSWbemObjectSet := objSWbemServices.ExecQuery('SELECT Description,IPAddress,MACAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE');

Все понятно откуда это! Пояснять не надо. )))



3. А можно еще и DeviceID вытащить?
Начал поиск, но если знаешь название в скрипте, то напиши плз. Я пока очень медленно в этом разбираюсь.

Последний раз редактировалось Gugle, 15-08-2011 в 14:41.


Отправлено: 13:40, 15-08-2011 | #2737


Аватара для Rikill

Старожил


Сообщения: 189
Благодарности: 90

Профиль | Отправить PM | Цитировать


El Sanchez, отката не происходит, ибо выводится сообщение что уже запущен один вариант установки из-за AppMutex нужно сделать исключение для деинсталлятора, чтобы можно было запустить setup.exe один раз, но чтобы можно было вместе запускать setup.exe/unins000.exe

-------
"Око за око приведёт к слепоте мира"- Ганди


Отправлено: 14:29, 15-08-2011 | #2738


Пользователь


Сообщения: 58
Благодарности: 6

Профиль | Отправить PM | Цитировать


insombia, не так уж и сложно сделать такой инстал, есть примеры даже, просто переделывай под себя)

Отправлено: 14:47, 15-08-2011 | #2739


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Цитата El Sanchez:
dotnetfx3_x86, vcredist_x86, xliveredist - сердцем этих установщиков является msi-документ, а значит используем возможности API системы, а именно функцию MsiQueryProductState. »
подскажи, пожалуйста, GUID framework 3.5 и vcredist 2008 x86
а что за Orca такая?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 14:55, 15-08-2011 | #2740



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 3]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [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




 
Переход