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

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

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

Ветеран


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


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

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


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 899 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 797 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

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


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

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 00:28, 04-11-2010

 

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


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

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


nik1967, спасибо, только чет не так получается [img]del[/img] чекбокс есть, а самой надписи нет

Последний раз редактировалось Imitri7, 13-12-2010 в 19:06.


Отправлено: 16:57, 13-12-2010 | #101



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

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


Аватара для nik1967

Старожил


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

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


Imitri7,
У тебя чекбокс расположен на WizardForm.InstallingPage;, а в примере на WizardForm;. Чтобы у тебя работало, нужно так:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
 
[Files]
Source: {sys}\*.dll; DestDir: {app}; Flags: external deleteafterinstall;
 
[_code]
function GetSystemMetrics(nIndex: Integer): Integer;
 external 'GetSystemMetrics@user32.dll stdcall';
 
var
  MyCheck: TCheckBox;
  MyCheckLabel: TLabel;

procedure MyCheckOnClick(Sender: TObject);
begin
  if MyCheck.Checked = False then
     MyCheck.Checked:= True else
     MyCheck.Checked:= False;
end;
 
procedure StandartForm();
begin
  with WizardForm do
  begin
    ClientWidth := ScaleX(497);
    ClientHeight := ScaleY(360);
    Center;
    Bevel.Show;
    Bevel1.Show;
    MainPanel.Show;
    with InnerNotebook do
    begin
      Left := ScaleX(40);
      Top := ScaleY(72);
      Width := ScaleX(417);
    end;
    with StatusLabel do
      Width := ScaleX(417);
    with FileNameLabel do
    begin
      ScaleY(16);
      Width := ScaleX(417);
    end;
    with ProgressGauge do
    begin
      Top := ScaleY(42);
      Width := ScaleX(417);
    end;
    with CancelButton do
    begin
      Left := ScaleX(412);
      Top := ScaleY(327);
    end;      
  end;
  with MyCheck do
    Top := ScaleY(208);
  with MyCheckLabel do begin
    Top := ScaleY(209);
    Left := ScaleX(20);
  end;
end;
 
procedure MyNewForm();
begin
  with WizardForm do
  begin
    ClientWidth := ScaleX(395);
    ClientHeight := ScaleY(120);
    Left := GetSystemMetrics(16) - ClientWidth - ScaleX(8);
    Top := GetSystemMetrics(17) - ClientHeight - ScaleY(8);    
    Bevel.Hide;
    Bevel1.Hide;
    MainPanel.Hide;
    with InnerNotebook do
    begin
      Left := ScaleX(10);
      Top := ScaleY(10);
      Width := WizardForm.ClientWidth - ScaleX(20);
    end;
    with StatusLabel do
      Width := InnerNotebook.Width;
 
    with FileNameLabel do
    begin
      Top := ScaleY(20);
      Width := InnerNotebook.Width;
    end;
    with ProgressGauge do
    begin
      Top := ScaleY(40);
      Width := InnerNotebook.Width;
    end;
    with CancelButton do
    begin
      Left := WizardForm.ClientWidth div 2 - CancelButton.Width div 2;
      Top := WizardForm.ClientHeight - CancelButton.Height - ScaleY(10);
      BringToFront;
    end;
  end;
  with MyCheck do
    Top := WizardForm.CancelButton.Top -7;
  with MyCheckLabel do begin
    Top := WizardForm.CancelButton.Top -6;
    Left := ScaleX(20);
  end;
end;
 
procedure GetWizardForm(Sender: TObject);
begin
  if MyCheck.Checked then
    MyNewForm()
  else
  StandartForm();
end;
 
