PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 [61] 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

audiofeel
07-10-2013, 01:55
Alloc, попробуй сделать "проще", просто выбери нужный батник в папке "New folder" (названия батников говорят сами за себя) а файлы которые надо зжать перемести в папку - "packeddata" , на выходе получишь архив, который распаковывается немного быстрее (что то там про паралельную распаковку), а в скрипт всего лишь нужно добавить (или не убирать)
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
и раскоментировать вот это =
#define facompress
#define PrecompInside
#define SrepInside
==============================
ну и соответственно все что в папке "include" перенеси у себе в инклуд
----------------------------------------
вроде все
http://rghost.ru/49201767

Alloc
07-10-2013, 02:10
audiofeel, большое спасибо, я попробую


Большое спасибо за помощь, все прекрасно работает. Этого я и добивался)
Еще подскажите пожалуйста, какими командами можно установить пароль для архива?

vint56
07-10-2013, 09:40
Alloc
arc.exe a -ep1 -dses --dirs -s; -lc- -di -i2 -r "-hpvint56" -mprecomp+srep:l512+lzma:a1:mfbt4:d176m:fb128:mc1000:lc8 data.bin packeddata\*

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data.bin'), ExpandConstant('{app}'), '', false, 'vint56', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

Alloc
07-10-2013, 13:54
vint56, большое спасибо. А путь где располагается файл "arc.ini" обязательно указывать? Инсталлятор и без этого благополучно распаковывает архивы вроде.. объясните пожалуйста

еще хотел спросить, чем лучше упаковать - srep или srep64. У меня x64-х битная ОС.. Ни как потом не повлияет на пользователей с х32 ОС если я буду паковать с Srep64? И как указать в батнике, что бы архиватор использовал именно это версию srep'а?

Да, и за что отвечает параметр "d176m"?

Заранее спасибо!

vint56
07-10-2013, 15:50
Alloc если не надо arc.ini
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data.bin'), ExpandConstant('{app}'), '', false, 'vint56', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
Насчет arc.ini если ты будеш использовать внешние упаковшики где он находиться в папке include
если у тебя Oc 64 тогда лутше использовать srep64.exe просто переменуй в srep.exe можно будет использовать больше 4 гигов памяти насчет распаковки CLS-srep.dll распакует
за что отвечает параметр "d176m"? сколько памяти использовать при сжатий lzma но все ровно будет ограничения да если Oc 64 бита для этого нужна FreeArc-LZMA-x64.exe тогда можно будет использовать больше памяти d512 это 5 гигов для распаковки потребуется 512 мегов
ну в расчет брать если использовал cls фильтры они тоже приболяют память для распаковки в isdone
if not SrepInit(ExpandConstant('{app}'),256,0) then break; выделить 256 мегов для распаковки
if not PrecompInit(ExpandConstant('{app}'),128,PCFVer) then break; 128 мегов для распаковки
будет считаться если использовалься srep и lzma пример 256+512 = 768 потребуется памяти
прочитай справку по freearc или 7zip

Alloc
07-10-2013, 16:01
vint56, огромное спасибо за помощь! Теперь все ясно

Alloc
07-10-2013, 16:48
У меня еще вопросик созрел, надеюсь на вашу помощь)

Вообщем при упаковке файлов игры, место на жестком диске стремительно приближается к нулю по известной причине.. Скажите пожалуйста, как и что прописать в батнике, что бы временные файлы упаковщиков "precomp+srep+lzma" хранились в определенной папке?
Заранее спасибо!

vint56
07-10-2013, 16:50
Alloc
arc.exe a -w.\ пример
-w.\ будет создавать файлы возле батника а не во временном каталоге

Alloc
07-10-2013, 16:59
vint56, еще раз спасибо)

Alloc
08-10-2013, 14:55
Помогите кому не трудно разобраться с набором команд для сжатия.. Я исользую следующий набор команд для сжатия:


arc.exe a -ep1 -dses --dirs -s; -lc- -di -i2 -r "-hpvint56" -mprecomp+srep:l512+lzma:a1:mfbt4:d176m:fb128:mc1000:lc8 data.bin packeddata\*


