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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Новый участник


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

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


Ненет! 18 гио на ё1 диске. нет. Я хочу их разделить на 4 диска. В моём случае, авторан вот такой: . Я неуверен что подобное можно сделать в иннго.

Отправлено: 21:37, 24-03-2012 | #1301



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

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


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата rasim933:
Я неуверен что подобное можно сделать в иннго. »
В инно можно все!
Ну, или почти все А чего нельзя, но очень хочется, то все равно можно.
читать дальше »
Код: Выделить весь код
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
  Cancel := True;
end;

procedure NewButtonClick(Sender: TObject);
begin
  case TNewButton(Sender).Tag of
    0: MsgBox('Вы нажали кнопку 1',mbInformation,MB_OK);
    1: MsgBox('Вы нажали кнопку 2',mbInformation,MB_OK);
    2: MsgBox('Вы нажали кнопку 3',mbInformation,MB_OK);
    3: MsgBox('Вы нажали кнопку 4',mbInformation,MB_OK);
    4: MsgBox('Вы нажали кнопку 5',mbInformation,MB_OK);
    5: MsgBox('Вы нажали кнопку 6',mbInformation,MB_OK);
    6: MsgBox('Вы нажали кнопку 7',mbInformation,MB_OK);
    7: WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
  end;
end;

procedure InitializeWizard();
Var
  i:Integer;
begin
  with WizardForm do
  begin
    AutoScroll := False;
    ClientHeight := ScaleY(260);
    ClientWidth := ScaleX(190);

    Bevel.Hide;
    OuterNotebook.Hide;
    NextButton.Hide;
    
    for i:=0 to 7 do
    begin
      with TNewButton.Create(WizardForm) do
      begin
        Parent := WizardForm;
        SetBounds(ScaleX(10),ScaleY(10+i*30),ScaleX(170),ScaleY(25));
          case i of
            0: Caption := 'Кнопка 1';
            1: Caption := 'Кнопка 2';
            2: Caption := 'Кнопка 3';
            3: Caption := 'Кнопка 4';
            4: Caption := 'Кнопка 5';
            5: Caption := 'Кнопка 6';
            6: Caption := 'Кнопка 7';
            7: Caption := 'Выход';
          end;
        OnClick := @NewButtonClick;
        Tag := i;
      end;
    end;
  end;
end;

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


Отправлено: 22:04, 24-03-2012 | #1302


Новый участник


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

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


А можно кнкретней? Я несмогу это всё перечитать....

Отправлено: 22:18, 24-03-2012 | #1303


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Там по минимуму - восемь кнопок и обработчик для каждой с примером выполнения команды. Команды вместо меседжбоксов свои вставляй и пользуйся. Ну и надписи на кнопках - надеюсь, понятно, где их поменять?

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


Отправлено: 22:25, 24-03-2012 | #1304


Новый участник


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

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


К сожалению, я с эти вообще незнаком. Сейчас я попробрую полазить в литературе.

Нашёл вроде вот это. Это пойдёт доя кнопки?
читать дальше »
Цитата:
[Setup]
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
OutputDir=userdocs:Test.

