PDA

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


Страниц : 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 126 127 128 129 130 131 132 133

YURSHAT
28-02-2010, 22:06
Опиши пожалуйста, если не трудно [параметры] »

Читай (http://public.uic.rsu.ru/~skritski/scourses/WebTutor/MCI/mci.htm)

Cartmans
28-02-2010, 23:20
YURSHAT, Возможно ты сможешь решить мою проблему
Проблема заключается в том, что я не могу убрать это окно - http://xmages.net/upload/ec775e69.bmp (http://xmages.net/view-image.htm)
В общем мне нужно зделать так, что бы это окно не выскакивало. Что нужно прописать в скрипте?

YURSHAT
01-03-2010, 06:22
Возможно ты сможешь решить мою проблему
Проблема заключается в том, что я не могу убрать это окно - »

Нужно убрать из секции [Icons] строки сознания иконок в меню пуск

Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"

За создание иконок в меню пуск отвечает константа {group}.

Cartmans
01-03-2010, 08:41
YURSHAT, Спасибо тебе огромное!

South
01-03-2010, 09:56
Вывод: используйте isgsg.dll от South »
не совсем так
isgsg.dll тоже имеет проблему
под win9x/me/2k возможен показ сплэшей только из .bmp в отличие от IsSplash.dll
с остальным проблем вроде нет

т.е. здесь каждый сам для себя должен решить, что ему нужно и в зависимости от этого выбирать чем пользоваться

YURSHAT
01-03-2010, 15:52
не совсем так
isgsg.dll тоже имеет проблему
под win9x/me/2k возможен показ сплэшей только из .bmp в отличие от IsSplash.dll
с остальным проблем вроде нет »

Ну, win9x/me/2k уже давно не актульны, так что мне кажется это вовсе не проблема.

ЗЫ. Поддержка windows 2000 заканчивается 13 июля 2010. Так, что эти оси можно сбросить со счетов...

Cartmans
01-03-2010, 18:31
Обьясните как правильно сделать скрипт фрииарка, что где прописать что бы не было ошибок при отмене установки и т.д. скрипт фрииакра(стандартный) у меня есть
Upd: Помогите! Срочно нужно!

solvador
01-03-2010, 19:42
Доброго времени.
Подскажите пожалуйста, как работать в инно со множествами?
Варианты вида
type
M= Set of 'A'..'D';
var
MS: M;
Не проходят. Жалуется на отсутствие идентификатора...

zzzombie89
01-03-2010, 23:07
Добрый вечер, нужна ваша помощь, есть секция ->

[Run]
Filename: {tmp}\precomp.exe; Parameters: "-r ""{app}\Assets.pcf"""; WorkingDir: {app}; StatusMsg: Восстановление игровых архивов...
Filename: cmd.exe; Parameters: /C del /F /Q Assets.pcf; WorkingDir: {app}; StatusMsg: Удаление временных файлов...

Нужно выполнить через секцию [Code], чтобы выполнялись команды после распаковки FreeArc архивов . . .

alex2010
02-03-2010, 01:36
подскажите пожалуйста код, чтоб было как на скрине(подсчитывало свободное место на ЖД)
http://radikal.ru/F/s006.radikal.ru/i214/1002/ec/44635a0c609f.png.html

svensoft
02-03-2010, 08:07
Cartmans, Обьясните как правильно сделать скрипт фрииарка, что где прописать что бы не было ошибок при отмене установки и т.д. скрипт фрииакра(стандартный) у меня есть »

alex2010, подскажите пожалуйста код, чтоб было как на скрине(подсчитывало свободное место на ЖД)

Вот скрипт с настроеным фриарком и реализованым подсчетом свободного места на жд : http://upwap.ru/757248

South
02-03-2010, 11:01
Подскажите пожалуйста, как работать в инно со множествами? »
есть смутное подозрение, что никак
хоть инно и определяет set как служебное слово, но свое множество я так и не смог определить
тоже самое в отношении in

solvador
02-03-2010, 13:00
South, такая же беда.
Написал такой код:

procedure DBBackup();
var
C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z: String;
begin
CreateBackup; {вызов процедуры создания резервных копий}
C:= 'c'; D:= 'd'; E:= 'e'; F:= 'f'; G:= 'g'; H:= 'h'; I:= 'i'; J:= 'j'; K:= 'k'; L:= 'l'; M:= 'm'; N:= 'n'; O:= 'j'; P:= 'p'; Q:= 'q'; R:= 'r'; S:= 's'; T:= 't'; U:= 'u'; V:= 'v'; W:= 'w'; X:= 'x'; Y:= 'y'; Z:= 'z';
if FindFirst(ExpandConstant('{app}\gamedata.db*'), FindFiles) then {ищем по маске файлы в директории}
begin repeat
Delete(FindFiles.Name, 1, 11); {режем строку до одной последней буквы}
case FindFiles.Name of {сравнение и результат}
C: CreateDBBackup; D: CreateDBBackup; E: CreateDBBackup; F: CreateDBBackup; G: CreateDBBackup; H: CreateDBBackup;
I: CreateDBBackup; J: CreateDBBackup; K: CreateDBBackup; L: CreateDBBackup; M: CreateDBBackup; N: CreateDBBackup;
O: CreateDBBackup; P: CreateDBBackup; Q: CreateDBBackup; R: CreateDBBackup; S: CreateDBBackup; T: CreateDBBackup;
U: CreateDBBackup; V: CreateDBBackup; W: CreateDBBackup; X: CreateDBBackup; Y: CreateDBBackup; Z: CreateDBBackup;
// else MsgBox(FindFiles.Name, mbCriticalError, mb_OK); {выводим имя пропущенного файла для проверки}
end;
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;
Он рабочий, но хоть я ни капли не программист, но уж больно глаза режет. Как мне кажется, через множества он был бы намного проще и правильней.
По крайней мере для реализации её таким способом :)

South
02-03-2010, 13:42
Написал такой код: »
а так не проще?
procedure DBBackup();
var
// C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z: String;
FindFiles : TFindRec;
LastChar : Char;
begin
CreateBackup; {вызов процедуры создания резервных копий}
//C:= 'c'; D:= 'd'; E:= 'e'; F:= 'f'; G:= 'g'; H:= 'h'; I:= 'i'; J:= 'j'; K:= 'k'; L:= 'l'; M:= 'm'; N:= 'n'; O:= 'j'; P:= 'p'; Q:= 'q'; R:= 'r'; S:= 's'; T:= 't'; U:= 'u'; V:= 'v'; W:= 'w'; X:= 'x'; Y:= 'y'; Z:= 'z';
if FindFirst(ExpandConstant('{app}\gamedata.db*'), FindFiles) then begin {ищем по маске файлы в директории}
repeat
// Delete(FindFiles.Name, 1, 11); {режем строку до одной последней буквы}
LastChar:=UpperCase(FindFiles.Name)[Length(FindFiles.Name)];
if (LastChar<>'A') and (LastChar<>'B') then CreateDBBackup;
// case FindFiles.Name of {сравнение и результат}
// C: CreateDBBackup; D: CreateDBBackup; E: CreateDBBackup; F: CreateDBBackup; G: CreateDBBackup; H: CreateDBBackup;
// I: CreateDBBackup; J: CreateDBBackup; K: CreateDBBackup; L: CreateDBBackup; M: CreateDBBackup; N: CreateDBBackup;
// O: CreateDBBackup; P: CreateDBBackup; Q: CreateDBBackup; R: CreateDBBackup; S: CreateDBBackup; T: CreateDBBackup;
// U: CreateDBBackup; V: CreateDBBackup; W: CreateDBBackup; X: CreateDBBackup; Y: CreateDBBackup; Z: CreateDBBackup;
//else MsgBox(FindFiles.Name, mbCriticalError, mb_OK); {выводим имя пропущенного файла для проверки}
// end;
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;

solvador
02-03-2010, 14:06
South, ну разумеется проще :up
Я же говорю, что ни капли не программист. Хотя и LastChar (хотел сказать аналогичный пример) всё время был на виду пока листал руководства, но использовать его ума не хватило :unsure:
Спасибо!
Правда там есть архивы заканчивающиеся на 1...9. Но думаю это решается быстро.
Хм... посмотрел статьи Ерёмина, где как мне казалось видел аналогичный пример. Там такого нет, видимо ошибся...

South
02-03-2010, 14:44
кое-что смог сделать со множествами, оказывается они все-таки есть, только вот работать с ними как-то не очень удобно
var
c:Char;
b:byte;
MySet1: set of char;
MySet2: set of byte;
begin
MySet1:=['a','b','x','y'];
MySet2:=[byte(1),byte(2),byte(3),byte(4),byte(5),byte(6),byte(7),byte(8),byte(9)];
c:='a';
if c in MySet1 then MsgBox('c in MySet1; c = '+c, mbCriticalError, mb_OK);
b:=0;
if b in MySet2 then MsgBox('b in MySet2; b = '+IntToStr(b), mbCriticalError, mb_OK);
end;

A1EXXX
02-03-2010, 15:18
Inno ISCmplr Setup (http://restools.hanzify.org/inno/Inno_ISCmplr_Setup100301(7zip).zip) 5.3.8 build 100301 by Restools (http://restools.hanzify.org/)

solvador
02-03-2010, 15:21
South, ещё раз Спасибо. Пригодится.
Попробовал опираясь на ваш код слегка его подправить :) Получилось так:

const
Symbol = 'cdefghijklmnopqrstuvwxyz';

procedure DBBackup();
var
FindFiles : TFindRec;
begin
CreateBackup; {вызов процедуры создания резервных копий}
if FindFirst(ExpandConstant('{app}\gamedata.db*'), FindFiles) then begin {ищем по маске файлы в директории}
repeat
if Pos(FindFiles.Name[Length(FindFiles.Name)],Symbol) > 0 then CreateDBBackup;
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;
Вроде робит... Правда нужно наверное вместо [Length(FindFiles.Name) поставить фиксированную цифру, чтобы исключить файлы типа gamedata.dbb.bak . так как они удовлетворяют маске поиска и содержат последнюю букву включённую в symbol.

South
02-03-2010, 16:02
solvador,
можно и так, только, если пишешь Symbol = 'cdefghijklmnopqrstuvwxyz';, то Pos(FindFiles.Name[Length(FindFiles.Name)],Symbol) лучше написать как Pos(LowerCase(FindFiles.Name)[Length(FindFiles.Name)],Symbol). вдруг расширение в верхнем регистре будет написано
чтобы исключить файлы типа gamedata.dbb.bak »
попробуй задать маску "gamedata.db?", правда не знаю будет ли работать инно с такой маской

Cartmans
02-03-2010, 16:36
svensoft, мне нужен скрипт без наворотов))




© OSzone.net 2001-2012