Inno Setup (создание инсталяционных пакетов)

Статус
В этой теме нельзя размещать новые ответы.

Shegorat

Lord of Madness
Администратор

Это мощное бесплатное средство для создания установочных пакетов (дистрибутивов) программ. Поддерживается шифрование, установка пароля, различные задачи по завершении установки.
По сравнению с NSIS (основной конкурент на бесплатной основе) проще в настройке, имеет более понятную структуру скрипта, но генерит на 200-300 кб больший инсталятор. На данный момент он конкурирует и даже превосходит многие коммерческие установщики по функциональности и стабильности.

Последние версии:
Inno Setup QuickStart Pack (ansi) 5.5.4 [13.10.2013]
Скачать (1.8 Mb)
Inno Setup QuickStart Pack (unicode) 5.5.4 [13.10.2013]
Скачать (2.2 Mb)
Что нового? |По русски :)| Все сборки
Русский язык для Inno Setup версии 5.5.3 от [USER]Leserg[/USER] [04.02.2013]
Скачать

Расширенная версия от китайских собратьев. Домашняя страница ResTools
Добавляет списку компонентов возможность сворачивать дочерние элементы.
Содержит более удобный редактор, кроме того, компилятор имеет множество других возможностей и новых функций.
На сайте автора также есть дополнительные библиотеки.
Последние версии:
Inno Setup Compiler 5.5.2 build 121216
Скачать (2.96 Mb) | Зеркало (1.7 Mb) - Убраны картинки для уменьшения веса архива
Inno ISCmplr Setup 5.5.1 build 121002
Скачать (1.8 Mb) | Зеркало

Русская справка к версии 5.5.1, автор перевода BagIra, [USER]bugron[/USER]
Скачать

Сборки:
InnoSetup Ultra
Сборка инструментов для работы со скриптами InnoSetup.
Текущая версия компилятора – 5.5.1. Обновлено 2 Октября 2012г.
Содержит в себе все обновленные инструменты для работы, сборка постоянно обновляется.
Автор сборки: [USER]LexBell[/USER]
Скачать | InnoUltra-lite version | Апдейт (миниинсталл)
 
Последнее редактирование модератором:

Dark_Delphin

Новичок
А возможно добавить ссылку в msgBox?

Код:
procedure NewButton1Click(Sender: TObject);
  begin
    MsgBox(ExpandConstant('{cm:info}'), mbInformation, MB_OK);
 end;
Код:
[CustomMessages]
RUS.NewButton1=Прочитай
RUS.info= - Упаковал PlayUser;
 

Sanch8

Новичок
Dark_Delphin

Код:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program

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

[CustomMessages]
RUS.info= Упаковал PlayUser

[Code_]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then
    MsgBox(CustomMessage('info'), mbInformation, MB_OK); 
end;
 

yuwik

Мимокрокодил
Помогите решить такую проблему: при выборе рус (текст) - выделялся и рус (озвучка) и наоборот
тоже самое и англ (текст) и англ (озвучка)
Спасибо заранее
 

urban

Старожил
yuwik, у меня так,пробуй
[Components]
Name: Redist; Description: Дополнительное ПО:; Types: full; Flags: fixed
Name: Redist\DirectXCheck; Description: Установить / Обновить DirectX; Types: full
Name: Redist\VCCheck; Description: Установить / Обновить VCRedist; Types: full
Name: Icons; Description: Ярлыки; Types: full; Flags: fixed
Name: Icons/DesktopIcon; Description: Создать ярлык на Рабочем столе; Types: full
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive;
Name: text\eng; Description: Английский; Flags: exclusive;
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive;
Name: voice\eng; Description: Английский; Flags: exclusive;
 

yuwik