При установке игры, "Setup.tmp" потребляет целых 720 мб памяти.. можно как то снизить данный показатель при этом не потерять степень сжатия и скорость распаковки? Заранее спасибо

Mat_y
08-10-2013, 15:23
Госопда!
А как можно сделать, чтобы установщик запоминал какие компоненты пользователь выбрал при прошлой установке? Т.е. если установщик запущен еще раз, то галочки на выбранных компонентах оставались.... только так, чтобы фаил uninstall не создавался... кто-то говорил, что это можно сделать в ini. Может кто подсказать?

Антон_Мураткин@vk
08-10-2013, 16:59
Подскажите пожалуйста. Создал новую кнопку [(Button) далее] но она не реагирует, что бы на следующию страницу переходило как прописать чтобы она работала? Заранее благодарю

vint56
08-10-2013, 17:24
Антон_Мураткин@vk
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
var
ButtonNext: TNewButton;

procedure ButtonNextClick(Sender: TObject);
begin
WizardForm.NextButton.OnClick(nil);
end;

procedure InitializeWizard();
begin
ButtonNext := TNewButton.Create(WizardForm);
with ButtonNext do
begin
Parent := WizardForm;
Left := ScaleX(56);
Top := ScaleY(325);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Далее';
OnClick := @ButtonNextClick;
end;
end;

Антон_Мураткин@vk
08-10-2013, 18:56
vint56, А можно вот в этом скрипте вставить чтобы кнопки работали

[Code]
{ RedesignWizardFormBegin } // Не удалять эту строку!
// Не изменять эту секцию. Она создана автоматически.
var
NewButton1: TNewButton;
NewButton2: TNewButton;
NewButton3: TNewButton;

procedure RedesignWizardForm;
begin
with WizardForm.WelcomeLabel2 do
begin
Height := ScaleY(127);
end;

{ NewButton1 }
NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(312);
Top := ScaleY(280);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Далее';
end;

{ NewButton2 }
NewButton2 := TNewButton.Create(WizardForm);
with NewButton2 do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(416);
Top := ScaleY(280);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Отмена';
end;

{ NewButton3 }
NewButton3 := TNewButton.Create(WizardForm);
with NewButton3 do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(208);
Top := ScaleY(280);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Назад';
end;

NewButton1.TabOrder := 2;
NewButton2.TabOrder := 3;
NewButton3.TabOrder := 4;

{ ReservationBegin }
// Вы можете добавить ваш код здесь.

{ ReservationEnd }
end;
// Не изменять эту секцию. Она создана автоматически.
{ RedesignWizardFormEnd } // Не удалять эту строку!

procedure InitializeWizard();
begin
RedesignWizardForm;
end;

Или кто нибудь помогите пожалуйста.

habib2302
08-10-2013, 19:09
Доброе время суток. Мне когда то давали скрипт на удаление настроек/сохранок программ/игр http://forum.oszone.net/post-2165899.html#post2165899 и никакого сообщения нету на удаление

vint56
08-10-2013, 19:43
Антон_Мураткин@vk

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[code]
var
ButtonNext: TNewButton;
ButtonBack: TNewButton;
ButtonCancel: TNewButton;


procedure ButtonNextClick(Sender: TObject);
begin
WizardForm.NextButton.OnClick(nil);
end;

procedure ButtonBacktClick(Sender: TObject);
begin
WizardForm.BackButton.OnClick(nil);
end;

procedure ButtonCanceltClick(Sender: TObject);
begin
WizardForm.CancelButton.OnClick(nil);
end;

procedure InitializeWizard();
begin
with WizardForm.WelcomeLabel2 do
begin
Height := ScaleY(127);
end;

ButtonNext := TNewButton.Create(WizardForm);
with ButtonNext do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(312);
Top := ScaleY(280);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Далее';
OnClick := @ButtonNextClick;
end;

ButtonCancel := TNewButton.Create(WizardForm);
with ButtonCancel do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(416);
Top := ScaleY(280);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Отмена';
OnClick := @ButtonCanceltClick;
end;

ButtonBack := TNewButton.Create(WizardForm);
with ButtonBack do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(208);
Top := ScaleY(280);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Назад';
OnClick := @ButtonBacktClick;
end;
end;

