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

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

Автор: Krec13
Дата сообщения: 11.03.2009 19:03
SotM, почитал, посмотрел примеры, но осталось 2 вопроса.
Как всё-таки заставить инно распаковывать самораспаквывающиеся архивы, сделанные во FreeArc'e через unarc (архивы лежат рядом с инсталлом)? И как сделать, чтобы инно писал, сколько места нужно для установки правильно (он отображает только то, что в него вшито, а как добавить ещё и размер этих архивов)?
Автор: Prince_Tails
Дата сообщения: 11.03.2009 19:19
WinstAn70
Спасибо большое
Автор: skeptik_vdm
Дата сообщения: 11.03.2009 19:22
Krec13

По поводу 1-го вопроса там нужно использвать Arc.exe чтобы извлекать объекты из архива!!!!
Автор: Krec13
Дата сообщения: 11.03.2009 19:47
skeptik_vdm, а как это записать? Добавить в файлы arc.exe, поставить флаг, чтобы он удалился после установки (это сделать смогу), а именно, чтобы направить sfx-архивы через этот файл?
Автор: WinstAn70
Дата сообщения: 11.03.2009 20:17
Krec13
а не проще через командную строку!
Автор: skeptik_vdm
Дата сообщения: 11.03.2009 20:24
WinstAn70
Послушай совета у WinstAn70 через cmd а Arc.exe это исходник самого FreeArc-а а не архив при помощи этого файлика z1oyded на ФТО(free-torrents.org по ходу дела его проикрыли) делал свои репаки!!!
Автор: WinstAn70
Дата сообщения: 11.03.2009 20:38
skeptik_vdm
он уже в действие второй или третий день! я тоже через него жму и делаю RePack'i
Мне интересен скрипт запуска любого приложения (.exe), до запуска основного установщика.
(то есть - сначала запустить указанное приложение, после - запустит сам установщик)
Автор: Krec13
Дата сообщения: 11.03.2009 20:45
ГТИ работает. Я тоже делаю репаки. Поэтому мне всё это и интересно. Распаковать смогу, а что насчет второго вопроса?
Цитата:
как сделать, чтобы инно писал, сколько места нужно для установки правильно (он отображает только то, что в него вшито, а как добавить ещё и размер этих архивов)?

Автор: WinstAn70
Дата сообщения: 11.03.2009 20:54
Krec13
Ты не один этим интересуешься я тоже сегодня пол дня читал искал так и не нашел как это можно сделать!Только маленько не так надо чтобы мастер указывал вес игры который она занимает уже распакованная! Для игры требуется там 8 гигов!
Автор: Don_Juan
Дата сообщения: 11.03.2009 21:09
WinstAn70

Если я так понят, то так:


Код: [Setup]
AppName = Loader
AppVerName = Loader
DefaultDirName={pf}\Loader
OutputBaseFilename = Loader

[Code]