Мимокрокодил
Это понятно
Мне нужно, что бы они работали попарно (рус - текст и озвучка и англ - текст и озвучка)
у меня примерно так же стоит
Name: CompGame; Description: {#GameName}:; Types: full; Flags: fixed;
Name: CompGame\Text; Description: {cm:Text}; Flags: fixed; Types: Full;
Name: CompGame\Text\Rus; Description: {cm:Russian}; Flags: exclusive;
Name: CompGame\Text\Eng; Description: {cm:English}; Flags: exclusive;
Name: CompGame\Voice; Description: {cm:Voice}; Flags: fixed; Types: Full;
Name: CompGame\Voice\Rus; Description: {cm:Russian}; Flags: exclusive;
Name: CompGame\Voice\Eng; Description: {cm:English}; Flags: exclusive;
Name: Redist; Description: {cm:Redist}; Types: Full;
Name: Redist\DirectX; Description: {cm:DirectX};
Name: Redist\Redist; Description: {cm:VCRedist};
//Name: Redist\PhysX; Description: {cm:physX};
//Name: Redist\WMF11; Description: {cm:WMF11}; Types: full;
Name: CreateDesktopIcon; Description: {cm:CreateDesktopIcon}; Types: full; Flags: collapsed
 
Последнее редактирование:

urban

Старожил
а как поменять иконку на отмене? я брал пример отмены с кнопками текстурированными,но у меня не получается с isdone его совместить,при отмене не действует кнопка да,так что хочу просто иконку там поменять
 

Mickey1s

Ветеран
Модератор
Привет всем. Кто подскажет как в инсталляторе сделать выбор разрешения как тут:
 

Dark_Delphin

Новичок
Dark_Delphin

Код:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program

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

[CustomMessages]
RUS.info= Упаковал PlayUser

[Code_]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then
    MsgBox(CustomMessage('info'), mbInformation, MB_OK); 
end;

Я имел введу , что-бы ссылка в окошке была кликабельная.
 

Вложения

Shegorat

Lord of Madness
Администратор
Привет всем. Кто подскажет как в инсталляторе сделать выбор разрешения как тут:
Код:
[noparse][Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp

[Files]
Source: ini640x480.ini; DestDir: {app}; DestName: default.ini; Check: GetRes('640x480');
Source: ini800x600.ini; DestDir: {app}; DestName: default.ini; Check: GetRes('800x600');
Source: ini1024x768.ini; DestDir: {app}; DestName: default.ini; Check: GetRes('1024x768');
Source: ini1280x1024.ini; DestDir: {app}; DestName: default.ini; Check: GetRes('1280x1024');

[code]
var
  Res: TComboBox;

function GetRes(S: String): Boolean;
begin
  Result:= S=Res.Text;
end;
  
procedure InitializeWizard();
begin
  Res:= TComboBox.Create(WizardForm);
  Res.SetBounds(0, 100, 330, 23);
  Res.Style:= csDropDownList;
  Res.Parent:= WizardForm.SelectDirPage;
  Res.Items.Add('640x480');
  Res.Items.Add('800x600');
  Res.Items.Add('1024x768');
  Res.Items.Add('1280x1024');
  Res.ItemIndex:= 0;
end;[/noparse]
а как поменять иконку на отмене? я брал пример отмены с кнопками текстурированными,но у меня не получается с isdone его совместить,при отмене не действует кнопка да,так что хочу просто иконку там поменять
Ээм, что?

А возможно добавить ссылку в msgBox?
Нет, нужно создавать свою форму и на ней вручную делать ссылку.

Помогите решить такую проблему: при выборе рус (текст) - выделялся и рус (озвучка) и наоборот
тоже самое и англ (текст) и англ (озвучка)
Спасибо заранее
А что мешает сделать текст и озвучку одним компонентом?
 

urban

Старожил
как совместить новое окно закрытия инсталла с исдон? http://rghost.ru/48046369
по всякому пробовал,но в исдоне осталось старое окно закрытия
 

Shegorat

Lord of Madness
Администратор
По поводу этого способа
При компиляции вылазиет ошибка
Not in a loop.
Значит где-то накосячил. Подозреваю что либо скопировал лишние строки, либо закомментировал цикл. Потому как компилятор ясно говорит "Not in a loop", и, предполагаю, что указывает на одну из строк if not ISArcExtract(....) then Break;

Не помню для кого, но писал такой код
Код:
[noparse][Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.\InnoSetupTest

[Files]
Source: compiler:WizModernSmallImage.bmp; Flags: dontcopy;

[Code]
var
  MyExit: TSetupForm; 
  
procedure MyExitMessage(); 
var 
  MyIcon: String; 
  YesBtn, NoBtn: TButton;
begin 
  MyExit := CreateCustomForm(); 
  with MyExit do 
  begin 
    Position := poScreenCenter; 
    ClientWidth := WizardForm.Width; 
    ClientHeight := WizardForm.Height div 2; 
    Caption := ExpandConstant(SetupMessage(msgExitSetupTitle)); 
    Color := clBlack;

    MyIcon := ExpandConstant(AddBackSlash('{tmp}') + 'WizModernSmallImage.bmp'); 
    if not FileExists(MyIcon) then 
      ExtractTemporaryFile(ExtractFileName(MyIcon)); 
 
    with TBitmapImage.Create(MyExit) do 
    begin 
      Stretch := True;
      Left := ScaleX(10); 
      Top := ScaleY(20); 
      Width := 55; 
      Height := 55; 
      Bitmap.LoadFromFile(MyIcon);
      Parent := MyExit; 
    end; 
 
    with TNewStaticText.Create(MyExit) do 
    begin 
      Left := ScaleX(110); 
      Top := ScaleY(20); 
      Width := MyExit.Width - ScaleX(115); 
      Height := MyExit.Height div 2; 
      AutoSize := False; 
      WordWrap := True; 
      Caption := ExpandConstant(SetupMessage(msgExitSetupMessage)); 
      Parent := MyExit; 
      Font.Color := clWhite; 
    end; 
  end;

  NoBtn:= TButton.Create(MyExit);
  NoBtn.SetBounds(MyExit.Width - 115, MyExit.Height - 50 - ScaleY(25), 100, 30);
  NoBtn.Caption:= 'Нет';
  NoBtn.ModalResult:= mrNo;
  NoBtn.Parent:= MyExit;
  
  YesBtn:= TButton.Create(MyExit);
  YesBtn.SetBounds(MyExit.Width - 223, MyExit.Height - 50 - ScaleY(25), 100, 30);
  YesBtn.Caption:= 'Да';
  YesBtn.ModalResult:= mrYes;
  YesBtn.Parent:= MyExit;
end; 
  
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); 
begin 
  Confirm := False; 
  MyExitMessage(); 
 
  if MyExit.ShowModal() = mrNo then
    Cancel := False;
  MyExit.Free;
end; [/noparse]
 

Carlos

Участник
Модератор
Shegorat, именно на самую первую if not ISArcExtract(....) then Break; и ссылается. а закомментировал я только

LabelCurrFileName.Caption:=ExpandConstant('{cm:Extracted} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(205));
 

Sanch8

Новичок
Подскажите почему не отрисовываются чекбоксы на TasksList

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DisableWelcomePage=yes
DisableFinishedPage=yes
DisableReadyPage=yes

[Files]
DestName: "WizardForm.BitmapImage1.bmp"; Source: "2.bmp"; Flags: dontcopy solidbreak

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

[Tasks]
Name: DirectX; Description: Microsoft DirectX;
Name: VCRedist; Description: Microsoft VCRedist;
Name: DesktopIcon; Description: Ярлык На Рабочем Столе;;
Name: StartMenuIcon; Description: Ярлык В Меню Пуск;

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Прога1; Types: full;
Name: text; Description: Прога2; Types: full;
Name: text; Description: Прога3; Types: full;
Name: text; Description: Прога4; Types: full;

Код:
[/b][color=#0000FF]var
  [/color]BitmapImage1: TBitmapImage;

[color=#0000FF]procedure [/color][b]InitializeWizard[/b]();
[color=#0000FF]begin
[/color]BitmapImage1 := TBitmapImage.Create(WizardForm);
    [color=#0000FF]with [/color]BitmapImage1 [color=#0000FF]do
    begin
    [/color]Name := 'BitmapImage1';
    Parent := WizardForm.InnerPage;
    Stretch:= true;
    Left := ScaleX(0);
    Top := ScaleY(0);
    Width := ScaleX(497);
    Height := ScaleY(61);
    ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));

    WizardForm.Caption := 'Моя установка';
       
    WizardForm.DirEdit.Top := ScaleY(1);
    WizardForm.DirBrowseButton.Top := ScaleY(0);
    WizardForm.DirEdit.Font.Color := clRed;
    WizardForm.DirEdit.ParentColor := True;

    WizardForm.ComponentsList.Parent := WizardForm.SelectDirPage;
    WizardForm.ComponentsList.SetBounds(0,37,416,70);

    WizardForm.TasksList.BorderStyle := bsSingle;
    WizardForm.TasksList.SetBounds(0,120,416,70);
    WizardForm.TasksList.ParentColor := True;
    WizardForm.TasksList.Font.Color := clRed;
    WizardForm.TasksList.Parent := WizardForm.SelectDirPage;

    WizardForm.Bevel.Hide;
    WizardForm.SelectDirLabel.Hide
    WizardForm.SelectDirBrowseLabel.Hide
    WizardForm.SelectDirBitmapImage.Hide
    WizardForm.PageDescriptionLabel.Hide
    WizardForm.PageNameLabel.Hide
    WizardForm.MainPanel.Hide
 [color=#0000FF]end[/color];
 [color=#0000FF]end[/color];

[color=#0000FF]procedure [/color][b]CurPageChanged[/b](CurPageID: Integer);
[color=#0000FF]begin
if [/color]CurPageID=wpSelectDir [color=#0000FF]then
    [/color]WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) 
[color=#0000FF]end[/color];

[color=#0000FF]function [/color][b]ShouldSkipPage[/b](PageID: Integer): Boolean;
[color=#0000FF]begin
  if [/color](PageID = 7) [color=#0000FF]or [/color](PageID = 9) [color=#0000FF]or [/color](PageID = 10) [color=#0000FF]then
  [/color]Result:= True;
[color=#0000FF]end[/color];

[color=#0000FF]procedure [/color][b]CancelButtonClick[/b](CurPageID: Integer; [color=#0000FF]var [/color]Cancel, Confirm: Boolean);  
[color=#0000FF]begin  
  [/color]Confirm:= False;  
[color=#0000FF]end[/color];
[/color][/font][/SPOILER]

[SPOILER="Снимок"][URL=http://savepic.org/4330211.htm][IMG]http://savepic.org/4330211m.jpg[/IMG][/URL][/SPOILER]
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху