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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

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


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

Отправлено: 03:49, 21-05-2012

 

Аватара для Raf-9600

Старожил


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

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


Цитата Gnom_aka_Lexander:
после НГ накидаю, если не забуду, сейчас уже не в состоянии »
А я уже нашёл выход. Правда не знаю ли он достаточно производителен, но с флагом collapsed дружит
Код: Выделить весь код
procedure InitializeWizard();
var
    iFile: TIniFile;
    i: Integer;
    
begin
  iFile := ParseIniFile(ExpandConstant('{src}\PreSelector.ini'));
    
  for i := 0 to WizardForm.ComponentsList.ItemCount - 1 do
  begin
    case WizardForm.ComponentsList.ItemCaption[i] of
    
      CustomMessage('backup') :
      WizardForm.ComponentsList.Checked[i] := GetIniValue('Game', 'Backup', '', iFile) = 'true';
    end;
  end;
end;

Отправлено: 14:14, 30-12-2012 | #1451



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

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


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Raf-9600:
WizardForm.ComponentsList.Checked[i] »
не рекомендую именно так делать.
WizardForm.ComponentsList.CheckItem(i, coCheck); для выбора компонента
WizardForm.ComponentsList.CheckItem(i, coUncheck); для снятия галки с компонента.
Почему именно так? потому, что при этом выполняется OnClickCheck для ComponentsList, чего не происходит при вашем варианте. и при обновлении, как не расставляй галки, с помощью Checked, при установке это не будет учтено. плюч даля зависимых компонентов при данном способе, достаточно указать только то, что должно быть выбрано, отпадает нужда проверять ошибки в выборе зависимых компонентов, что уже громадный плюс к производительности. ну и фугкцию лучше все-таки булевую использовать, тем более что джонни дал пример.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 14:21, 30-12-2012 | #1452


Аватара для Raf-9600

Старожил


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

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


Цитата Gnom_aka_Lexander:
и при обновлении, как не расставляй галки, с помощью Checked, при установке это не будет учтено. »
Не понял.

Цитата Gnom_aka_Lexander:
плюч даля зависимых компонентов при данном способе, достаточно указать только то, что должно быть выбрано, отпадает нужда проверять ошибки в выборе зависимых компонентов »
У меня такая проблема вообще не стоит. Мне как рас нужно чтобы к примеру если пользователь выбрал "Локализация" то автоматически выбирался дочерний компонент "Резервная копия".

Цитата Gnom_aka_Lexander:
потому, что при этом выполняется OnClickCheck для ComponentsList, чего не происходит при вашем варианте »
А чем OnClickCheck полезен? (сорри, я нуб)

Цитата Gnom_aka_Lexander:
WizardForm.ComponentsList.CheckItem(i, coCheck); для выбора компонента »
Когда пишу так, то компилятор жалуется на ошибку синтаксиса:
Код: Выделить весь код
WizardForm.ComponentsList.CheckItem(i, coCheck) := GetIniValue('Game', 'Backup', '', iFile) = 'true';
Цитата Gnom_aka_Lexander:
ну и фугкцию лучше все-таки булевую использовать, тем более что джонни дал пример »
Я знаю и позже её встрою.

Отправлено: 14:43, 30-12-2012 | #1453


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Raf-9600:
Когда пишу так, то компилятор жалуется на ошибку синтаксиса: »
потому что нужно так:
Код: Выделить весь код
if GetIniValue('Game', 'Backup', '', iFile) = 'true' then WizardForm.ComponentsList.CheckItem(i, coCheck)
зависимые компоненты, это например, радиобаттоны. при повторной установке будет автоматом выбран предыдущий набор, и вполне вероятен вариант одновременного выбора компонентов взаимоисключающих. чего никогда не будет при предложенном мной варианте, каковой был мною взять из одного из примеров товарища Serega.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 14:50, 30-12-2012 | #1454


Аватара для Raf-9600

Старожил


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

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


Цитата Gnom_aka_Lexander:
при повторной установке будет автоматом выбран предыдущий набор, и вполне вероятен вариант одновременного выбора компонентов взаимоисключающих. чего никогда не будет при предложенном мной варианте »
Наверно я снова чего-то недопонял. Только что попробовал "свой" вариант, и установил компонент Game\Full, потом сразу запустил инсталлятор повторно и он по умолчанию выбрал Game\Lokal (который прописан в .ini). Ваш код повел себя точно так же. Это конечно недостаток, так как я использую деинсталлятор UninsHs, который добавляет функции изменить набор компонентов и восстановить. Так вот то что при повторном запуске инсталлятора будет не тот набор компонентов что устанавливал пользователь, а тот что прописан в .ini, затруднит использования функции изменения компонентов, а как себя поведет функция "восстановить" я даже не представляю.

Отправлено: 15:04, 30-12-2012 | #1455


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Raf-9600, я просто говорю, как будет более правильно чекать компоненты. как делать на самом деле - дело исключительно ваше. может и я не прав, но есть ощущение у меня, что все-таки именно предложенный мной вариант более правилен.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 15:44, 30-12-2012 | #1456


Аватара для Johny777

Ветеран


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

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


Raf-9600, 100 компонетов - много,
Мой тебе добрый совет - разбей компнеты по тематической составляющей
получившиеся группы компонетов помести на страницы настройки TInputOptionWizardPage или простые страницы с чеклистбоксами на них
короче делай что-то вроде инсталла K-Lite Codec Pack который хоть и перегружен настройками, но не под каким углом не напрягает свалившейся сразу информацией
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:57, 30-12-2012 | #1457


Аватара для Raf-9600

Старожил


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

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


Цитата Johny777:
100 компонетов - много »
127, если быть точнее

