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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Отправлено: 19:06, 28-03-2013

 

Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Mat_y:
Как его переделать под картинку? »
Никак. Переделать можно, когда и вправду знаешь, как сделать. А использование сторонней библиотеки, которая делает за тебя не относится к ситуации
Цитата Mat_y:
это я знаю как сделать »
держи простейший пример.
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Components]
Name: a; Description: 1; Flags: exclusive disablenouninstallwarning; 
Name: b; Description: 2; Flags: exclusive disablenouninstallwarning; 
Name: c; Description: 3; Flags: exclusive disablenouninstallwarning; 
Name: d; Description: 5; Flags: exclusive disablenouninstallwarning; 

[Files]
Source: "compiler:WizModernImage.bmp"; Flags: dontcopy solidbreak
Source: "compiler:WizModernSmallImage.bmp"; Flags: dontcopy solidbreak
Source: "compiler:WizModernImage-IS.bmp"; Flags: dontcopy solidbreak
Source: "compiler:WizModernSmallImage-IS.bmp"; Flags: dontcopy solidbreak

[*Code]
var
  InfoBMP: TBitmapImage;
  I_BMP : Array [0..3] of TBitmap;

function InitializeSetup(): Boolean;
begin
  ExtractTemporaryFile('WizModernImage.bmp');
  ExtractTemporaryFile('WizModernSmallImage.bmp');
  ExtractTemporaryFile('WizModernImage-IS.bmp');
  ExtractTemporaryFile('WizModernSmallImage-IS.bmp');
  Result := True;
end;

procedure ComponentsListItemMouseMove(Sender: TObject; X: Integer; Y: Integer; Index: Integer; Area: TItemArea);
begin
  InfoBMP.Bitmap.FreeImage;
  if ((Index >-1) and (Index<4))then InfoBMP.Bitmap := I_BMP[Index];
end;

procedure InitializeWizard();
var
  i : Integer;
begin
  with WizardForm do
  begin
    TypesCombo.Width := ScaleX(217);
    with ComponentsList do
    begin
      Width := ScaleX(217);
      OnItemMouseMove := @ComponentsListItemMouseMove;
    end;
  end;

  InfoBMP := TBitmapImage.Create(WizardForm);
  with InfoBMP do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(224), ScaleY(50), ScaleX(193), ScaleY(155));
    Stretch := true;
  end;
  for i := 0 to 3 do
  begin
    I_BMP[i] := TBitmap.Create;
    with I_BMP[i] do
    begin
      case i of
        0 : LoadFromFile(ExpandConstant('{tmp}\WizModernImage.bmp'));
        1 : LoadFromFile(ExpandConstant('{tmp}\WizModernSmallImage.bmp'));
        2 : LoadFromFile(ExpandConstant('{tmp}\WizModernImage-IS.bmp'));
        3 : LoadFromFile(ExpandConstant('{tmp}\WizModernSmallImage-IS.bmp'));
      end;
    end;
  end;
end;

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

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

Отправлено: 08:46, 11-10-2013 | #1231



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

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


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


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

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


Цитата Gnom_aka_Lexander:
держи простейший пример. »
Ну спасибо, ну выручили... ну теперь осталось его адаптировать под свои нужды.

По поводу ключей реестра, и удалении программы попробую объяснить подробнее мою проблему.

Существует программа (не моя) и установщик находит к ней путь по AppId .
Далее, программа установки дополняет существующую программу файлами (при этом совершенно не трогая ни один фаил программы)... и создает файлы для удаления (Unninst).
Если воспользоваться Unninst.exe, то все дополненные файлы удаляются как надо, но и по AppId установщик эту программу перестает находить... есть ли способ этого избежать?

Последний раз редактировалось Mat_y, 11-10-2013 в 09:23.


Отправлено: 08:53, 11-10-2013 | #1232


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


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

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


Цитата Gnom_aka_Lexander:
держи простейший пример. »
У меня пара вопросов возникла, которые я никак не могу решить...

1)
Строчка
Код: Выделить весь код
    Parent := WizardForm.SelectComponentsPage;
привязывает поле с картинкой к полю с компонентами.... я бы хотел это поле разместить на странице с выбором компонентов вверху, отдельно от поля со списком компонентов.
Пока я придумал только
Код: Выделить весь код
    Parent := WizardForm.MainPanel;
Но это не вариант, т.к. добавляет оэто поле на все траницы... что прописать, чтобы затронуть только страницу с выбором компонентов?

И еще небольшой вопросик...
2) Как сделать, чтобы поле с картинкой изначально не было пустым и имело фоновую картинку, которая бы заменялась при наведении на компонент... для текстового поля это делается вот так...
Код: Выделить весь код
  Info.Caption := 'Наведите на компонент, чтобы получить дополнительную информацию';