[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl";

[Files]
;Изображение размером 320х23
Source: button2.bmp; DestDir: {tmp}; Flags: dontcopy
[code]
const
ButtonWidth = 80;
ButtonHeight = 23;

var
WizardLabel: TLabel;
ButtonPanel: array of TPanel;
ButtonImage: array of TBitmapImage;
ButtonLabel: array of TLabel;
UsedButtons: array of TButton;
ButtonsCount: Integer;

procedure ButtonLabelClick(Sender: TObject);
var Button: TButton; n, i: Integer;
begin
i:= TLabel(Sender).Tag; ButtonImage[i].Left:= 0
for n:=0 to (ButtonsCount-1) do begin
if i = n then Button:= UsedButtons[n];
end;
Button.OnClick(Button)
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth*2
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then ButtonImage[TLabel(Sender).Tag].Left:=0
end;

procedure ButtonLabelMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var n, I: Integer;
begin
I:=TLabel(Sender).Tag;
//Сначала восстанавливаем картинку у всех кнопок, так надо иначе могут быть глюки
for n:=0 to (ButtonsCount-1) do begin if (ButtonLabel[n].Enabled)and(ButtonImage[n].Left <> -ButtonWidth*2)and(I<>N) then ButtonImage[n].Left:= 0; end;
//Теперь собственно ставим нужную картинку
if (ButtonLabel[i].Enabled)and(ButtonImage[i].Left <> -ButtonWidth*2) then begin ButtonImage[i].Left:= -ButtonWidth; end;
end;

procedure WizardLabelMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var n: Integer;
begin
//Т.к Sender'ом выступает WizardLabel то не получится испльзовать индекс кнопки
for n:=0 to (ButtonsCount-1) do if (ButtonLabel[n].Enabled)and(ButtonImage[n].Left <> -ButtonWidth*2) then begin ButtonImage[n].Left:= 0; end;
end;

procedure LoadButtonImage(AButton: TButton);
var n: Integer;
begin
n:=ButtonsCount; SetArrayLength(ButtonPanel, n+1);
SetArrayLength(ButtonImage, n+1); SetArrayLength(ButtonLabel, n+1);
SetArrayLength(UsedButtons, n+1); UsedButtons[n]:= AButton;

ButtonPanel[n]:=TPanel.Create(WizardForm)
ButtonPanel[n].SetBounds(AButton.Left, AButton.Top, AButton.Width, AButton.Height)
ButtonPanel[n].Tag:= n
ButtonPanel[n].Enabled:= AButton.Enabled
ButtonPanel[n].Parent:=AButton.Parent

ButtonImage[n]:=TBitmapImage.Create(WizardForm)
ButtonImage[n].SetBounds(ScaleX(0), ScaleY(0), ScaleX(320), ScaleY(23))
ButtonImage[n].Enabled:=False
ButtonImage[n].Bitmap.LoadFromFile(ExpandConstant('{tmp}\Button2.bmp'))
ButtonImage[n].Parent:=ButtonPanel[n]

with TLabel.Create(WizardForm) do begin
Tag:=n
Parent:=ButtonPanel[n]
Width:=AButton.Width
Height:=AButton.Height
Transparent:=True
OnClick:=@ButtonLabelClick
OnDblClick:=@ButtonLabelClick
OnMouseMove:=@ButtonLabelMove
OnMouseDown:=@ButtonLabelMouseDown
OnMouseUp:=@ButtonLabelMouseUp
end

ButtonLabel[n]:=TLabel.Create(WizardForm)
ButtonLabel[n].Autosize:=True
ButtonLabel[n].Alignment:=taCenter
ButtonLabel[n].Tag:=n
ButtonLabel[n].Enabled:= AButton.Enabled
ButtonLabel[n].Transparent:=True
ButtonLabel[n].Font.Color:=clWhite
ButtonLabel[n].Caption:=AButton.Caption
ButtonLabel[n].OnClick:=@ButtonLabelClick
ButtonLabel[n].OnDblClick:=@ButtonLabelClick
ButtonLabel[n].OnMouseMove:=@ButtonLabelMove
ButtonLabel[n].OnMouseDown:=@ButtonLabelMouseDown
ButtonLabel[n].OnMouseUp:=@ButtonLabelMouseUp
ButtonLabel[n].Parent:=ButtonPanel[n]

ButtonsCount:= ButtonsCount+1
end;

procedure UpdateButtons();
var n: Integer;
begin
for n:=0 to ButtonsCount-1 do begin
ButtonLabel[n].Caption:=UsedButtons[n].Caption
ButtonPanel[n].Visible:=UsedButtons[n].Visible
if (UsedButtons[n].Enabled = False) then ButtonImage[n].Left:= -ButtonWidth*3 else ButtonImage[n].Left:= 0;
ButtonLabel[n].Enabled:= UsedButtons[n].Enabled;
ButtonPanel[n].Enabled:= UsedButtons[n].Enabled;
//Ставим Left и Top лейбла соразмерно размеру лейбла
ButtonLabel[n].Left:= ButtonPanel[n].Width div 2 - ButtonLabel[n].Width div 2;
ButtonLabel[n].Top:= ButtonPanel[n].Height div 2 - ButtonLabel[n].Height div 2;
end;
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
//Делаем кнопку активной
WizardForm.NextButton.Enabled:= True;
//Обновляем текстурированную кнопку (обновляем активность и текстуру)
UpdateButtons();
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
//Делаем кнопку неактивной
WizardForm.NextButton.Enabled:= False;
//Обновляем текстурированную кнопку (обновляем активность и текстуру)
UpdateButtons()
end;

procedure InitializeWizard();
begin
WizardLabel:= TLabel.Create(WizardForm)
WizardLabel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(WizardForm.Width), ScaleY(WizardForm.Height))
WizardLabel.Transparent:= True;
WizardLabel.AutoSize:=false;
WizardLabel.OnMouseMove:=@WizardLabelMove
WizardLabel.Parent:= WizardForm;