procedure InitializeWizard();
begin
  MyCheck := TCheckBox.Create(WizardForm);
  with MyCheck do
  begin
    Top := ScaleY(208);
    Width := ScaleX(15);
    OnClick := @GetWizardForm;
    Parent := WizardForm.InstallingPage;
  end;
  MyCheckLabel := TLabel.Create(WizardForm);
  with MyCheckLabel do begin
    AutoSize:=False;
    Left := ScaleX(20);
    Top := ScaleY(209);
    Width := ScaleX(150);
    Transparent:=True;
    //Font.Name:= 'Tahoma'
    //Font.Size:= 8;
    Font.Color:=clRed;
    Caption := 'Компактный размер';
    Parent:= WizardForm.InstallingPage;
    OnClick:= @MyCheckOnClick;
  end;
end;
  
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
   MyCheck.Checked := False;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:00, 13-12-2010 | #102


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


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

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


nik1967,
PHP код: Выделить весь код

procedure CurPageChanged(CurPageIDInteger);

begin
 
if CurPageID=wpInstalling then
 begin
   WizardForm
.CancelButton.Left:=ScaleX(122);
   
WizardForm.CancelButton.Top:=ScaleY(70);
   
ButtonPanel[bidCancel].Left := WizardForm.CancelButton.Left;
   
ButtonPanel[bidCancel].Top := WizardForm.CancelButton.Top;
 
end;
end

аналог этого как-то реализовать для StandartForm и MyNewForm можно?

Отправлено: 18:29, 13-12-2010 | #103


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


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

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


Цитата Imitri7:
как-то реализовать для StandartForm и MyNewForm можно? »
А что конкретно не получается?

Отправлено: 20:46, 13-12-2010 | #104


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


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

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


serg aka lain нужно сделать текстуринг кнопок с помошью
читать дальше »
PHP код: Выделить весь код

const

  
ButtonWidth 80;    //Указываем размер кнопок
  
ButtonHeight 23;

  
bidBack 0;
  
bidNext 1;
  
bidCancel 2;
  
bidDirBrowse 3;
  
bidGroupBrowse 4;

var
  
