Ru-Board.club
← Вернуться в раздел «Программы»

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

Автор: Dermuin
Дата сообщения: 19.12.2008 08:26
ExpeditorR
Добавь в библиотеку поддержку распаковки архивов Arc и PreComp

Автор: SotM
Дата сообщения: 19.12.2008 08:36
Serega0675

Код:
if CurStep = ssDone then
begin
if IsTaskSelected('alluser') then
MsgBox( 'All user selected', mbinformation, MB_OK )
else
MsgBox( 'Current user selected', mbinformation, MB_OK );
end;
Автор: sanmon
Дата сообщения: 19.12.2008 10:17
Подскажите, пожалуйста, как пользоваться командой CompressionThreads (inno v5.2.3)? Выставлял значения 2 и 4 - скорость сжатия не изменилась.
И неужели никто не знает ответ на мой предыдущий пост по поводу использования препроцессинга (precomp?) и пережатия для создания репаков?
Автор: DemonAk
Дата сообщения: 19.12.2008 10:55
Да прикрутить бы архивы arc к inno было бы здорово, а то 7zip хуже жмет,
7zip упаковал 5,91 гига до 4,3 а freearc до 2,67 гб, разница ощутимая и это без использования дополнительных препроцессов типа precomp. Так что freearc рулит!
Автор: SotM
Дата сообщения: 19.12.2008 10:55
sanmon

Цитата:
Выставлял значения 2 и 4 - скорость сжатия не изменилась.

дык, а это для кого написано в хелпе:
Цитата:
Values greater than 2 are also accepted, but have the same effect as 2. This is because the LZMA compressor currently cannot take advantage of more than two processor cores.


Автор: sanmon
Дата сообщения: 19.12.2008 11:41

Цитата:
Да прикрутить бы архивы arc к inno было бы здорово

Полностью поддерживаю!
Гуру откройте же тайные знания управлением препроцессингом и внедрением FreeArc в Inno! )))
Правда, извините за флуд - очень надо! (Форум перерыл, погуглил - ничего не нашел)

SotM, я не до конца отписался - что с CompressionThreads, что без, скорость компрессии абсолютно одинаковая, это и имел ввиду, а на 4 ядра даже и не рассчитываю теперь.
Автор: Artem_Butenko
Дата сообщения: 19.12.2008 12:08
Ребята -- пожалуйста, извините меня, что повторяю вопрос уже трижды, но все же интересно, какой архиватор (SFX-модуль) или инсталлятор, кроме Inno Setup и 7-Zip, способен запустить исполнительный файл, если его расширение изменено на *.ex_. При этом использование батников и обратное переименование в *.exe для моей задачи недопустимо. Помогите разобраться с вопросом, буду очень признателен!
Автор: Nike000
Дата сообщения: 19.12.2008 13:40
Artem_Butenko
*.ex_ - это арxив, аналогичный gzip (в архиве - только один файл), сделанный обычным виндовым compress. Переименование не спасет, прямой запуск невозможен.

Автор: cdman67
Дата сообщения: 19.12.2008 13:56
DemonAk

Цитата:
Да прикрутить бы архивы arc к inno было бы здорово, а то 7zip хуже жмет,

Чушь, у фриарка такой же lzma, как и у севензипа, разве что более ассиметричен, он "лучше жмет" за счет препроцессоров delta и rep, которые у него build-in - когда ты используешь ключи -m5 и выше - они врубаются автоматом.


Цитата:
7zip упаковал 5,91 гига до 4,3 а freearc до 2,67 гб, разница ощутимая и это без использования дополнительных препроцессов типа precomp. Так что freearc рулит!

Рулит только лишь за счёт использования встроенных фильтров и препроцессоров - прикрути их к севензипу - получишь тот же результат.



Добавлено:
sanmon, рипы Скульптуры и TeamJPN в свободном доступе на TPB. Ихние setup.bat - это учебники с примерами и необходимыми инструментами.
Автор: Artem_Butenko
Дата сообщения: 19.12.2008 14:34
Тысяча извинений перед Nike000 и всеми, кто отвечал на мой вопрос, который превратился в сборку кубика-рубика. На самом деле все просто: переименованный в *.ex_ - это обычный исполнительный файл некоторого инсталлятора или SFX-архива. В таком виде, его нельзя запустить в Windows, но легко через секцию [Run] в Inno Setup (при этом не переименовывая обратно в *.exe), который здесь выступает в качестве лоадера (имеется ввиду Inno Setup). Меня интересует, есть ли в этом вопросе альтернатива Inno Setup и 7-Zip. В этот раз думаю вопрос сформулировал правильно, и еще раз извиняюсь!
Автор: sanmon
Дата сообщения: 19.12.2008 14:50
cdman67, спасибо за ответ! Скачаю, посмотрю. А пока качается, где еще раздобыть информации по теме?
Автор: cdman67
Дата сообщения: 19.12.2008 16:08
Artem_Butenko, почему нельзя запустить в Windows ??? Можно, я же писал как:

Пуск -> Выполнить > start SFX.ex_ - запускается без проблем.


Добавлено:
sanmon, больше нигде. Мне хватило 3-4 рипов, чтобы досконально разобраться во всём.
Автор: chelobey
Дата сообщения: 19.12.2008 16:37
Добрый день.
Немного изменил скрипт, взятый из примеров, но не знаю, как сделать дальше.

Задумка вот какая:
на странице выбора компонентов есть стандартный вариант установки, после выбора которого начинается процесс инсталяции,
остальные три варианта вызывают страницу (каждый свою) с дополнительными настройками в виде еще одного списка компонентов...

[more=Код..]

Setup
AppName=My Program
AppVerName=My Program v.1.2
AlwaysShowComponentsList=true
DefaultDirName={pf}\My Program

Components
Name: prog; Description: program; Types: var1; Flags: exclusive
Name: cfg1; Description: program+config 1; Types: var2; Flags: exclusive
Name: cfg2; Description: program+config 2; Types: var2; Flags: exclusive
Name: cfg3; Description: program+config 3; Types: var2; Flags: exclusive

Types
Name: var1; Description: program
Name: var2; Description: program+config; Flags: iscustom

Code
var
Page1, Page2, Page3: TWizardPage;

Procedure InitializeWizard();
begin
Page1:= CreateCustomPage(wpSelectComponents, 'Config 1 page', 'cfg1');
Page2:= CreateCustomPage(Page1.ID, 'Config 2 page', 'cfg2');
Page3:= CreateCustomPage(Page1.ID, 'Config 3 page', 'cfg3');
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
Case PageID of
Page1.ID,Page1.ID: Result:= not IsComponentSelected('cfg1');
Page1.ID,Page2.ID: Result:= not IsComponentSelected('cfg2');
Page1.ID,Page3.ID: Result:= not IsComponentSelected('cfg3');
end;
end;


[/more]

действия при выборе - копирование различных файлов

Затруднение: не знаю, как создать страницы нужного вида и организовать их правильую работу.

Для полного счастья: дополнительные страницы в виде развернутого списка компонентов (древообразные)...

Обсолютное блаженство: можно ли реализовать в inno setup список компонентов такого вида...

Спасибо.
Автор: sanmon
Дата сообщения: 19.12.2008 18:29
chelobey, так должно?


[more=Смотри здесь]
Components
Name: "var"; Description: "Выбрать вариант";
Name: "var\var1"; Description: "Вариант 1"; Types: "full"
Name: "var\var2"; Description: "Вариант 2"; Types: "compact"
Name: "var\var2\type1"; Description: "Тип 1";
Name: "var\var2\type2"; Description: "Тип 2"; Types: "compact"
Name: "var\var2\type2\set1"; Description: "Сетап 1"; Flags: "Exclusive"
Name: "var\var2\type2\set2"; Description: "Сетап 2"; Flags: "Exclusive"
Name: "dop"; Description: "Дополнительно";
Name: "dop\var1"; Description: "Вариант 1";
Name: "dop\var1\ver1"; Description: "Версия 1";
Name: "dop\var2"; Description: "Версия 2";[/more]
Автор: Artem_Butenko
Дата сообщения: 19.12.2008 19:44
cdman67 -- я понимаю, что запуск исполнительного файла с измененным (мною!) в *.ex_ расширением можно выполнить через батник, но вопрос в другом, какой инсталлятор или SFX-архиватор, кроме Inno Setup и SFX 7-Zip, способен запустить исполнительный файл с переименованным расширением, при этом не прибегая к использованию батника и обратному переименованию в *.exe. Надеюсь, уже в этот раз вопрос поставлен корректно!
Автор: STALKER_HIGHLANDER
Дата сообщения: 19.12.2008 19:55
serg_aka_lain

(если на мой вопрос ответит кто-то другой, против не буду )

Посмотрел пример [more=How to replace a line in a text file]

///////////////////////////////////////////////////////////////////////////////
// Find given text in given file, and replace
// complete textline with given text.
// Created: March 27, 2002 by S.T.I.Bracke
// Revised: May 22, 2002 by S.T.I.Bracke
function ReplaceLine(strFilename, strFind, strNewLine: String): Boolean;
var
strTemp : String;
iLineCounter : Integer;
a_strTextfile : TArrayOfString;

begin
{ Load textfile into string array }
LoadStringsFromFile(strFilename, a_strTextfile);

{ Search trough all textlines for given text }
// old line
// for iLineCounter := 1 to High(a_strTextfile) do
// new line corrected by Nikolaus Moll
for iLineCounter := 0 to GetArrayLength(a_strTextfile)-1 do
begin
{ Overwrite textline when text searched for is part of it }
if (Pos(strFind, a_strTextfile[iLineCounter]) > 0) then
a_strTextfile[iLineCounter] := strNewLine;
end;

{ Save string array to textfile (overwrite, no append!) }
SaveStringsToFile(strFilename, a_strTextfile, False);

Result := True;

end; [/more]

но не понял где прописывать путь к файлу и саму заменяемую строку...

Мой конкретный случай:
файл user.ltx
находится в {commondocs}\STALKER-SHOC\user.ltx
нужно найти строчку r2_gloss_factor
и заменить на r2_gloss_factor 2.5
(запихать в инсталлятор файл с уже исправленным значением не получится, т.к. все остальные значения у юзеров разные)

Был бы очень признателен за подробный пример, что и где прописывать в скрипте.



Автор: Dermuin
Дата сообщения: 20.12.2008 05:42
Подскажите как заблокировать чекбокс на станице выбора дополнительных задач.
И как если после установки приложения при запуске установщика выводилось сообщениие:

Запустить Программу XXXX
Да Нет
при нажатии Да запускалась программа, а при Нет выход из программы установки.

Скрин:
Автор: sanmon
Дата сообщения: 20.12.2008 06:08
Dermuin
Components
Name: "patch"; Description: "Патч"; Flags: fixed
Это есть в стандартном хелпе, там еще много интересного ))
Автор: chelobey
Дата сообщения: 20.12.2008 07:45
По поводу списка компонентов
Имел ввиду, что стандартными средствами через [Components] фишку с раскрывающимся списком не сделать.
Если внимательно посмотреть на рисунок, то список Type1 развернут (нажимаешь на -, список сворачивается), Type2 свернут (по умолчанию, нажимаешь на +, список разворачивается), Type3 развернут.
Повторю вопрос: можно ли это (раскрывающиеся списки компонентов) реализовать в inno setup?

P.S. Вопрос вида списка второстепенный. Главная задача - организация страниц списков для каждого из основных компонентов.
[more=Код..]

Setup
AppName=My Program
AppVerName=My Program v.1.2
AlwaysShowComponentsList=true
DefaultDirName={pf}\My Program

Components
Name: prog; Description: program; Types: var1; Flags: exclusive
Name: cfg1; Description: program+config 1; Types: var2; Flags: exclusive
Name: cfg2; Description: program+config 2; Types: var2; Flags: exclusive
Name: cfg3; Description: program+config 3; Types: var2; Flags: exclusive

Types
Name: var1; Description: program
Name: var2; Description: program+config; Flags: iscustom

Code
var
Page1, Page2, Page3: TWizardPage;

Procedure InitializeWizard();
begin
Page1:= CreateCustomPage(wpSelectComponents, 'Config 1 page', 'cfg1');
Page2:= CreateCustomPage(Page1.ID, 'Config 2 page', 'cfg2');
Page3:= CreateCustomPage(Page1.ID, 'Config 3 page', 'cfg3');
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
Case PageID of
Page1.ID,Page1.ID: Result:= not IsComponentSelected('cfg1');
Page1.ID,Page2.ID: Result:= not IsComponentSelected('cfg2');
Page1.ID,Page3.ID: Result:= not IsComponentSelected('cfg3');
end;
end;