Все работает habib2302 а ты правильно указал путь сохранений
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
case CurUninstallStep of
usPostUninstall:
if DirExists(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения') then
begin
if MsgBoxEx(0, 'Удалить сохранения игры находящиеся по адресу:' + #13#13 + AddQuotes(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения'), 'Удаление сохранений', $00000004 or $00000020, 0, 0) = IDYES then
DelTree(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения', True, True, True);
end;
end;
end;

Антон_Мураткин@vk
08-10-2013, 22:33
vint56, Благодарю! Но почему то только всё это на первой страницы находится. А мне надо что бы кнопки были так же как на стандартном сетапе (инсталяторе) Есть кнопки стандартные а мне надо же такие только ещё и в другом месте

Nordek
08-10-2013, 23:07
habib2302, У меня валяются такие варианты

[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usDone then
begin
if DirExists(ExpandConstant('{userdocs}\Game')) then
begin
if MsgBox('Удалить сохраненные игры?',mbconfirmation, mb_yesno) = IDYES then
begin
DelTree(ExpandConstant('{userdocs}\Game'), True, True, True);
end;
end;
end;
end;

[Registry]
Root: HKLM; SubKey: SOFTWARE\My\Game; ValueType: string; ValueName: PathGame; ValueData: {app}; Flags: uninsdeletekey

[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var ResultStr:String;
begin
if CurUninstallStep=usPostUninstall then
begin
RegQueryStringValue(HKLM, 'SOFTWARE\Chuvakstepan\Spider-man3', 'UnInstConfirm', ResultStr)
if DirExists(ExpandConstant('{userdocs}')+'\Game') then
if MsgBox('Удалить сохраненные игры',mbconfirmation, mb_YesNo) = IDYES then
begin
if not DelTree(ExpandConstant('{userdocs}')+'\Game', True, True, True)
then
MsgBox('Папка не удалена!' #13#13 'Папка не существует или задействована.', mbError, MB_OK);
end;
end;
end;


никакого сообщения нету на удаление »А ты на (ExpandConstant('{userdocs}\Game') обращал внимание, совпадает с расположением твоих сохранений?

Nordek
08-10-2013, 23:30
Но почему то только всё это на первой страницы »Обрати внимание на Parent
У тебя сейчас
Parent := WizardForm.WelcomePage;
А ты хочешь наверное на основную форму перенести?
Тогда так
Parent := WizardForm;

vint56
08-10-2013, 23:58
Антон_Мураткин@vk вот так
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[code]
var
ButtonNext: TNewButton;
ButtonBack: TNewButton;
ButtonCancel: TNewButton;


procedure ButtonNextClick(Sender: TObject);
begin
WizardForm.NextButton.OnClick(nil);
end;

procedure ButtonBacktClick(Sender: TObject);
begin
WizardForm.BackButton.OnClick(nil);
end;

procedure ButtonCanceltClick(Sender: TObject);
begin
WizardForm.CancelButton.OnClick(nil);
end;

procedure InitializeWizard();
begin
with WizardForm.WelcomeLabel2 do
begin
Height := ScaleY(127);
end;

with WizardForm do
begin
ClientHeight := ScaleY(390);
end;

ButtonNext := TNewButton.Create(WizardForm);
with ButtonNext do
begin
Parent := WizardForm;
Left := ScaleX(317);
Top := ScaleY(359);
Width := ScaleX(80);
Height := ScaleY(23);
Caption := 'Далее';
OnClick := @ButtonNextClick;
end;

ButtonCancel := TNewButton.Create(WizardForm);
with ButtonCancel do
begin
Parent := WizardForm;
Left := ScaleX(407);
Top := ScaleY(359);
Width := ScaleX(80);
Height := ScaleY(23);
Caption := 'Отмена';
OnClick := @ButtonCanceltClick;
end;

ButtonBack := TNewButton.Create(WizardForm);
with ButtonBack do
begin
Parent := WizardForm;
Left := ScaleX(237);
Top := ScaleY(359);
Width := ScaleX(80);
Height := ScaleY(23);
Caption := 'Назад';
OnClick := @ButtonBacktClick;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
ButtonBack.Show;
case CurPageID of
wpWelcome: begin
ButtonBack.Hide;
end;
end;
end;




© OSzone.net 2001-2012