WizardForm.BackButton.Width:= ButtonWidth
WizardForm.BackButton.Height:= ButtonHeight

WizardForm.NextButton.Width:= ButtonWidth
WizardForm.NextButton.Height:= ButtonHeight

WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:= ButtonHeight

WizardForm.DirBrowseButton.Left:=ScaleX(337)
WizardForm.DirBrowseButton.Width:= ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Left:=ScaleX(337)
WizardForm.GroupBrowseButton.Width:= ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

ExtractTemporaryFile('button2.bmp')
LoadButtonImage(WizardForm.BackButton)
LoadButtonImage(WizardForm.NextButton)
LoadButtonImage(WizardForm.CancelButton)
LoadButtonImage(WizardForm.DirBrowseButton)
LoadButtonImage(WizardForm.GroupBrowseButton)
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButtons()
end;

Последний раз редактировалось rasim933, 25-03-2012 в 00:13.


Отправлено: 22:36, 24-03-2012 | #1305


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата rasim933:
Это пойдёт доя кнопки? »
Это пример текстурирования кнопки битмапами. Если ты считаешь, что осилишь этот пример и тебе нужны именно текстурированные кнопки, то вполне пойдет. Если тебе нужно просто создать кнопки и обработать их клики, как у тебя на скрине, то моего примера больше, чем достаточно.

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


Отправлено: 22:46, 24-03-2012 | #1306


Новый участник


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

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


Лучьше твой пример. Но, ведь я незнаю как именно по твоему примеру делать кнопки(((( Если можено, то пришли пожалста сюда коды кнопок.

Отправлено: 23:08, 24-03-2012 | #1307


Аватара для Johny777

Ветеран


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

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


rasim933,
для начала убери пожалуйста свой код на пол страницы в [more][code] твой код [/code][/more]

и у меня вопрос
дисков 4?
а где авторан лежит?
если на каждом, то это малость странно. Ладно ты пишешь на блюрей, но хочешь чтоб каждая игра имела свой инсталлер.
если всё таки на всех дисках лежит одинаковый авторан, то проще всего вести поиск файла в {src}\game_1.exe и если он существует, то кнопка активна, а другие нет
в противном случае нужно копировать авторан на комп (ведь если нужная игра не на диске и нужно вставить другой, то активная копия авторана закроется) и вести поиск вроде {drive:{src}}
если у тебя setup.exe один, а bin фалы разбиты на диски, то при выборе компонента (игры) инно сам попросит вставить диск и причём здесь тогда авторан?
короче я не рублю
скажи как оно должно работать и возможно тогда будет легче тебе помочь

Последний раз редактировалось Johny777, 25-03-2012 в 00:28.


Отправлено: 00:05, 25-03-2012 | #1308


Новый участник


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

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


Я хоч сделать 4 диска. Вот скрин всех файлов: . Сечас, все файлы по папкам распиханы. Пока дисков нет.

Цитата Johny777:
и убери пожалуйста свой код на пол страницы в
читать дальше »
Код: Выделить весь код
 твой код
»
Теперь буду знать как это делается)))))

Отправлено: 00:19, 25-03-2012 | #1309


Аватара для Johny777

Ветеран


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

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


rasim933,
ты не ответил на мой вопос
как оно должно работать пусть на твоём текущем авторане?
куда и как запишешь?
что должно запускать что и откуда?
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
мой тебе совет. На каждый двухслойный диск свой авторан, сколько бы игр на нём не лежало
от 4 старых до 1 новой на диск

Последний раз редактировалось Johny777, 25-03-2012 в 00:39.

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

Отправлено: 00:32, 25-03-2012 | #1310



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход