Войти

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


Страниц : 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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

insombia
29-07-2011, 23:39
Rikill это же 3D инсталл круто,картинка нормально отображается

bagrat
30-07-2011, 00:02
Rikill, вылазает http://s2.ipicture.ru/uploads/20110729/i4LRWdnP.jpg (http://s2.ipicture.ru/uploads/20110729/x5OQTznO.jpg)

может чего-то у меня нет7

Rikill
30-07-2011, 00:14
bagrat, это твой скрипт, я всего лишь пофиксил ошибки, эта ошибка потому что у тебя не рестулзовская версия
качаешь это http://rghost.ru/4978694 кидаешь в папку с инно содержимое папок в архиве Inno Setup_ANSI - FullVCL запускаешь файл iscc в папке с инно, потом это кидаешь в папку с инно http://narod.ru/disk/7868304001/InnoCompiler110319.rar.html а имеенно файлы из папки архива ANSI потом кидаешь в папку islanguages http://vadimsva.ucoz.org/Inno_Setup_E_rus.7z это из папки архива ANSi, запускаешь Compil32ex.exe под кнопкой закрытия нажми languages и выбери русский потом инструменты - настройки "ассоциировать с файлами .iss
всё!

Rikill
30-07-2011, 00:41
Neutron, будь повежливей, там ничего не вижу нигде росписи никакой, не нравится категорически сборка гнома.
Да, вроде нормальное отображение, только сверху и снизу, по краям, слишком много чёткости (завышена пикселизация). »
эт картинка такая, потом исправлю

bagrat
30-07-2011, 12:39
выполнил следующее скачал
http://rghost.ru/4978694 назову проще *
http://narod.ru/disk/7868304001/Inno...10319.rar.html **
http://vadimsva.ucoz.org/Inno_Setup_E_rus.7z *** далее

в папку с установленной инно сетап кидаем содержимое *, C:\Program Files\Inno Setup 5\InnoSetup_ANSI\FullVCL соглашаемся на замену файлов и запускаю файл iscc в папке FullVCL

в папку с установленной инно сетап кидаю содержимое ** только из папки ANSI следующие файлы: Compil32Ex.exe, Templates.dat , ISLanguages\*.lng

Из*** копируем файлы Russian_ansi.lng, Russian_unicode.lng в папку в ISLanguages

запускаем Compil32ex.exe ,отправить ярлык Compil32ex.exe на рабочий стол

ВОT теперь будет понятно всем

LinkOFF
30-07-2011, 13:55
Как сделать приоритет установки в инсталляторе(Высокий,обычный и низкий)