Цитата Johny777:
Мой тебе добрый совет - разбей компнеты по тематической составляющей »
вот так сойдёт?


У меня ещё один нубский вопрос: как сделать чтобы и на SelectTasksPage галочки тоже расставлялись в зависимости от того что указано в .ini?
И есть ли возможность сделать чтобы компоненты узнавались не по названию, а по номеру? Ибо внезапно оказалось что у меня просто туча разных компонентов с одинаковыми названиями =\

Последний раз редактировалось Raf-9600, 31-12-2012 в 14:59.


Отправлено: 23:28, 30-12-2012 | #1458


Аватара для Johny777

Ветеран


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

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


Цитата Raf-9600:
У меня ещё один нубский вопрос: как сделать чтобы и на SelectTasksPage галочки тоже расставлялись в зависимости от того что указано в .ini? »
вкладка Support говорит нам, что на странице задач тоже самое что и на странице компонентов (только другого цвета и без границ), поэтому также как и с компонентами, только светую для простоты создать отдельную секцию в ини
ComponentsList: TNewCheckListBox;
TasksList: TNewCheckListBox;
RunList: TNewCheckListBox;
Цитата Raf-9600:
И есть ли возможность сделать чтобы компоненты узнавались не по названию, а по номеру? »
можно - по индексу. Например добавленные сверху вниз 10 компонентов, где у первого идекс равен 0, а у 10-го индекс - 9
только чтоб у тебя не было, что один компонент добавляется в зависимости от чего-то, а то компонента в середине нет, номера сдвинутся и получится ерунда
WizardForm.ComponentsList.Checked[индекс]
Цитата Raf-9600:
вот так сойдёт? »
вечный Diablo 2 пакуешь! Хорошо!
типа того, например у диаблы знаю 3 озвучки и разные варианты видео - на одну страницу, кастомную
короче я б сделал так (комментарии внутри)

читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes
UninstallDisplayIcon={app}\MyProg.exe
OutputDir=.

[Components]
Name: a; Description: a
Name: b; Description: b
Name: c; Description: c
Name: d; Description: d

[Files]
; это озвучка от Фаргуса
Source: {fonts}\*; DestDir: {app}; Flags: external; Check: Install('озвучка от 8бит');

; это субтитры от Фаргуса
Source: {fonts}\*; DestDir: {app}; Flags: external; Check: Install('видео от 8бит');

; заметь отмечаемые радиокнопки с одинаковым тестом -   от 8бит


[  Code]
var
  SoundPage, VideoPage, SubtittlesPage: TInputOptionWizardPage;
  
function Install(sText: String): boolean;
begin
  case sText of
    'озвучка от 8бит': Result := SoundPage.SelectedValueIndex = 0;
    'видео от 8бит': Result := VideoPage.SelectedValueIndex = 0;
  end;
end;
  
procedure InitializeWizard;
begin
  SoundPage := CreateInputOptionPage(wpSelectComponents, 'Выбор озвучки', '', '', True, False);
  with SoundPage do
  begin
    SubCaptionLabel.Caption := 'Озвучка:';
    AddEx('от 8бит',  0, True);
    SelectedValueIndex := 0; /// по дефолту отмечен
    Values[0] := GetIniValue('Sound', '8bit', '', iFile) = 'true';
    AddEx('от Фаргуса',  0, True);
    Values[1] := GetIniValue('Sound', 'Fargus', '', iFile) = 'true';   // итд. Советую для звука, видео и субтитров сделать по отдельной секции в ини
    AddEx('от "русский проект"',  0, True);
    AddEx('английская',  0, True);
  end;
  
  VideoPage := CreateInputOptionPage(SoundPage.ID, 'Выбор видео', '', '', True, False);
  with VideoPage do
  begin
    SubCaptionLabel.Caption := 'Видео:'
    AddEx('от 8бит',  0, True);
    AddEx('от Фаргуса',  0, True);
    AddEx('от "русский проект"',  0, True);
    AddEx('английская',  0, True);
    SelectedValueIndex := 1;
  end;
  

  SubtittlesPage := CreateInputOptionPage(VideoPage.ID, 'Выбор субтитров', '', '', True, False);
  with SubtittlesPage do
  begin
    SubCaptionLabel.Caption := 'Субтитры:'
    AddEx('английские',  0, True);
    AddEx('русские',  0, True);
    SelectedValueIndex := 1;
  end;
end;


ещё советую изучить \Inno Setup 5\Examples\Example_NewCheckListBox.iss

Отправлено: 15:36, 31-12-2012 | #1459


Аватара для Raf-9600

Старожил


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

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


Цитата Johny777:
типа того, например у диаблы знаю 3 озвучки и разные варианты субтитров - на одну страницу, кастомную
короче я б сделал так (комментарии внутри) »
У меня выбор из семи языков и шести русских озвучек. Плюс к тому огромная куча других компонентов, как к примеру выбор музыки или модификаций типа PlugY и MultiRes. Если я всю эту араву начну делить на страницы, то это будет ахтунг.
Соль в том, что по умолчанию я уже выбрал лучший набор компонентов, и предполагается что юзер там вообще ничего не должен менять. Как показала практика, юзер действительно не хочет ничего выбирать, ему бы лиш бы быстрее на кнопку "далее" покликать, что в твоём варианте более затруднительно чем в моём

Кстати, если поклонник этой игры, можешь скачать, оценить - (удалено) (мне сказали что варез тут запрещён, так что кому нужна ссылка - в ЛС пишите.)

Последний раз редактировалось Raf-9600, 31-12-2012 в 16:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:50, 31-12-2012 | #1460



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход