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

Компьютерный форум 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 | Цитировать


Ivan_009, примерно. это если компонент-лист лежит у тебя прямо на WizardForm. тогда отдельно распаковывать файл изображения для компонентлиста не обязательно, можно взять битмап изображения с BGBitmapImage и вместо LoadBGBmpFromFile использовать LoadBGBmpFromBitmap:
Код: Выделить весь код
WizardForm.ComponentsList.LoadBGBmpFromBitmap(BGBitmapImage.Bitmap, WizardForm.ComponentsList.Left, WizardForm.ComponentsList.Top);

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

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

Отправлено: 08:11, 29-01-2014 | #2031



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

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


Аватара для Ivan_009

Ветеран


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

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


Gnom_aka_Lexander, Если я правильно понял то как то так:

Код: Выделить весь код
 
var 
BGBitmapImage: TBitmapImage; 

procedure InitializeWizard();
begin
ExtractTemporaryFile('BGImage.bmp');

BGBitmapImage := TBitmapImage.Create(WizardForm);
BGBitmapImage.Parent := WizardForm;
BGBitmapImage.Align := alClient;
BGBitmapImage.SendToBack;
BGBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\BGImage.bmp'))

with WizardForm.ComponentsList do
begin
//BorderStyle := bsNone;
Parent := WizardForm;
SetBounds(ScaleX(110), ScaleY(180), ScaleX(350), ScaleY(120));
Font.Color:=$FFFFFF;
Font.Name:='MS Sans Serif';
Font.Size:= 9;
TreeViewStyle := True;

WizardForm.ComponentsList.LoadBGBmpFromBitmap(BGBitmapImage.Bitmap, WizardForm.ComponentsList.Left, WizardForm.ComponentsList.Top);
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
WizardForm.ComponentsList.Hide;
BGBitmapImage.Hide;
case CurPageID of
wpSelectComponents:
begin
WizardForm.ComponentsList.Show;
BGBitmapImage.Show;
end;
end;
end;

Последний раз редактировалось Ivan_009, 29-01-2014 в 14:41. Причина: Убрал лишний end;


Отправлено: 12:25, 29-01-2014 | #2032


SHVtYW4=


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

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


Цитата Gnom_aka_Lexander:
Ну или отключить сглаживание ClearTipe для шрифта компонент-листа »
А я то всю голову ломал, что за замыленность. ClearType по умолчанию то стоит, и ошибкой не посчитал.

Цитата Gnom_aka_Lexander:
ты будешь смеяться »
Ничего смешного, MS Sans Serif - волшебный шрифт.
Далее не относится к теме, но относится к шрифту:
Gnom_aka_Lexander, Ты возможно тоже будешь удивлён, но в "C:\Program Files\Inno Setup 5\ISLanguages"
в файле "Russian_ansi.lng" (у меня Tahoma в нём по умолчанию) если заменить DialogFontName=Tahoma на DialogFontName=MS Sans Serif то в Inno Setup Compiler будут отображаться русские буквы вместо непонятных иероглифов.

Ivan_009, И как, нормально компилится?
В WizardForm.ComponentsList под TreeViewStyle := True; лишний end; убери.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Отправлено: 13:31, 29-01-2014 | #2033


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Ivan_009:
BGBitmapImage.Show; »
картинка только на странице компонентов, чтоли?
Цитата Nordek:
А я то всю голову ломал, что за замыленность. »
дело не в замыленности как таковой, там именно из-за сглаживания и именно Cleartype целая куча артефактных явлений - утолщение шрифта при каждом клике, до полного закрашивания и еще какие-то глюки вроде были. и я помню всю голову сломал и уж никак на шрифт не думал. Sans Serif - потому что он старый и не имеет механизма сглаживания Cleartype. скорей всего еще какие-то можно использовать из старых в этой ситуации, я не искал, предпочитаю Tahoma и отключение Cleartype там, где он вызывает глюки.
Цитата Nordek:
русские буквы вместо непонятных иероглифов. »
для меня неактуально. я так и не смог поймать такой смешной и где-то даже интересный глюк. ни разу.

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


Отправлено: 14:43, 29-01-2014 | #2034


Аватара для Ivan_009

Ветеран


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

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


Цитата Gnom_aka_Lexander:
картинка только на странице компонентов, чтоли? »
Gnom_aka_Lexander, У меня на остальных через Ботву наложена. Или может как нибудь подругому надо..

Как обьеденить ComponentsList и TasksList в одну страницу...

Последний раз редактировалось Ivan_009, 27-03-2014 в 00:01.


Отправлено: 15:01, 29-01-2014 | #2035


SHVtYW4=


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

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


Цитата Ivan_009:
Как обьеденить ComponentsList и TasksList в одну страницу »
Это вопрос?

Хочешь так:
Код: Выделить весь код
[Code]
procedure InitializeWizard();
begin
  with WizardForm.ComponentsList do
  begin
    Parent := WizardForm.SelectTasksPage;
    Width := ScaleX(193);
    Top := ScaleY(37);
    Height := ScaleY(168);
  end;

  with WizardForm.ComponentsDiskSpaceLabel do
  begin
    Parent := WizardForm.SelectTasksPage;
  end;

  with WizardForm.TypesCombo do
  begin
    Visible := False;
  end;

  with WizardForm.TasksList do
  begin
    Left := ScaleX(208);
    Width := ScaleX(209);
  end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
 if(PageID =wpSelectComponents) then Result:= True;