function InitializeSetup(): Boolean;
var
ResultCode: Integer;
begin
Result:= True;
Exec( 'MyProg.exe', '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode );
end;

procedure InitializeWizard();
begin
WizardForm.DiskSpaceLabel.Caption:= 'Для игры требуется там 8 гигов!';
end;
Автор: notAlx
Дата сообщения: 11.03.2009 21:10
Krec13

Цитата:
а что насчет второго вопроса?

Например, можно в секцию [Setup] добавить ExtraDiskSpaceRequired=Х, где Х размер в байтах (1048576 bytes = 1 megabyte) этих архивов.

Ещё, как вариант, вообще заменить это сообщение своим:

Код: [Messages]
DiskSpaceMBLabel=Требуется как минимум (вписать нужный размер) Мб свободного дискового пространства.
Автор: VulkanS
Дата сообщения: 11.03.2009 21:16
Уважаемый All!
Подскажите плиз как изменить цвет шрифта для надписи выводимой на MainForm. Как изменить размер шрифта, нашел. Как изменить сам шрифт, то же. А вот цвет ??????
Автор: DeKaNszn
Дата сообщения: 11.03.2009 21:34

Цитата:
Как изменить сам шрифт, то же


вместо Font.Name пишешь Font.Color
Автор: VulkanS
Дата сообщения: 11.03.2009 22:22
DeKaNszn
Увы уважаемый, не все то золото что блестит ;(. Проверь сам работоспособность кода. У меня не получилось.

Управление же размером шрифта и самими шрифтом производится через секцию [LangOptions], параметры TitleFontName, TitleFontSize. Так что да же Font.Name не канает.
Автор: WinstAn70
Дата сообщения: 11.03.2009 22:27
Don_Juan
Спс. Но думаю этого хватит вполне
procedure InitializeWizard();
begin
WizardForm.DiskSpaceLabel.Caption:= 'Для игры требуется там 8 гигов!';
end
;
***********
notAlx
Тоже спс
************
И еще может кто ткнет носом где можно посмотреть пример с ini файлами!

Автор: DeKaNszn
Дата сообщения: 11.03.2009 22:39
VulkanS для какой надписи надо сменить?
Автор: msatmb
Дата сообщения: 12.03.2009 00:52
я конечно понимаю что может немножко не в ту тему, но вот объясните мне пожалуйста каким образом нада скрещивать freearc с precomp иль как он там называется. Ну на подобее того как это делают cdman & z1oyded
Автор: VulkanS
Дата сообщения: 12.03.2009 08:15
DeKaNszn
Как объяснить? Есть Главное окно (ну по крайней мере обратится к нему в коде можно через MainForm). Включается оно параметром WindowVisible=yes в секции [Setup] или в коде MainForm.Visible := True;. Вот в этом окне есть надпись которая содержит значение из AppName. Цвет этой надписи и надо изменить.
Автор: skeptik_vdm
Дата сообщения: 12.03.2009 10:12
VulkanS

Держи


Цитата:
procedure InitializeWizard();
begin
WizardForm.WelcomeLabel1.Font.Color:=clRed;
end;
Автор: chelobey
Дата сообщения: 12.03.2009 10:27
"...последняя попытка стать счастливым..."

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

[more=вот код...]
Код: #define MyAppName "Program"
#define MyAppVerName "1.0"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppVerName}
DefaultDirName={pf}\Program 1.0

[Components]
Name: prog1; Description: program1; Types: var1; Flags: exclusive
Name: prog2; Description: program2; Types: var2; Flags: exclusive

[Types]
Name: var1; Description: prog1
Name: var2; Description: prog2; Flags: iscustom

[Files]

Source: Button1.bmp; Flags: dontcopy
Source: prog1.rtf; Flags: dontcopy
Source: prog2.rtf; Flags: dontcopy

[no][Code][/no]
var
Memo: TRichEditViewer;
CheckListBox: TNewCheckListBox;
CancelButton: TButton;

Check: Boolean;
i, CurPage: Integer;
InfoButton, UpdateButton: TButton;
InfoPage: TWizardPage;
InfoImage: TBitmapImage;



Procedure CheckFoldersOnClick(Sender: TObject);
Begin
if (InfoButton.Tag= 1) then begin

InfoButton.Caption:= 'Вернуться';
InfoButton.Cursor:= crDefault;
UpdateButton.Cursor:= crDefault;
CancelButton.Tag:= 1
end else
CancelButton.Tag:= 0
end;

Procedure UpdateButtonOnClick(Sender: TObject);

Begin
Check:=True;
end;

Procedure CloseInfo; Begin If InfoButton.Tag= 1 then InfoButton.OnClick(InfoButton) End;

Function BackButtonClick(CurPageID: Integer): Boolean;
Begin Result:= True CloseInfo End;

Function NextButtonClick(CurPageID: Integer): Boolean;
Begin If InfoButton.Tag= 1 then else Result:= True
if (i =wpWelcome) and (InfoButton.Tag= 1) then Result:= True
CloseInfo
end;

Procedure InfoButtonOnClick(Sender: TObject);
Begin
if InfoButton.Tag= 0 then begin
InfoPage:= CreateCustomPage(CurPage, 'Описание', '')

Memo := TRichEditViewer.Create(InfoPage);
Memo.Top := ScaleY(0);
Memo.Width := InfoPage.SurfaceWidth - ScaleX(0);;
Memo.Height := InfoPage.SurfaceHeight - ScaleY(0);
Memo.ScrollBars := ssVertical;
Memo.Parent := InfoPage.Surface;
Memo.Lines.LoadFromFile(ExpandConstant('{tmp}\prog1.rtf'));

UpdateButton:= TButton.Create(WizardForm);

with UpdateButton do begin
OnClick:= @UpdateButtonOnClick;
end;

UpdateButton.OnClick(UpdateButton);
WizardForm.NextButton.OnClick(WizardForm.NextButton);
InfoButton.Visible:= True

InfoButton.Caption:='Закрыть инфу';
InfoButton.Cursor:= crHand;
InfoButton.Tag:= 1;

end

else begin
InfoButton.Caption:= 'Описание';
InfoButton.Cursor:= crHelp;
InfoButton.Tag:= 0;

WizardForm.BackButton.OnClick(WizardForm.BackButton);
WizardForm.PageDescriptionLabel.Font.Color:= WizardForm.PageNameLabel.Font.Color
UpdateButton.Free
InfoPage.Free
end
End;

Procedure CurPageChanged(CurPageID: Integer);
Begin
CurPage:=CurPageID
if CurPageID=wpReady then begin WizardForm.ReadyMemo.ScrollBars:=ssVertical
end;
if CurPageID<>wpSelectComponents then begin InfoButton.Visible:= False
end;
if CurPageID=wpSelectComponents then begin InfoButton.Visible:= True
end;
end;


Procedure InitializeWizard;
Begin

ExtractTemporaryFile('prog1.rtf');

CancelButton:= WizardForm.CancelButton;
InfoButton:= TButton.Create(WizardForm);

with InfoButton do begin
Left:= WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
Top:= CancelButton.Top;
Width:= 132;
Height:= 27;
Caption:= 'Описание';
ShowHint:=True;
OnClick:= @InfoButtonOnClick;
Parent:= WizardForm;

InfoImage:=TBitmapImage.Create(WizardForm)
with InfoImage do begin
AutoSize:=True
Enabled:=False
ExtractTemporaryFile('Button1.bmp')
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Button1.bmp')
Parent:=InfoButton
end;
end;
end;
Автор: nOobCrafter
Дата сообщения: 12.03.2009 11:03
Еще вопрос который несколько озадачил (вообщем то я его решил просто интересна причина). Вот структура:

Код: procedure CurPageChanged(CurPageID: Integer);
Begin
if (CurPageID = wpSelectTasks) and not AddCheckBoxExist then begin
if DirExists('C:\Rovalant') then begin
WizardForm.TasksList.AddCheckBox('Обновить приложение', '', 0, False, True, True, True, nil) // это наш новый компонент который мы только что добавили, прошу заметить стоит 1 фолс, стало быть по дефолту он НЕ выбран!
WizardForm.TasksList.AddCheckBox('Создать резервную копию:', '', 0, True, True, True, True, nil) // этот компонент был и раньше, по дефолту выбран
WizardForm.TasksList.AddCheckBox('Создать резервную копию баз данных конфигурации объекта', '', 1, True, True, False, True, nil) // это дочерние компоненты
//.......     
end;
AddCheckBoxExist:=True;
end;
end;


procedure CurStepChanged(CurStep: TSetupStep);
begin
if DirExists('C:\123') then begin
if CurStep = ssInstall then begin
// это мы вверху добавили новый компонент и соответственно считываем что будет елси он выбран
if WizardForm.TasksList.Checked[4] = True then //если чекбокс отмечен тогда выполняем бекап с заменой
begin
    MsgBox('пошел бэкап и потом замена файлов', MbInformation, Mb_Ok);
end;

// это то что было раньше
if WizardForm.TasksList.Checked[5] = True then
begin
MsgBox('привет это старый компонент', MbInformation, Mb_Ok);
end;
end;
end;
end;
Автор: WinstAn70
Дата сообщения: 12.03.2009 11:37
Подскажите как можно сделать чтобы во время установки в ini файле менялась строчка где находиться та или иная папка
Вот эта строчка должна меняться!
BaseDir=D:\Program Files\Half Life 2 Episode Pack\steamapps
Автор: DeKaNszn
Дата сообщения: 12.03.2009 12:09
WinstAn70
напиши содержимое ini и путь к нему относительно {app}
Автор: skeptik_vdm
Дата сообщения: 12.03.2009 12:21
WinstAn70
По поводу твоего вопроса там просто как и с реестром сам недавно HL2- Episode Two закомпилил

[Ini]
Filename:{app}\путь_к_файлу\имя_файла.ini; Section: "Тут_секция"; Key: "BaseDir"; String: "{app}\steamapps";
Автор: WinstAn70
Дата сообщения: 12.03.2009 12:21
DeKaNszn
D:\Program Files\Временно\Base Source Engine 2\bin
[more=Текст]============================================================
================Файл конфигураций эмулятора Steam================
==Если Вам не нужна русская озвучка, то удалите строки со словом "russian"==
==(либо замените название GCF на файл с тем языком, который Вам нужен)==
============================================================

=========================================
===== Параметры запуска записываются ниже =====
=========================================

=================================

[Emulator]

BaseDir=D:\Program Files\Half Life 2 Episode Pack\steamapps

Extracted=0
=Распакованность\нераспакованность кэша игры. Если значение параметра равно
=1 и кэш игры распакован корректно, то конфигурации игр, записанные ниже, не
=нужны.

PreferLocal=1
=Приоритет локальных файлов. Если значение параметра равно 1, то имеющиеся
=локальные файлы будут иметь больший приоритет, чем файлы, находящиеся вну-
=три GCF-архива, и в первую очередь будут загружаться локальные файлы, а не
=GCF-архивы.

OverwriteOnLocalCopy=0
=Перезапись существующих локальных файлов. Если значение данного параметра
=равно 1 и значение параметра PreferLocal равно 0, то все имеющиеся необходимые
=игре локальные файлы будут перезаписываться на оригинальные файлы из GCF-
=архива.

Silent=0
=Предупреждение об отсутствии необходимых GCF-файлов. Если значение пара-
=метра равно 1, то в случае запуска игры при отсутствии необходимых GCF-архи-
=вов не будет выведено предупреждение.

=================================

=========================================
===== Конфигурации игр записываются ниже =====
=========================================

=================================

=Half-Life 2=

[HL2.EXE_HL2]
AppId=220
GCF=half-life 2_russian.gcf
GCF=half-life 2 content.gcf
GCF=base source engine 2.gcf
GCF=source materials.gcf
GCF=source models.gcf
GCF=source sounds.gcf

=================================

=Half-Life 2: Episode One=

[HL2.EXE_EPISODIC]
AppId=380
GCF=half-life 2 episode one russian.gcf
GCF=half-life 2_russian.gcf
GCF=half-life 2 episode one.gcf
GCF=episode 1 shared.gcf
GCF=base source engine 2.gcf
GCF=source materials.gcf
GCF=source models.gcf
GCF=source sounds.gcf

=================================

=Half-Life 2: Episode Two=

[HL2.EXE_EP2]
AppId=420
GCF=half-life 2 episode two russian.gcf
GCF=half-life 2 episode one russian.gcf
GCF=half-life 2_russian.gcf
GCF=episode two content.gcf
GCF=episode two maps.gcf
GCF=episode two materials.gcf
GCF=episodic 2007 shared.gcf
GCF=episode 1 shared.gcf
GCF=source 2007 shared materials.gcf
GCF=source 2007 shared models.gcf
GCF=source 2007 shared sounds.gcf
GCF=source 2007 binaries.gcf
GCF=source materials.gcf
GCF=source models.gcf
GCF=source sounds.gcf

=================================

=Portal=

[HL2.EXE_PORTAL]
AppId=400
GCF=portal russian.gcf
GCF=portal content.gcf
GCF=source 2007 shared materials.gcf
GCF=source 2007 shared models.gcf
GCF=source 2007 shared sounds.gcf
GCF=source 2007 binaries.gcf
GCF=source materials.gcf
GCF=source models.gcf
GCF=source sounds.gcf

=================================

=Team Fortress 2=

[HL2.EXE_TF]
AppId=440
GCF=team fortress 2 client content.gcf
GCF=team fortress 2 content.gcf
GCF=team fortress 2 materials.gcf
GCF=source 2007 shared materials.gcf
GCF=source 2007 shared models.gcf
GCF=source 2007 shared sounds.gcf
GCF=source 2007 binaries.gcf
GCF=source materials.gcf
GCF=source models.gcf
GCF=source sounds.gcf

=================================

=========================================
======= Выделенный сервер для Source-игр ======
=========================================

=================================

=Source Dedicated Server=

[SRCDS.EXE]
AppId=205

=================================

=========================================
==== Конфигурации модов записываются ниже ====
=========================================

============================================================
=====ПАПКА - название папки, в которой находится содержимое мода=====
=======AppId мода совпадает с AppId игры, для которой он сделан========
============================================================

=================================

=Имя мода=

[HL2.EXE_ПАПКА]
AppId=
GCF=
GCF=
GCF=
GCF=
GCF=

=================================[/more]
skeptik_vdm
Уже делал так не катит.Может чего неправильно писал ?
Автор: nOobCrafter
Дата сообщения: 12.03.2009 12:36
DeKaNszn
всеравно ерунду имеем((

Код: // в остальном код полностью такой как ты выложил. (описку с функцией исправил)
function checking():boolean;
begin
If not updating
Then Result:=true
Else begin
MsgBox('замена файла' + ExtractFileName(CurrentFileName), MbInformation, Mb_Ok); {для отладки}
Case ExtractFileName(CurrentFileName) of
'232.dll','485.dll','bdt52cf.dll','jpeg32.dll','proclink.dll','asod.exe','browser.exe','builder.exe','vidsvr.exe', '232.dll','485.dll','jpeg32.dll','vidcap.dll','IniSetAccess.exe','photocap.exe','SArepair.exe','SetAccess.exe','SetAccess_conv282.exe','twaincap.exe','twp_help.exe': Result:=true; //эти файлы надо обновить
else Result:=false;
end;
end;
end;
Автор: Yoldosh
Дата сообщения: 12.03.2009 12:52
Кто нибудь знает код штобы сменить цвет фона
Автор: WinstAn70
Дата сообщения: 12.03.2009 12:59
Yoldosh
Где именно ты хочешь сменить цвет фона?
Автор: skeptik_vdm
Дата сообщения: 12.03.2009 13:01
WinstAn70
Покажи как ты делал!!!!
Но вот так будет правильно
[Ini]
Filename:{app}\путь\файл.ini; Section: "Emulator"; Key: "BaseDir"; String: "{app}\steamapps";
Автор: WinstAn70
Дата сообщения: 12.03.2009 13:20
skeptik_vdm
[INI]
Filename: {app}\Временно\Base Source Engine 2\bin\SteamEmu.ini; Section: Emulator; Key: BaseDir; String: {app}\steamapps

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: в очередной раз босудим антивиры?


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