[/more]
Автор: Serega0675
Дата сообщения: 20.12.2008 10:26
SotM
Это действительно то, что мне нужно...
Огромное СПАСИБО!!!
Автор: LordVeider
Дата сообщения: 20.12.2008 10:31
chelobey,
Цитата:
фишку с раскрывающимся списком
Страницу назад я интересовался тем же вопросом. Там же и ответ.
Решение такое:
1. Ставим ISPack с препроцессором - http://files.jrsoftware.org/ispack/ispack-5.2.3.exe
2. Поверх него ставим мод от ResTools - http://restools.hanzify.org/inno/Inno_ISCmplr_Setup081207.zip
3. В секции setup дописываем ComponentsListTVStyle=true
4. Для тех веток которые должны быть по умолчанию свёрнуты ставим флаг collapsed
Автор: sanmon
Дата сообщения: 20.12.2008 11:05
И все же, может кто-нибудь объяснить, что такое препроцессинг и как им пользоваться? Найти сам ничего не смог (((
Автор: chelobey
Дата сообщения: 20.12.2008 11:21
LordVeider спасибо.
еще бы описание, хотя бы на английском
Автор: EagleSH
Дата сообщения: 20.12.2008 15:36
госопода, есть движущийся фон в окне inno, но кнопки, выбор пути промигивают. как заставить их жёстко стоять и не мигать? и как сверху наложить транспорент? возможно ли вообще?

вот для наглядности:
http://rapidshare.com/files/175163234/setup.zip.html
Автор: cdman67
Дата сообщения: 20.12.2008 19:19
sanmon, http://schnaader.info/coding/precomp/precomp.html

Автор: sanmon
Дата сообщения: 20.12.2008 20:37
cdman67, спасибо конечно, но я там уже был, поигрался с precomp и precomf и lprepaq, совсем не понял прицип использования и поэтому который день торчу здесь, надеясь на вас, тех кто разобрался, неужели так сложно рассказать КАК ЭТО ИСПОЛЬЗОВАТЬ? Интересно конечно заново изобретать велосипед, но зачем? Я надеялся именно на твои объяснения, потому что меня очень заинтересовал твой (?) репак GTA 4 с Эпидема, думал получу здесь внятный ответ, похоже зря надеялся. (((
Автор: chelobey
Дата сообщения: 21.12.2008 00:05
Про мод от ResTools... штука хорошая, но без описания сложновато.

Проблему с построением дополнительной страницы компонентов решил...
а как привязать результаты выбора к файлам...?

Так же в моем [more=скрипте]

Setup
AppName=Program
AppVerName=Program
AlwaysShowComponentsList=true
DefaultDirName={pf}\My Program
ComponentsListTVStyle=true

Components
Name: prog; Description: program; Types: var1; Flags: exclusive
Name: cfg1; Description: program+config 1; Types: var2; Flags: exclusive

Types
Name: var1; Description: program
Name: var2; Description: program+config; Flags: iscustom

Code
var
Page1, Page2, Page3: TWizardPage;
CheckListBox, CheckListBox2, CheckListBox3, CheckListBox4: TNewCheckListBox;
Info: TNewStaticText;

procedure ItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
AbsIndex, AreaStr: String;
begin
if Index = -1 then
begin
Info.Caption := 'Info';
Info.Enabled := False;
end else begin
case Area of
iaButton: AreaStr := 'Button';
iaCheckmark: AreaStr := 'Checkmark';
iaItem: AreaStr := 'Item';
iaSubItem: AreaStr := 'SubItem';
else AreaStr := 'Other';
end;
Info.Caption := 'AbsIndex: ' + IntToStr(Index) + #13 + 'Area: ' + AreaStr + #13
+ 'Captin: ' + CheckListBox.ItemCaption[Index] + #13 + 'SubCaption: '
+ CheckListBox.ItemSubItem[Index];
Info.Enabled := True;
end;
end;

procedure ButtonOnClick(Sender: TObject);
begin
MsgBox('CheckListBox.ItemCount: ' + IntToStr(CheckListBox.ItemCount), mbInformation, MB_OK);
end;

procedure Button2OnClick(Sender: TObject);
begin
MsgBox('CheckListBox.AbsItemIndex: ' + IntToStr(CheckListBox.AbsItemIndex), mbInformation, MB_OK);
end;

procedure Button3OnClick(Sender: TObject);
begin
if CheckListBox.AbsItemIndex > -1 then
CheckListBox.ItemExpanded[CheckListBox.AbsItemIndex] := not CheckListBox.ItemExpanded[CheckListBox.AbsItemIndex];
end;

procedure CheckListBox2_OnClickCheck(Sender: TObject);
begin
case CheckListBox2.AbsItemIndex of
1: CheckListBox.TreeViewStyle := CheckListBox2.Checked[1];
2: CheckListBox.Showroot := CheckListBox2.Checked[2];
3: CheckListBox.ItemHeightFixed := CheckListBox2.Checked[3];
4: CheckListBox.HideSelection := CheckListBox2.Checked[4];
end;
end;

procedure CheckListBox4_OnClickCheck(Sender: TObject);
begin
case CheckListBox4.AbsItemIndex of
1: CheckListBox.TreeViewStyle := CheckListBox4.Checked[1];
2: CheckListBox.Showroot := CheckListBox4.Checked[2];
3: CheckListBox.ItemHeightFixed := CheckListBox4.Checked[3];
4: CheckListBox.HideSelection := CheckListBox4.Checked[4];
end;
end;

procedure CreateTheWizardPages;
var
Page: TWizardPage;
Button: TButton;
InfoPanel: TPanel;
InfoCaption: TNewStaticText;

begin
Page1:= CreateCustomPage(wpSelectComponents, 'TNewCheckListBox', 'page2')
CheckListBox := TNewCheckListBox.Create(Page1);
CheckListBox.Width := Page1.SurfaceWidth - ScaleX(115);
CheckListBox.Height := Page1.SurfaceHeight - ScaleY(30);
CheckListBox.Flat := True;
CheckListBox.Parent := Page1.Surface;
CheckListBox.AddCheckBox('CheckBox1', 'box1', 0, True, True, True, True, nil, True);
CheckListBox.AddRadioButton('radiobutton1_1', 'type1', 1, True, True, nil, False);
CheckListBox.AddRadioButton('radiobutton1_2', 'type2', 1, True, True, nil, False);
CheckListBox.AddCheckBox('CheckBox2', 'box2', 0, True, True, True, True, nil, True);
CheckListBox.AddRadioButton('radiobutton2_1', 'type1', 1, True, True, nil, False);
CheckListBox.AddRadioButton('radiobutton2_2', 'type2', 1, True, True, nil, False);
CheckListBox.AddGroup('group1', 'group', 0, nil, True);
CheckListBox.AddRadioButton('radiobutton_g_1', 'type1', 1, True, True, nil, False);
CheckListBox.AddRadioButton('radiobutton_g_2', 'type2', 1, False, True, nil, False);
CheckListBox.OnItemMouseMove := @ItemMouseMove;

CheckListBox2 := TNewCheckListBox.Create(Page1);
CheckListBox2.Left := Page1.SurfaceWidth - ScaleX(110);
CheckListBox2.Width := ScaleX(110);
CheckListBox2.Height := ScaleY(80);
CheckListBox2.Parent := Page1.Surface;
CheckListBox2.BorderStyle := bsNone;
CheckListBox2.ParentColor := True;
CheckListBox2.ShowLines := False;
CheckListBox2.WantTabs := True;
CheckListBox2.AddGroup('Property', '', 1, nil, False);
CheckListBox2.AddCheckBox('TreeViewStyle', '', 0, False, True, False, True, nil, True);
CheckListBox2.AddCheckBox('Showroot', '', 0, True, True, False, True, nil, True);
CheckListBox2.AddCheckBox('ItemHeightFixed', '', 0, False, True, False, True, nil, True);
CheckListBox2.AddCheckBox('HideSelection', '', 0, True, True, False, True, nil, True);
CheckListBox2.OnClickCheck := @CheckListBox2_OnClickCheck;
CheckListBox2.ItemHeightFixed := True;

InfoPanel := TPanel.Create(Page);
InfoPanel.Parent := Page1.Surface;
InfoPanel.Caption := '';
InfoPanel.Top := ScaleY(90);
InfoPanel.Left := Page1.SurfaceWidth - ScaleX(110);
InfoPanel.Width := ScaleX(110);
InfoPanel.Height := ScaleY(145);
InfoPanel.BevelInner := bvRaised;
InfoPanel.BevelOuter := bvLowered;
InfoCaption := TNewStaticText.Create(Page);
InfoCaption.Parent := Page1.Surface;
InfoCaption.Caption := 'ÃèÊö';
InfoCaption.Left := Page1.SurfaceWidth - ScaleX(105);
InfoCaption.Top := InfoPanel.Top - ScaleY(5);
InfoCaption.Font.Color := clActiveCaption;

end;

Procedure InitializeWizard();
var
b: TBitmapImage;
p: TPen;

begin
CreateTheWizardPages;

end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
Case PageID of
Page1.ID,Page1.ID: Result:= not IsComponentSelected('cfg1');
end;
end;

[/more] при наведении курсора на компонент (после чего должно появиться описание) появляется ошибка. не знаю, как исправить.
И еще, таких дополнительных страниц можно создать великое множество в procedure CreateTheWizardPages, но подскажите, как сделать в коде при их (страниц) наличии больше одной, чтобы корректно работало отображение описания элементов...
Автор: nik1967
Дата сообщения: 21.12.2008 08:00
Victor_Dobrov, спасибо большое за Ваш труд! Понравилась Corona Skin и InnoSetup Upgrade. Небольшое замечание: на странице "Выбор папки установки" надпись-Щёлкните значок, чтобы сменить имя программной группы., а на странице "Выберите папку в меню "Пуск""-Программа установит "*" в следующую папку. И если щелкнуть по значку папки, то в первом случае открывается обзор программных папок, во втором случае обзор пути установки.

Код: wpSelectDir:
    begin
    SelectDirBitmapImage.Top:= - IconSize; SelectDirBitmapPanel.Show
    SelectDirBitmapPanel.Hint:= cm('SelectStartMenuHint')
//    if StartMenuTreeView.Enabled then
    WizardForm.SelectDirLabel.Caption:= SelectDirBitmapPanel.Hint; WizardForm.SelectDirLabel.Show;
    WizardForm.SelectDirBrowseLabel.Caption:= SetupMessage(msgSelectDirLabel3); WizardForm.SelectDirBrowseLabel.Enabled:= true; WizardForm.SelectDirBrowseLabel.Show;
    WizardForm.DiskSpaceLabel.Show; WizardForm.DirEdit.Show; DirBrowseButton.Show
    DisksNote.Show    //    ListBox.Items.Clear    { поиск дисков при каждом показе страницы}
    ListBoxRefresh; ListBox.Show; WizardForm.ActiveControl:= ListBox
    ClickNextLabel.Caption:= SetupMessage(msgSelectDirBrowseLabel)
    end
wpSelectProgramGroup:
    begin
    SelectDirBitmapImage.Top:= 0; SelectDirBitmapPanel.Show;
    SelectDirBitmapPanel.Hint:= cm('SelectDirHint')
    WizardForm.SelectDirLabel.Caption:= SelectDirBitmapPanel.Hint; WizardForm.SelectDirLabel.Show;
    WizardForm.SelectDirBrowseLabel.Caption:= SetupMessage(msgSelectStartMenuFolderLabel3); WizardForm.SelectDirBrowseLabel.Enabled:= StartMenuTreeView.Enabled; WizardForm.SelectDirBrowseLabel.Show;
    WizardForm.NoIconsCheck.Show; WizardForm.GroupEdit.Show; StartMenuTreeView.Show
    WizardForm.ActiveControl:= WizardForm.NoIconsCheck
    ClickNextLabel.Caption:= SetupMessage(msgSelectStartMenuFolderBrowseLabel)
    end
Автор: LordVeider
Дата сообщения: 21.12.2008 08:27

Цитата:
мод от ResTools... штука хорошая, но без описания сложновато
Кстати да.
Описание весьма не помешало бы.
Автор: Victor_Dobrov
Дата сообщения: 21.12.2008 09:56
nik1967

Corona Skin: На странице выбора папки установки значок Щёлкните значок, чтобы сменить имя программной группы подписан верно. Так и задумано, польза от этого двойная: можно сменить имя программной группы на странице выбора папки установки, либо на странице создания ярлыков выбрать другую папку установки.

Цитата:
как в InnoSetup Upgrade убрать показ и проверку системных требований?

Нужно добавить в начало функции ShouldSkipPage (файл InnoSetupUpgrade.iss) одну строку:

Function ShouldSkipPage(PageID: Integer): Boolean; Begin
if PageID = InfoPage.ID then Result:= true; // пропуск InfoPage

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Презентация


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.