end;
а хочешь так:
Код: Выделить весь код
[Code]
procedure InitializeWizard();
begin
  WizardForm.ComponentsList.Parent := WizardForm.SelectTasksPage;
  WizardForm.ComponentsList.Width := ScaleX(193);
  WizardForm.ComponentsList.Top := ScaleY(37);
  WizardForm.ComponentsList.Height := ScaleY(168);
  WizardForm.ComponentsDiskSpaceLabel.Parent := WizardForm.SelectTasksPage;
  WizardForm.TypesCombo.Visible := False;
  WizardForm.TasksList.Left := ScaleX(208);
  WizardForm.TasksList.Width := ScaleX(209);
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
 if(PageID =wpSelectComponents) then Result:= True;
end;

Выбирай как больше нравится.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:58, 29-01-2014 | #2036


Аватара для Ivan_009

Ветеран


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

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


Nordek, У меня все на WizardForm лежит. Эти примеры не работают...

Отправлено: 21:23, 29-01-2014 | #2037


SHVtYW4=


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

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


Цитата Ivan_009:
У меня все на WizardForm лежит. »
Не понял.

читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Components]
Name: a; Description: A

[Tasks]
Name: a; Description: A

[Code]
procedure RedesignWizardForm;
begin
  WizardForm.ComponentsList.Parent := WizardForm.SelectTasksPage;
  WizardForm.ComponentsList.Width := ScaleX(193);
  WizardForm.ComponentsList.Top := ScaleY(37);
  WizardForm.ComponentsList.Height := ScaleY(168);
  WizardForm.ComponentsDiskSpaceLabel.Parent := WizardForm.SelectTasksPage;
  WizardForm.TypesCombo.Visible := False;
  WizardForm.TasksList.Left := ScaleX(208);
  WizardForm.TasksList.Width := ScaleX(209);
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
 if(PageID =wpSelectComponents) then Result:= True;
end;

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Отправлено: 21:55, 29-01-2014 | #2038


Ветеран


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

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


Цитата Ivan_009:
У меня все на WizardForm лежит. Эти примеры не работают... »
Так измените родителя на WizardForm, и в CurPageChanged определите скрытие\показ элементов.
Простой пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.


[Tasks]
Name: task; Description: task;


[Components]
Name: component; Description: component; Types: full;


[Code]
procedure InitializeWizard();
begin
    WizardForm.InnerNotebook.Hide;
    WizardForm.TypesCombo.Hide;
    WizardForm.ComponentsList.Parent := WizardForm;
    WizardForm.ComponentsList.SetBounds(ScaleX(37), ScaleY(102), ScaleX(200), ScaleY(170));
    WizardForm.ComponentsDiskSpaceLabel.Hide;
    WizardForm.TasksList.Parent := WizardForm;
    WizardForm.TasksList.SetBounds(ScaleX(WizardForm.ComponentsList.Left + 220), ScaleY(102), ScaleX(200), ScaleY(170));
    WizardForm.TasksList.BorderStyle := bsSingle;
    WizardForm.TasksList.Color := $FFFFFF;
end;


function ShouldSkipPage(PageID: Integer): Boolean;
begin
    case PageID of
        7: Result := True;
    end;
end;


procedure CurPageChanged(CurPageID: Integer);
begin
    WizardForm.ComponentsList.Hide;
    WizardForm.TasksList.Hide;
    
    case CurPageID of
        9:
        begin
            WizardForm.ComponentsList.Show;
            WizardForm.TasksList.Show;
        end;
    end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:12, 29-01-2014 | #2039


SHVtYW4=


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

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


Ivan_009, Если вешать на SelectComponentsPage, то задач не будет пока не перейдёшь на страницу самих задач. А когда возвратишься к компонентам то задачи появятся.
Если так же секции [Components] не будет, то и вовсе будет скрыто - в этом случае можно было бы повесить на SelectTasksPage. Но опять же если секции [Tasks] не будет, то и компоненты будут скрыты.
Можно повесить на новую страницу:
читать дальше »
Код: Выделить весь код
[Code]
var
  PageComTasks: TWizardPage;
  
procedure InitializeWizard();
begin

  PageComTasks := CreateCustomPage(wpSelectTasks, 'Caption', 'Description');
  
  WizardForm.ComponentsList.Parent := PageComTasks.Surface;
  WizardForm.ComponentsList.Width := ScaleX(193);
  WizardForm.ComponentsList.Top := ScaleY(43);
  WizardForm.ComponentsList.Height := ScaleY(168);
  WizardForm.ComponentsDiskSpaceLabel.Parent := PageComTasks.Surface;
  WizardForm.ComponentsDiskSpaceLabel.AutoSize := True;
  WizardForm.TasksList.Parent := PageComTasks.Surface;
  WizardForm.TasksList.Left := ScaleX(208);
  WizardForm.TasksList.Width := ScaleX(209);
  WizardForm.TasksList.Top := ScaleY(43);
  
  WizardForm.SelectComponentsLabel.Parent := PageComTasks.Surface;

end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
 if(PageID =wpSelectComponents) or(PageID =wpSelectTasks) then Result:= True;
end;

но и тут не без нюансов - если секций [Components] и [Tasks] не будет, то будет пустая страница.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.

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

Отправлено: 22:35, 29-01-2014 | #2040



Компьютерный форум 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




 
Переход