Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
R.i.m.s.k.y., да нет. Я имел ввиду, что мне надо было архивировать файлы, которые ложатся в backup, после установки софта.
Вот нашел (http://soar.name/2011/06/innosetup-archive-manager/#.TyvMIYFvpzY) Сейчас попробую как работает. Отпишусь в своем же сообщении.
Работает.
Есть прогресс бар.
Ты ломать крушить мой мозг любвеобильно и ясно »
Отредактировал. Что-то я быстро перенажал клавишу... :)
TROY Diamond
03-02-2012, 18:02
Как в патче для игры Сталкер реализованы несколько индикаторов процесса?
http://i32.fastpic.ru/big/2012/0203/86/c2ac6d0b81142895a2f30898b247c486.png (http://fastpic.ru/) http://i29.fastpic.ru/big/2012/0203/32/2563c6b1740c99c6fafea2a4b1e3f332.png (http://fastpic.ru/) http://i29.fastpic.ru/big/2012/0203/d0/cda8533c7ed5d16a838aaf506da02ed0.png (http://fastpic.ru/)
"По очереди появляются несколько индикаторов": отдельно для распаковки, для обновления и для регистрации.
Т.е. сначала файлы распаковываются "полоска доходит до конца", потом "полоска по новой" для обновления и ещё раз для регистрации.
Почему в оригинальном установщике шрифт текста Лицензионного соглашения более "аккуратный, компактный и чёткий", чем в моём?
(1 - оригинал, 2 - мой):
http://i29.fastpic.ru/big/2012/0203/20/d125050faf222caa78a82c52bac66520.png (http://fastpic.ru/) http://i27.fastpic.ru/big/2012/0203/89/87035d50bf68ecda4e0312fab20cc689.png (http://fastpic.ru/)
Текст в обычном *.txt, а не *.rtf, - можно ли его как-нибудь "настроить"?
TROY Diamond, изменить запросто, просто открой Inno Setup 5.4.3 (РАСШИРЕННАЯ), открой скрипт ISS, редактор форм, и найди типа "License" и удачи изменить шрифты...
wdmitriy
04-02-2012, 01:39
Ребят подскажите кто может у меня такая проблема переделал скрипт от "Killer" Установка проходит успешно а вот при удалении выскакивает ошибка Runtime Error (at 170:5712): Could not call proc. после нажатия на "ок" выскакивает следующая Runtime Error (at 213:5): Could not call proc. и на этом все ничего не удаляеться уже весь скрипт перелопатил в чем проблема понять не могу зарание спасибо за ответ!!
Johny777
04-02-2012, 02:09
wdmitriy,
скин к деинсталятору пришивал?
если да, то вот правильный код-пример:
[Files]
Source: ISSkin.dll; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system; /// в папку установи
Source: steam.cjstyles; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system; /// в папку установки
/// если используешь скин на самом инсталяторе, то эти же две строки, только в темп
/// Source: ISSkin.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
/// Source: steam.cjstyles; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
[_Code]
procedure LoadSkinA(lpszPath: String; lpszIniFileName: String ); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
function InitializeUninstall(): Boolean;
begin
FileCopy(ExpandConstant('{app}\isskin.dll'), ExpandConstant('{tmp}\isskin.dll'), False);
FileCopy(ExpandConstant('{app}\steam.cjstyles'), ExpandConstant('{tmp}\steam.cjstyles'), False);
LoadSkinA(ExpandConstant('{tmp}\steam.cjstyles'), '');
Result:=True;
end;
Gnom_aka_Lexander
04-02-2012, 10:38
Runtime Error (at 213:5) »
213-я строка 5-й символ.
А вообще - Could not call proc означает обращение к объекту до его создания. Чаще всего. Без скрипта - больше никто и ничего не сможет тебе подсказать, что тебе действительно помогло-бы. Хотя желающих пофлудить на тему нарушения тобой элементарных правил постановки вопроса - найдется множество. Но большинство удержит себя в руках.
Johny777
04-02-2012, 14:13
скажите пожалуйста
если создать один чекбокс и например 3 радио кнопки, то чтобы сделать эти радиокнопки дочерними (как с компонетами 1, 1\1, 1\2) нужно настраивать Tab Order?
например у чекбокса Tab Order 0, а у радиокнопок 1
Johny777, то есть, к примеру если чекбокс не галична (не активируется галочкой), то эти радиобуттоны не активны я так полагаю?
Johny777
04-02-2012, 15:10
alert30,
да
видишь ли
у меня косяк с RunList-ом на последней странице
устанавливаются 4 игры и в конце четыре чебокса
выбираются все одновременно, а надо, чтоб по очереди
флаг "эксклюзив" не действует в секции RUN, вот и прикидываю, чтоб как-то сделать так:
http://rghost.ru/36333884/image.png (http://rghost.ru/36333884.view)
здесь
http://rghost.ru/36333900/image.png (http://rghost.ru/36333900.view)
те пустой чекбокс "запустить" и радиобаттоны
скрип с нуля делаю сначала на game script generator от South
раньше эти чекбоксы были как бы "эксклюзивными"
а сейчас нет
где ошибся понять не могу
отбой,
примерно вот так будет эксклюзивный выбор на RunList-е
procedure RunListClickCheck(Sender: TObject);
var
i:integer;
begin
if WizardForm.RunList.Checked[WizardForm.RunList.ItemIndex] then begin
for i:=0 to WizardForm.RunList.Items.Count-1 do
WizardForm.RunList.Checked[i]:=False;
WizardForm.RunList.Checked[WizardForm.RunList.ItemIndex]:=True;
end;
end;
procedure InitializeWizard;
begin
WizardForm.RunList.OnClickCheck:=@RunListClickCheck;
WizardForm.TypesCombo.ItemIndex:=0;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if (CurPageID=wpFinished) or (CurPageID=wpInfoAfter) then
WizardForm.RunList.Checked[0]:=True;
end;
но хотелось бы всё таки узнать насчёт TabOrder
STRAYKER
04-02-2012, 16:57
Помогите, как сделать в скрипте что бы были дополнительные голочки по поводу установки дополнительного ПО?
R.i.m.s.k.y.
04-02-2012, 18:09
STRAYKER, может в справке поглядеть?
[Tasks]
Name: vcredist; Description: MS Visual C++ 2008; GroupDescription: Доп.ПО
[Run]
Tasks: vcredist; Filename: {app}\VCRedist2008\vcredist_x86.exe; WorkingDir: {app}\VCRedist2008; Description: MS Visual C++ 2008; Flags: waituntilterminated
Привет всем!
Странное дело:
function InitializeSetup(): Boolean;
var
path, RegValue, TmpFileName,TmpFileName2,ExecStdout: String;
ErrorCode, Messages, Messages2: Integer;
begin
Result:= True;
TmpFileName := ExpandConstant('{tmp}') + '\A.txt';
TmpFileName2 := ExpandConstant('{tmp}') + '\B.txt';
Exec('cmd.exe', ..+ TmpFileName +... , ExpandConstant('{tmp}'), SW_HIDE, ewWaitUntilTerminated, ErrorCode);
LoadStringFromFile(TmpFileName, ExecStdout);
Чето там с ним делается.
Потом:
Exec('cmd.exe', ..+ TmpFileName2 +... , ExpandConstant('{tmp}'), SW_HIDE, ewWaitUntilTerminated, ErrorCode);
LoadStringFromFile(TmpFileName2, ExecStdout);
Проблема в следующем:
TmpFileName2 := ExpandConstant('{tmp}') + '\B.txt'; ----> не создается ни под каким предлогом, хотя A файл всегда.
В чем проблема?
SARATOVSKY
05-02-2012, 18:05
Здравствуйте, ребят подскажите как создать инсталл с выборочной установкой. К примеру у меня в инстале 11 частей игры и нужно чтобы какие части нужны те и должны отмечаться галочками. Ткните мне туда где это описано!
R.i.m.s.k.y.
05-02-2012, 18:13
SARATOVSKY,
Tasks (выше пример) и Components по аналогии
wdmitriy
06-02-2012, 07:01
как сделать чтобы видео проигрывалось на заднем фоне в окне инсталлятора за надписями, прогрес баром и тд.
master00778
06-02-2012, 15:08
помогить как сделать музыку в инсталляторе
nazbek010
06-02-2012, 16:29
Люди помогите как соединить эти 2 кода
procedure CurStepChanged(CurStep: TSetupStep);
var
FindFiles: TFindRec;
i: integer;
MyFiles: array of string;
MyDir, BackDir: string;
begin
if CurStep=ssInstall then begin
if MyTask.Checked then begin
MyFiles:=['*.vtx','*.','*.mdl','*.vvd','*.phy']; // указать файлы или маски нужные для бакупа через запятую. при указании маски '*' бакупятся все файлы с вложенными папками
MyDir:=ExpandConstant('{app}'+'\cstrike\models\weapons\'); //папка откуда бакупить
BackDir:=ExpandConstant('{app}'+'\Backup\'); // папка куда бакупить
for i:=0 to GetArrayLength(MyFiles)-1 do
begin
if FindFirst(MyDir+MyFiles[i], FindFiles) then begin
repeat
if not DirExists(BackDir) then begin
CreateDir(BackDir);
end;
MoveFile(MyDir+FindFiles.Name, BackDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;
end;
end;
end;
и
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssInstall: begin
PercentsOldProc:=SetWindowLong(WizardForm.ProgressGauge.Handle,-4,CallBackProc(@PercentsProc,4));
if GetArrayLength(ADisk)>0 then begin
KillTimer(WizardForm.Handle,WFDiskTimerID);
SetArrayLength(ADisk,0);
end;
end;
ssPostInstall: SetWindowLong(WizardForm.ProgressGauge.Handle,-4,PercentsOldProc);
end;
end;
Dark_Delphin
06-02-2012, 18:23
master00778, вот пример. (http://rghost.ru/2565368)
Есть даже регулятор громкости.
valyok666
06-02-2012, 18:44
master00778, wdmitriy,
трудно в справку заглянуть или примеры в шапке???
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.