Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
insombia
29-07-2011, 23:39
Rikill это же 3D инсталл круто,картинка нормально отображается
Rikill, вылазает http://s2.ipicture.ru/uploads/20110729/i4LRWdnP.jpg (http://s2.ipicture.ru/uploads/20110729/x5OQTznO.jpg)
может чего-то у меня нет7
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
всё!
Neutron, будь повежливей, там ничего не вижу нигде росписи никакой, не нравится категорически сборка гнома.
Да, вроде нормальное отображение, только сверху и снизу, по краям, слишком много чёткости (завышена пикселизация). »
эт картинка такая, потом исправлю
выполнил следующее скачал
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,
Тут смотри (http://forum.oszone.net/post-1688320-1737.html)
-----------------------------------
Или вот пример от troyan90 (http://forum.ru-board.com/profile.cgi?action=show&member=troyan90)
Скачать пример (http://rghost.ru/7854431)
Помогите пожалуйста присоеденить скрипт для размещения окна установки в правом нижнем углу экрана
вот сам скрипт http://rghost.ru/16317291
помогите плз, уже весь мозг вывернул, как из сформированного массива по маске файлов, в процедуре 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 »
я все указывал
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%
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
Как сделать чтобы установку нельзя было продолжить пока не выберется компонент?
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.