VinTagE
30-07-2011, 13:58
LinkOFF,
Тут смотри (http://forum.oszone.net/post-1688320-1737.html)
-----------------------------------

Или вот пример от troyan90 (http://forum.ru-board.com/profile.cgi?action=show&member=troyan90)
Скачать пример (http://rghost.ru/7854431)

LinkOFF
30-07-2011, 18:02
Помогите пожалуйста присоеденить скрипт для размещения окна установки в правом нижнем углу экрана
вот сам скрипт http://rghost.ru/16317291

ssv14
30-07-2011, 21:27
помогите плз, уже весь мозг вывернул, как из сформированного массива по маске файлов, в процедуре Recode..., удалять строку файла перед удалением самого файла?


[Setup]
AppName=Recode
AppVerName=Recode
OutputDir=.
OutputBaseFilename=Recode
DefaultDirName={pf}\Recode
AppendDefaultDirName=False
DisableDirPage=True


[Code]
var
Files: Array of String;
S: String;
n: Integer;

function StringToArray(Text, Cut: String): array of String;
var i, k: Integer;

begin
SetArrayLength(Result, 0);
if Cut = '' then Cut:= #1310; //если шаблон пуст, считаем переводы строк

Repeat k:=Pos(Cut,Text);
if k = 1 then begin Delete(Text, 1, Length(Cut)); CONTINUE
end;
SetArrayLength(Result, GetArrayLength(Result) +1);
i:=GetArrayLength(Result)-1;
if k = 0 then
Result[i]:=Text
else begin
Result[i]:= Copy(Text, 1, k -1);
Delete(Text, 1, Length(Result[i]) + Length(Cut));
end;
Until Length(Text) * k = 0;
end;

procedure FindFiles(FromDir: String; Mask: String);
var FindResult: Boolean;
FSR, DSR: TFindRec;

begin
FindResult:=FindFirst(AddBackslash(FromDir)+Mask, FSR);
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin
S:= S + AddBackslash(fromDir) + FSR.Name +'|';
end;
FindResult:= FindNext(FSR);
end;

FindResult:= FindFirst(AddBackslash(FromDir)+ '*.*', DSR);
while FindResult do begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then begin
FindFiles(AddBackSlash(FromDir)+ DSR.Name, Mask);
end;
FindResult:= FindNext(DSR);
end;

FindClose(FSR);
FindClose(DSR);
end;


//-------Начало----распаковка OGG------------------------------------------------
procedure RecodeOgg;
var ResultCode: integer; CurFile: String;

begin
FindFiles(ExpandConstant('{app}\hl2\sound\'), '*.ogg'); //Находим все файлы по маске, в выбранной папке
Files:= StringToArray(S, '|'); //Переводим в массив
WizardForm.ProgressGauge.Max:= GetArrayLength(Files)-1; //Получаем кол-во файлов

for n:=(GetArrayLength(Files)-1) downto 0 do begin
CurFile:= Files[n];
StringChange(CurFile, AddBackslash(ExpandConstant('{app}\hl2\sound\')), '');
Exec(ExpandConstant('{app}\hl2\sound\oggdec.exe'), '-Q '+ AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode); //Для каждого файла запускаем декодер
DeleteFile(Files[n]); //Удаляем ненужный файл
WizardForm.FilenameLabel.Caption:= Files[n]; //Двигаем прогрессбар
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;
end;

DeleteFile(ExpandConstant('{app}\hl2\sound\oggdec.exe'));
end;
//-------Конец----распаковка OGG------------------------------------------------



//-------Начало----распаковка WV ------------------------------------------------
procedure RecodeWV;
var ResultCode: integer; CurFile: String;

begin
FindFiles(ExpandConstant('{app}\hl2\sound\'), '*.wv'); //Находим все файлы по маске, в выбранной папке
Files:= StringToArray(S, '|'); //Переводим в массив
WizardForm.ProgressGauge.Max:= GetArrayLength(Files)-1; //Получаем кол-во файлов

for n:=(GetArrayLength(Files)-1) downto 0 do begin
CurFile:= Files[n];
StringChange(CurFile, AddBackslash(ExpandConstant('{app}\hl2\sound\')), '');
Exec(ExpandConstant('{app}\hl2\sound\wvunpack.exe'), '-t -q -y '+ AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode); //Для каждого файла запускаем декодер
DeleteFile(Files[n]); //Удаляем ненужный файл
WizardForm.FilenameLabel.Caption:= Files[n]; //Двигаем прогрессбар
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;
end;

DeleteFile(ExpandConstant('{app}\hl2\sound\wvunpack.exe'))
end;
//-------Конец----распаковка WV ------------------------------------------------



procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
WizardForm.ProgressGauge.Position := 0;
WizardForm.StatusLabel.Caption := 'Decompressing audio files, please wait...';
RecodeOgg;
WizardForm.ProgressGauge.Position := 0;
WizardForm.StatusLabel.Caption := 'Decompressing audio files, please wait...';
RecodeWV;
end;
end;

ilyhakz001
30-07-2011, 22:39
Можете помочь, когда устанавливаю выдает ошибку: не чего не найденно для if not IS7ZipExtract вот скрипт (http://files.gw.kz/ep10jzjjug.html)
И еще установка идет до 300%! Как это исправить?

insombia
30-07-2011, 22:45
ilyhakz001 это значит что неуказано файла 7-zip который должен распаковываться в скрипте

ilyhakz001
30-07-2011, 23:29
insombia »
я все указывал

Rikill
30-07-2011, 23:41
ilyhakz001, а инно говорит об обратном
[hr]
имеется собственный прогресс бар, на него накладывается текстура, как сделать чтобы проценты ISDone были поверх прогресс бара??
[hr]
Есть идея собрать эквалайзер на bass.dll, не очень получается, пока нарыл инфу на дельфи, но дельфи яя не знаю как в инно перенести, вот код:

var
FileStream: HSTREAM; // handle воспроизводящегося потока
FX: HFX; // handle добавляемого эффекта
procedure TForm1.TrackBar1Change(Sender: TObject);
var
PE: BASS_DX8_PARAMEQ;
begin
BASS_ChannelRemoveFX(FileStream, FX); // чтобы убрать предыдущую настройку
FX := FBASS_ChannelSetFX(FileStream, BASS_FX_DX8_PARAMEQ, 1);
PE.fCenter := 80; // частота регулируемой полосы (в герцах, от 80 до 16000)
PE.fGain := TrackBar1.Position; // задаваемое значение (от -15 до 15)
BASS_FXSetParameters(FX, @PE);
end;
буду благодарен за помощ.

Shegorat
31-07-2011, 08:30
Rikill
:lamer: Ты бы хоть иногда в справку заглядывал. В данном случае в справку, идущую с bass.dll.


[Setup]
AppName=MyApp
AppVername=MyApp
DefaultDirname={pf}\MyApp

[ code]
type
HSTREAM = DWORD;
HFX = DWORD;
BASS_DX8_PARAMEQ = record
fCenter: single;
fBandwidth: single;
fGain: single;
end;

const
BASS_FX_DX8_PARAMEQ = 7;

function BASS_ChannelSetFX(handle, type_: DWORD; priority: LongInt): HFX; external 'BASS_ChannelSetFX@files:bassdll.dll stdcall';
function BASS_ChannelRemoveFX(handle: DWORD; fx: HFX): BOOL; external 'BASS_ChannelRemoveFX@files:bassdll.dll stdcall';
function BASS_FXSetParameters(handle: HFX; par: BASS_DX8_PARAMEQ): BOOL; external 'BASS_FXSetParameters@files:bassdll.dll stdcall';
function BASS_FXGetParameters(handle: HFX; var par: BASS_DX8_PARAMEQ): BOOL; external 'BASS_FXGetParameters@files:bassdll.dll stdcall';
function BASS_FXReset(handle: HFX): BOOL; external 'BASS_FXReset@files:bassdll.dll stdcall';

var
FileStream: HSTREAM; // handle воспроизводящегося потока
FX: HFX; // handle добавляемого эффекта
TrackBar1: TTrackBar;

procedure TrackBar1Change(Sender: TObject);
var
PE: BASS_DX8_PARAMEQ;
begin
BASS_ChannelRemoveFX(FileStream, FX); // чтобы убрать предыдущую настройку
FX := BASS_ChannelSetFX(FileStream, BASS_FX_DX8_PARAMEQ, 1);
PE.fCenter := 80; // частота регулируемой полосы (в герцах, от 80 до 16000)
PE.fGain := TrackBar1.Position; // задаваемое значение (от -15 до 15)
BASS_FXSetParameters(FX, PE);
end;


Как-то так. Но у функций BASS_FXGetParameters, BASS_FXSetParameters, вторым параметром стоит Pointer, т.е. указатель на область памяти содержащей структуру, а не сама структура, так что хз как будет работать.

ilyhakz001
31-07-2011, 11:12
Ну тогда хотябы как убрать 300%

vint56
31-07-2011, 11:17
ilyhakz001, ты читал справку по isdone

Описание режимов работы библиотеки


Для осуществения работоспособности библиотеки существует 2 вида определения процентных соотношений между операциями на всем прогрессбаре:

Автоматическая расстановка процентных соотношений в операциях.
При автоматической расстановке необходим тестовый проход для определения времени выполнения каждой операции относительно других.
Для включения данного режима необходимо заполнить вторые значения всех функций извлечения архивов нулями.
Краткая инструкция:
а) первым делом убедитесь, что в начале скрипта закомментирована строка

#define records
(т.е. необходимо поставить точку с запятой в начале этой строки);
б) компилим проект и запускаем на установку. Это и будет нашим тестовым проходом. Все операции должны дойти до конца и завершиться удачно. Прогрессбар будет зашкаливать и все компоненты будут извлечены вне зависимости от того выбраны они, или нет. Все так и должно быть!
в) после тестового прогона в указанной папке создастся файл records.inf (имя и путь назначается в процедуре инициализации. О ней см. "подробное описание функций" ниже), его необходимо добавить в проект, раскомметировав, или добавив в начале скрипта строку:

#define records

Так же стоит отметить, что если сам скрипт находится в папке отличной от той, в которую компилится проект (например в скрипте NFS:Undercover откомпиленный файл сохраняется в Output\setup.exe), то records.inf создастся в папке с setup.exe и его необходимо будет перенести непосредственно к скрипту, или же подправить в секции [Files] его истинное расположение, например:

#ifdef records
Source: Output\records.inf; DestDir: {tmp}; Flags: dontcopy
#endif
г) снова откомпилить проект.
После этого инсталлер готов к работе.
При запуске процесс выполнения операций будет равномерно и корректно отображаться на прогрессбаре.




Ручная расстановка процентов на каждую операцию.
При ручной расстановке если в проекте множество операций, все расчеты необходимо производить вручную. Т.е. сумма процентов всех выполненных операций должна равняться 100%, иначе корректного отображения на прогрессбаре не будет.
Для включения данного режима необходимо заполнить вторые значения всех функций извлечения архивов значениями процентов, отличными от 0 (числа могут быть дробными).
При групповой распаковке архивов по маске (типа *.pcf) для операции задается общий процент на все распаковываемые файлы данной командой, а уж каждый из найденных файлов будет разбивать указанный кусок прогрессбара еще на части пропорциональные размерам файлов. Например строка:

if not ISArcExtract (0, 100, ExpandConstant('{src}\*.arc'), ExpandConstant('{app}'), false, '', '', '') then break;
...
распакует все *.arc архивы из {src} в {app}, при чем весь прогрессбар будет поделен на кусочки пропрорциональные размерам архивов. В общем тут все так же как в скрипте распаковки FreeArc.iss и ему подобным. Таким образом при распаковке нескольких архивов одного типа проще пользоваться ручной расстановкой, т.к. отличие расперделения процентов от автоматической будет совсем небольшим, но за то не требуется тестовый проход.
Вот некоторые правила, которые неоходимо выполнять при ручной расстановке:
а) сумма процентов учитывая ветвления (использование компонентов, условий) в скрипте должна составлять 100;
б) у компонентов, для которых возможен выбор только одного из нескольких, должны быть одинаковые значения процентов;
в) НЕЛЬЗЯ использовать компоненты, которые можно выбирать одновременно с другими в одной группе (например несколько рядом стоящих компонент без флага exclusive), потому что сумма процентов при различном выборе пользователя может отличаться от 100.



Примечание
Стоит упомянуть функцию ISExec, в которой третьим параметром задается время выполнения текущей операции. При автоматической расстановке время на операцию расчитывается приближенное к реальному (при условии, что данная операция не первая, иначе время выполнения берется равное тому, которое было в тестовом проходе). При ручной же расстановке: если машина пользователя быстрее обработает данную операцию, чем расчитано автором инсталла, то прогресс будет немного скачкообразным в моменты переходов между функциями распаковки; если машина пользователя медленнее - прогресс наоборот будет задерживаться между операциями.

insombia
31-07-2011, 13:32
Как сделать чтобы установку нельзя было продолжить пока не выберется компонент?

Rikill
31-07-2011, 14:13
Shegorat, не создаётся

Bit of perfect
31-07-2011, 14:14
помогите пожалуйста!
Как сделать проверку сист требований?

insombia
31-07-2011, 14:19
Bit of perfect http://forum.ru-board.com/topic.cgi?forum=5&topic=35146&start=1299&limit=1&m=6#1




© OSzone.net 2001-2012