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

Ответить
 • Просмотры: 33
Аватара пользователя
Антон_Мураткин@vk

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Антон_Мураткин@vk »

Цитата Mat_y:



Как его переделать под картинку?
Скрипты Inno Setup. Помощь и советы [часть 6]




Никак. Переделать можно, когда и вправду знаешь, как сделать. А использование сторонней библиотеки, которая делает за тебя не относится к ситуации
Цитата Mat_y:



это я знаю как сделать
Скрипты Inno Setup. Помощь и советы [часть 6]




держи простейший пример.


читать дальше »

Код: Выделить всё

[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;
Аватара пользователя
vint56

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение vint56 »

Цитата Gnom_aka_Lexander:



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




Ну спасибо, ну выручили... ну теперь осталось его адаптировать под свои нужды.



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



Существует программа (не моя) и установщик находит к ней путь по AppId .

Далее, программа установки дополняет существующую программу файлами (при этом совершенно не трогая ни один фаил программы)... и создает файлы для удаления (Unninst).

Если воспользоваться Unninst.exe, то все дополненные файлы удаляются как надо, но и по AppId установщик эту программу перестает находить... есть ли способ этого избежать?
Аватара пользователя
Антон_Мураткин@vk

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Антон_Мураткин@vk »

Цитата Gnom_aka_Lexander:



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




У меня пара вопросов возникла, которые я никак не могу решить...



1)

Строчка



Код:

Код: Выделить всё

    Parent := WizardForm.SelectComponentsPage;

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

Пока я придумал только



Код:

Код: Выделить всё

    Parent := WizardForm.MainPanel;

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



И еще небольшой вопросик...

2) Как сделать, чтобы поле с картинкой изначально не было пустым и имело фоновую картинку, которая бы заменялась при наведении на компонент... для текстового поля это делается вот так...



Код:

Код: Выделить всё

  Info.Caption := 'Наведите на компонент, чтобы получить дополнительную информацию';

а для картинки... научите, пожалуйста.

Сразу спасибо.
Аватара пользователя
Антон_Мураткин@vk

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Антон_Мураткин@vk »

Цитата Mat_y:



Существует программа (не моя) и установщик находит к ней путь по AppId .

Далее, программа установки дополняет существующую программу файлами (при этом совершенно не трогая ни один фаил программы)... и создает файлы для удаления (Unninst).

Если воспользоваться Unninst.exe, то все дополненные файлы удаляются как надо, но и по AppId установщик эту программу перестает находить... есть ли способ этого избежать?
Скрипты Inno Setup. Помощь и советы [часть 6]




Mat_y, я так понимаю патч какой-то делаете или что-то вроде того. Тут можно двумя путями пойти. Первый - это патч создает деинсталлятор и не регистрирует себя в ветке реестра AppId программы, тогда при удалении и файлы удалятся те, что надо, и реестровые записи сохранятся. Для этого всего лишь нужно в секции Setup директиву CreateUninstallRegKey установить в no. В апплете Установка и удаление программ патч, разумеется, не будет фигурировать. Второй - если очень хочется и через апплет удаление делать, то патч должен использовать свою ветку регистрации, не затрагивая программную.
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Nordek »

Цитата El Sanchez:



CreateUninstallRegKey установить в no
Скрипты Inno Setup. Помощь и советы [часть 6]




Если я поставлю CreateUninstallRegKey = no, то тогда же не будет запоминаться список установленных уже компонентов или будет? (Я имею ввиду при повторном запуске установщика)
Аватара пользователя
Антон_Мураткин@vk

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Антон_Мураткин@vk »

Цитата Mat_y:



Если я поставлю CreateUninstallRegKey = no, то тогда же не будет запоминаться список установленных уже компонентов или будет?
Скрипты Inno Setup. Помощь и советы [часть 6]




Mat_y, компонентов патча? Нет, не будет. Выбирайте второй метод, это обычная практика.
Аватара пользователя
Антон_Мураткин@vk

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Антон_Мураткин@vk »

Цитата El Sanchez:



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




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

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Farser21 »

Цитата Mat_y:



может быть дело в том, что я использую AppId?
Скрипты Inno Setup. Помощь и советы [часть 6]




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

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение saurn »

Цитата Mat_y:



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

Пока я придумал только

Код:

Parent := WizardForm.MainPanel;

Но это не вариант, т.к. добавляет оэто поле на все траницы... что прописать, чтобы затронуть только страницу с выбором компонентов?
Скрипты Inno Setup. Помощь и советы [часть 6]




Проблему решил, прописав правило:



Код:

Код: Выделить всё

 if CurPageID=wpSelectComponents then
begin
    InitializeWizard5();
end;

Может кому пригодится.






Цитата El Sanchez:



Mat_y, используйте отличный от AppId программы идентификатор для патча. Если AppId у программы это GUID ({...}-вида), то для патча сгенерите другой.
Скрипты Inno Setup. Помощь и советы [часть 6]




Я совсем ламер в этих делах, Вы мне можете написать пример?



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

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Shkutu »

Цитата Mat_y:



Я совсем ламер в этих делах, Вы мне можете написать пример?
Скрипты Inno Setup. Помощь и советы [часть 6]




Пример в
справке
.


Цитата Mat_y:



Ну и остался вопрос, можно как-то сделать, чтобы изначально поле под картинку для компонента не было пустым?
Скрипты Inno Setup. Помощь и советы [часть 6]




На примере предыдущего кода:



Код:

Код: Выделить всё

...
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;
Ответить

Вернуться в «Автоматическая установка приложений»