Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
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
audiofeel, большое спасибо, я попробую
Большое спасибо за помощь, все прекрасно работает. Этого я и добивался)
Еще подскажите пожалуйста, какими командами можно установить пароль для архива?
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;
vint56, большое спасибо. А путь где располагается файл "arc.ini" обязательно указывать? Инсталлятор и без этого благополучно распаковывает архивы вроде.. объясните пожалуйста
еще хотел спросить, чем лучше упаковать - srep или srep64. У меня x64-х битная ОС.. Ни как потом не повлияет на пользователей с х32 ОС если я буду паковать с Srep64? И как указать в батнике, что бы архиватор использовал именно это версию srep'а?
Да, и за что отвечает параметр "d176m"?
Заранее спасибо!
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
vint56, огромное спасибо за помощь! Теперь все ясно
У меня еще вопросик созрел, надеюсь на вашу помощь)
Вообщем при упаковке файлов игры, место на жестком диске стремительно приближается к нулю по известной причине.. Скажите пожалуйста, как и что прописать в батнике, что бы временные файлы упаковщиков "precomp+srep+lzma" хранились в определенной папке?
Заранее спасибо!
Alloc
arc.exe a -w.\ пример
-w.\ будет создавать файлы возле батника а не во временном каталоге
Помогите кому не трудно разобраться с набором команд для сжатия.. Я исользую следующий набор команд для сжатия:
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 мб памяти.. можно как то снизить данный показатель при этом не потерять степень сжатия и скорость распаковки? Заранее спасибо
Госопда!
А как можно сделать, чтобы установщик запоминал какие компоненты пользователь выбрал при прошлой установке? Т.е. если установщик запущен еще раз, то галочки на выбранных компонентах оставались.... только так, чтобы фаил uninstall не создавался... кто-то говорил, что это можно сделать в ini. Может кто подсказать?
Антон_Мураткин@vk
08-10-2013, 16:59
Подскажите пожалуйста. Создал новую кнопку [(Button) далее] но она не реагирует, что бы на следующию страницу переходило как прописать чтобы она работала? Заранее благодарю
Антон_Мураткин@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 и никакого сообщения нету на удаление
Антон_Мураткин@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, Благодарю! Но почему то только всё это на первой страницы находится. А мне надо что бы кнопки были так же как на стандартном сетапе (инсталяторе) Есть кнопки стандартные а мне надо же такие только ещё и в другом месте
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') обращал внимание, совпадает с расположением твоих сохранений?
Но почему то только всё это на первой страницы »Обрати внимание на Parent
У тебя сейчас
Parent := WizardForm.WelcomePage;
А ты хочешь наверное на основную форму перенести?
Тогда так
Parent := WizardForm;
Антон_Мураткин@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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.