а для картинки... научите, пожалуйста.
Сразу спасибо.

Отправлено: 10:57, 11-10-2013 | #1233


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

Ветеран


Contributor


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

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


Цитата Mat_y:
Существует программа (не моя) и установщик находит к ней путь по AppId .
Далее, программа установки дополняет существующую программу файлами (при этом совершенно не трогая ни один фаил программы)... и создает файлы для удаления (Unninst).
Если воспользоваться Unninst.exe, то все дополненные файлы удаляются как надо, но и по AppId установщик эту программу перестает находить... есть ли способ этого избежать? »
Mat_y, я так понимаю патч какой-то делаете или что-то вроде того. Тут можно двумя путями пойти. Первый - это патч создает деинсталлятор и не регистрирует себя в ветке реестра AppId программы, тогда при удалении и файлы удалятся те, что надо, и реестровые записи сохранятся. Для этого всего лишь нужно в секции Setup директиву CreateUninstallRegKey установить в no. В апплете Установка и удаление программ патч, разумеется, не будет фигурировать. Второй - если очень хочется и через апплет удаление делать, то патч должен использовать свою ветку регистрации, не затрагивая программную.

Отправлено: 10:59, 11-10-2013 | #1234


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


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

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


Цитата El Sanchez:
CreateUninstallRegKey установить в no »
Если я поставлю CreateUninstallRegKey = no, то тогда же не будет запоминаться список установленных уже компонентов или будет? (Я имею ввиду при повторном запуске установщика)

Отправлено: 11:37, 11-10-2013 | #1235


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

Ветеран


Contributor


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

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


Цитата Mat_y:
Если я поставлю CreateUninstallRegKey = no, то тогда же не будет запоминаться список установленных уже компонентов или будет? »
Mat_y, компонентов патча? Нет, не будет. Выбирайте второй метод, это обычная практика.

Отправлено: 12:04, 11-10-2013 | #1236


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


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

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


Цитата El Sanchez:
Выбирайте второй метод »
Я понимаю, что пользуюсь добротой, но не могли бы Вы помочь с созданием своей ветки регистрации, а то у меня не никак не получается.... может быть дело в том, что я использую AppId?

Отправлено: 12:36, 11-10-2013 | #1237


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

Ветеран


Contributor


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

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


Цитата Mat_y:
может быть дело в том, что я использую AppId? »
Mat_y, используйте отличный от AppId программы идентификатор для патча. Если AppId у программы это GUID ({...}-вида), то для патча сгенерите другой. Если AppId у программы, например, MyProgram, то для патча пишете, например, MyProgramPatch.

Отправлено: 12:45, 11-10-2013 | #1238


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


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

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


Цитата Mat_y:
привязывает поле с картинкой к полю с компонентами.... я бы хотел это поле разместить на странице с выбором компонентов вверху, отдельно от поля со списком компонентов.
Пока я придумал только
Код:
Parent := WizardForm.MainPanel;
Но это не вариант, т.к. добавляет оэто поле на все траницы... что прописать, чтобы затронуть только страницу с выбором компонентов? »
Проблему решил, прописав правило:
Код: Выделить весь код
 if CurPageID=wpSelectComponents then

begin
    InitializeWizard5();
end;
Может кому пригодится.


Цитата El Sanchez:
Mat_y, используйте отличный от AppId программы идентификатор для патча. Если AppId у программы это GUID ({...}-вида), то для патча сгенерите другой. »
Я совсем ламер в этих делах, Вы мне можете написать пример?

Ну и остался вопрос, можно как-то сделать, чтобы изначально поле под картинку для компонента не было пустым?

Последний раз редактировалось Mat_y, 11-10-2013 в 13:55.


Отправлено: 13:35, 11-10-2013 | #1239


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

Ветеран


Contributor


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

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


Цитата Mat_y:
Я совсем ламер в этих делах, Вы мне можете написать пример? »
Пример в справке.
Цитата Mat_y:
Ну и остался вопрос, можно как-то сделать, чтобы изначально поле под картинку для компонента не было пустым? »
На примере предыдущего кода:
Код: Выделить весь код
...
procedure ComponentsListOnMouseLeave(Sender: TObject);
begin
  InfoBMP.Bitmap := I_BMP[0];  // 0-ая картинка по умолчанию
end;

procedure InitializeWizard();
var
  i : Integer;
begin
...
      OnItemMouseMove := @ComponentsListItemMouseMove;
     OnMouseLeave := @ComponentsListOnMouseLeave;
...
  InfoBMP.Bitmap := I_BMP[0]; // 0-ая картинка по умолчанию
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:14, 11-10-2013 | #1240



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты 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




 
Переход