ButtonPanel: array [0..4of TPanel;
  
ButtonImage: array [0..4of TBitmapImage;
  
ButtonLabel: array [0..4of TLabel;

procedure ButtonLabelClick(SenderTObject);
var
  
ButtonTButton;
begin
  ButtonImage
[TLabel(Sender).Tag].Left:=0
  
case TLabel(Sender).Tag of
    bidBack
Button:=WizardForm.BackButton
    bidNext
Button:=WizardForm.NextButton
    bidCancel
Button:=WizardForm.CancelButton
    bidDirBrowse
Button:=WizardForm.DirBrowseButton
    bidGroupBrowse
Button:=WizardForm.GroupBrowseButton
  
else
    Exit
  
end
  Button
.OnClick(Button)
end;

procedure ButtonLabelMouseDown(SenderTObjectButtonTMouseButtonShiftTShiftStateXYInteger);
begin
  
if ButtonLabel[TLabel(Sender).Tag].Enabled then
     ButtonImage
[TLabel(Sender).Tag].Left:=-ButtonWidth
end
;

procedure ButtonLabelMouseUp(SenderTObjectButtonTMouseButtonShiftTShiftStateXYInteger);
begin
  ButtonImage
[TLabel(Sender).Tag].Left:=0
end
;

procedure LoadButtonImage(AButtonTButtonAButtonIndexinteger);
var
  
ImageTBitmapImage;
  
PanelTPanel;
  
LablTLabel;

begin
  Panel
:=TPanel.Create(WizardForm)
  
Panel.Left:=AButton.Left
  Panel
.Top:=AButton.Top
  Panel
.Width:=AButton.Width
  Panel
.Height:=AButton.Height
  Panel
.Tag:=AButtonIndex
  Panel
.Parent:=AButton.Parent
  ButtonPanel
[AButtonIndex]:=Panel

  Image
:=TBitmapImage.Create(WizardForm)    //Рисунок который ложится на кнопку
  
Image.Width:=160                          //Обязательно прописать оригинальный размер рисунка
  
Image.Height:=23
  Image
.Enabled:=False
  Image
.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'))
  
Image.Parent:=Panel
  ButtonImage
[AButtonIndex]:=Image

  with TLabel
.Create(WizardForm) do begin
    Tag
:=AButtonIndex
    Parent
:=Panel
    Width
:=Panel.Width
    Height
:=Panel.Height
    Transparent
:=True
    OnClick
:=@ButtonLabelClick
    OnDblClick
:=@ButtonLabelClick
    OnMouseDown
:=@ButtonLabelMouseDown
    OnMouseUp
:=@ButtonLabelMouseUp
  end

  Labl
:=TLabel.Create(WizardForm)        //Текст кнопок
  
Labl.Left:=23                          //Указываем положение текста
  
Labl.Top:=5
  Labl
.Autosize:=True
  Labl
.Alignment:=taCenter
  Labl
.Tag:=AButtonIndex
  Labl
.Transparent:=True
  Labl
.Font.Color:=clFont               //Цвет текста
  
Labl.Caption:=AButton.Caption
  Labl
.OnClick:=@ButtonLabelClick
  Labl
.OnDblClick:=@ButtonLabelClick
  Labl
.OnMouseDown:=@ButtonLabelMouseDown
  Labl
.OnMouseUp:=@ButtonLabelMouseUp
  Labl
.Parent:=Panel
  ButtonLabel
[AButtonIndex]:=Labl
end
;

procedure UpdateButton(AButtonTButton;AButtonIndexinteger);
begin
  ButtonLabel
[AButtonIndex].Caption:=AButton.Caption
  ButtonPanel
[AButtonIndex].Visible:=AButton.Visible
  ButtonLabel
[AButtonIndex].Enabled:=Abutton.Enabled
end
;

procedure LicenceAcceptedRadioOnClick(SenderTObject);
begin
  ButtonLabel
[bidNext].Enabled:=True
  ButtonPanel
[bidNext].Enabled := True
end
;

procedure LicenceNotAcceptedRadioOnClick(SenderTObject);
begin
  ButtonLabel
[bidNext].Enabled:=False
  ButtonPanel
[bidNext].Enabled := False
end
;

procedure CurPageChanged(CurPageIDInteger);
begin
  UpdateButton
(WizardForm.BackButton,bidBack)
  
UpdateButton(WizardForm.NextButton,bidNext)
  
UpdateButton(WizardForm.CancelButton,bidCancel)
  
ButtonLabel[bidBack].Left := (ButtonPanel[bidBack].Width ButtonLabel[bidBack].Width 2);
  
ButtonLabel[bidNext].Left := (ButtonPanel[bidNext].Width ButtonLabel[bidNext].Width 2);
  
ButtonLabel[bidCancel].Left := (ButtonPanel[bidCancel].Width ButtonLabel[bidCancel].Width 2);
  
ButtonLabel[bidDirBrowse].Left := (ButtonPanel[bidDirBrowse].Width ButtonLabel[bidDirBrowse].Width 2);
  
ButtonLabel[bidGroupBrowse].Left := (ButtonPanel[bidGroupBrowse].Width ButtonLabel[bidGroupBrowse].Width 2);
end;

procedure InitializeWizard();
begin
  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:=337
  WizardForm
.DirBrowseButton.Width:=ButtonWidth
  WizardForm
.DirBrowseButton.Height:=ButtonHeight

  WizardForm
.GroupBrowseButton.Left:=337
  WizardForm
.GroupBrowseButton.Width:=ButtonWidth
  WizardForm
.GroupBrowseButton.Height:=ButtonHeight

  WizardForm
.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

  WizardForm
.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

  ExtractTemporaryFile
('button.bmp')
  
LoadButtonImage(WizardForm.BackButton,bidBack)
  
LoadButtonImage(WizardForm.NextButton,bidNext)
  
LoadButtonImage(WizardForm.CancelButton,bidCancel)
  
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
  
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end



чет я как уже не пробовал, все кнопки с текстурой кроме кнопки отмены в StandartForm и MyNewForm

Отправлено: 21:26, 13-12-2010 | #105


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


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

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


Цитата Imitri7:
чет я как уже не пробовал, все кнопки с текстурой кроме кнопки отмены в StandartForm и MyNewForm »
А новые координаты для bidCancel, в процедурах (StandartForm, MyNewForm) пробовал?
Код: Выделить весь код
  ButtonPanel[bidCancel].Left := WizardForm.CancelButton.Left;
  ButtonPanel[bidCancel].Top := WizardForm.CancelButton.Top;
з.ы. и удали контрол BringToFront у кнопки CancelButton, т.к. текстура (панелька) будет слетать.

Последний раз редактировалось serg aka lain, 13-12-2010 в 22:23. Причина: добавлено

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

Отправлено: 21:47, 13-12-2010 | #106


Аватара для ChVL

Старожил


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

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


Habetdin,

IMHO, при такой записи указание версии относится к файлам, а привязки к версии системы нет

Отправлено: 21:53, 13-12-2010 | #107


Аватара для Habetdin


Автор проектов


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

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


ChVL,
Цитата ChVL:
IMHO, при такой записи указание версии относится к файлам, а привязки к версии системы нет »
С точностью до наоборот:
Цитата Справка:
MinVersion
A minimum Windows version and Windows NT version respectively for the entry to be processed. If you use "0" for one of the versions then the entry will never be processed on that platform. If you leave one of the versions empty then the entry will use the default MinVersion for that platform. Build numbers and/or service pack levels may be included in the version numbers. This overrides any MinVersion directive in the script's [Setup] section.

An entry without a MinVersion parameter is always processed, unless other parameters say it shouldn't be.

Example:
Код: Выделить весь код
MinVersion: 4.0,4.0
MinVersion: 4.1,
OnlyBelowVersion
Basically the opposite of MinVersion. Specifies the minimum Windows and Windows NT version for the entry not to be processed. For example, if you put 4.1,5.0 and the user is running Windows 95 or NT 4.0 the entry will be processed, but if the user is running Windows 98 (which reports its version as 4.1) or Windows 2000 (which reports its version as NT 5.0), it will not be processed. Putting "0" for one of the versions means there is no upper version limit. Build numbers and/or service pack levels may be included in the version numbers. This overrides any OnlyBelowVersion directive in the script's [Setup] section.

An entry without an OnlyBelowVersion parameter is always processed, unless other parameters say it shouldn't be.

Example:
Код: Выделить весь код
OnlyBelowVersion: 4.1,5.0

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Отправлено: 22:26, 13-12-2010 | #108


Аватара для STRAYKER

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


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

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



КАК СОЗДАТЬ ТАКОЕ ???

Отправлено: 17:17, 14-12-2010 | #109


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


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

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


Всем привет. Подскажите пожалуйста почему при данном скрипте
--------------------
[CustomMessages]
rus.ArcTitle=Распаковка архивов FreeArc...
rus.ExtractedInfo=Распаковано %1 Мб из %2 Мб
rus.ArcInfo=Архив: %1 из %2
rus.AllArcProgress=Прогресс распаковки архивов: %1%%
rus.Extracting=Распаковывается: %1
rus.Taskbar=%1%%, ждите %2
rus.ArcRemains=Осталось ждать %1
rus.LongTime=вечно
rus.Ending=завершение
rus.ArcFail=Распаковка архивов не завершена!
rus.ArcBreak=Распаковка архивов прервана!
rus.ArcFinishedHeading=Установка игры {#GameName} не завершена
rus.ArcError=Установка игры {#GameVerName} не была завершена.
rus.ArcTrouble=Пожалуйста, устраните проблему и запустите установку снова.
rus.ArcBroken=Возможно, архив %1 повреждён или недостаточно места на диске назначения.
------------------------
вылетает ошибка: Unknown Language name "rus"

-------
Если вам понравился мой совет, то нажмите "Полезное сообщение" :)


Отправлено: 21:51, 14-12-2010 | #110



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход