Войти

Показать полную графическую версию : [архив] Скрипты 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

R.i.m.s.k.y.
17-08-2010, 17:13
зачем для каждой страницы писать одно и то же, нужно просто было задать для всех страниц это действие »
Потихоньку добавлял чтобы вычислить какое окно отсвечивает.

маркузяка
17-08-2010, 19:53
есть такие инсталлы, на странице приветствия в нижнем левом углу типа кнопка "инфо" или что то в этом роде, при на жатии на которую выводится заданное сообщение. я смотрел в сборнике скриптов в шапке, там есть нечто подобное но там на кнопку накладывается текстура. как сделать без текстуры, т.е простая кнопка, как далее, назад и т.п.?

SkarM
17-08-2010, 23:03
Подскажите пожалуйста скрипт, который будет удалять папку со всем содержимым перед распаковкой файлов.

R.i.m.s.k.y.
18-08-2010, 08:27
Подскажите пожалуйста скрипт, который будет удалять папку со всем содержимым перед распаковкой файлов »
первый способ: в коде

[InstallDelete]
Name: {sd}\Arc\*; Type: filesandordirs
Name: {pf}\IrfanView\*; Type: filesandordirs
Name: {sd}\WinRar\*; Type: filesandordirs
Name: {userprograms}\WinRar\*; Type: filesandordirs

второй способ - в Code

[_Code]
Function InitializeSetup: Boolean;
Begin
Exec('cmd.exe', ' /c del /f /q ' + ExpandConstant('{sys}\r_server.exe'),ExpandConstant('{sys}'),SW_HIDE,ewWaitUntilTerminated,res);
Result := True;
end;

R.i.m.s.k.y.
18-08-2010, 09:02
Мои вопросы:

1. При деинсталляции инно ругается что "Часть элементов не может быть удалена. Вы можете удалить их самостоятельно". Как их вычислить? глазами прошелся - нету файлов, папки только пустые.

2. В списке компонентов не выводится размер некоторых подкомпонентов.

[Setup]
ShowComponentSizes=True

[Components]
Name: VirtualDub; Description: VirtualDub 1.9.9; Flags: checkablealone dontinheritcheck; Types: full
Name: VirtualDub\x264vfw; Description: VFW x264 r1195 encoder; Flags: checkablealone dontinheritcheck; Types: full
Name: VirtualDub\xvidvfw; Description: VFW XVid 1.2.2 encoder; Flags: checkablealone dontinheritcheck; Types: full

[Files]
Components: VirtualDub\x264vfw; Source: CodeRim\CodeRim\vfw\x264\x264vfw.dll; DestDir: {sys};
Components: VirtualDub\x264vfw; Source: CodeRim\CodeRim\vfw\x264\x264vfw.ico; DestDir: {sys};

Где грабли?

Serega
18-08-2010, 09:29
При деинсталляции инно ругается что »
значит действительно, остаются какие-то файлы
глазами прошелся - нету файлов, папки только пустые. »
ну допустим пустых папок быть не может, т.к. вы устанавливаете:
Components: VirtualDub\x264vfw; Source: CodeRim\CodeRim\vfw\x264\x264vfw.dll; DestDir: {sys}; »
т.е. в системную папку, а там куча файлов ;)
видимо зависает какая-то dll'ка, т.е. её не даёт удалить какой-то процесс или сама система. Внимательней посмотрите в {sys}.
Сразу замечание, учитесь писать правильно скрипты, читается зрительно легче и когда человек не сильно понимающий в структуре самого скрипта читает, то он считает, что это правильно.
В данном случае я говорю о секции [Files], т.е. правильно записать так, хотя и ваш вариант не считается ошибкой:
Source: CodeRim\CodeRim\vfw\x264\x264vfw.dll; DestDir: {sys}; Components: VirtualDub\x264vfw;

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

маркузяка
18-08-2010, 10:13
мне поможет кто нить?

R.i.m.s.k.y.
18-08-2010, 10:20
В данном случае я говорю о секции [Files], т.е. правильно записать так, хотя и ваш вариант не считается ошибкой: »
Длинные строчки у меня на монике 1920*1080 не помещаются, поэтому Components ; Check ; добавляю в начале строки - так очень удобно смотреть что к чему относится, не надо постоянно прокручивать влево-вправо

Скрин компонентов без размера
http://rghost.ru/2372646/thumb.png (http://rghost.ru/2372646.view)
Кусок скрипта с этими "безвесовыми" компонентов выше.
Serega
А к чему еще претензии по написанию скриптов? или посты неправильно оформляю? Укажите, я исправлюсь.

Serega
18-08-2010, 16:42
не надо постоянно прокручивать влево-вправо »
да это я прекрасно понимаю... я даже знал это до вашего ответа ;)
А к чему еще претензии по написанию скриптов? »
это ни в коем случае не претензия... :) ладно, проехали...
Кусок скрипта с этими "безвесовыми" компонентов выше. »
здесь надо подумать...

мне поможет кто нить? »
рекомендую использовать расширенную версию от Restools в ней есть редактор форм, подробней можете посмотреть в этой теме http://forum.oszone.net/showthread.php?p=1201499#post1201499 там в шапке темы есть инструкция и ссылка.

маркузяка
18-08-2010, 21:26
кнопку то я создал в WizardForm Designer название ей дал, а вот как заставить при нажатии показывать сообщение я не знаю. я пробовал сделать нечто подобное скрипту из архива в шапке темы, но кнопки почему то вобще нет на первой странице

маркузяка
18-08-2010, 23:08
все, сделал я кнопку путем слепливания секции Code, той что делает редактор форм с той что была в готовом скрипте из архива

[Setup]
AppName=TestButton
AppVerName=TestButton
DefaultDirName=C:\TestButton

[Code]
procedure TestButtonOnClick(Sender: TObject);
begin
MsgBox('инфо!', mbInformation, MB_OK)
end;

procedure InitializeWizard();
var
NewButton1: TNewButton;

begin
NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do begin
Left:=40
Top:=330
Width:=81
Height:=22
Cursor:=crHand
OnClick:=@TestButtonOnClick
Parent:=WizardForm
Caption := 'Инфо';
end
end;

nik1967
19-08-2010, 00:24
маркузяка,
Caption := 'Инфо;
забыл ' поставить:
Caption := 'Инфо';

R.i.m.s.k.y.
19-08-2010, 08:25
здесь надо подумать »
Ошибка тут:

Source: CodeRim\CodeRim\vfw\x264\x264vfw.dll; DestDir: {sys}; BeforeInstall: ChangeCaption('Установка x264vfw'); Flags: ignoreversion recursesubdirs createallsubdirs setntfscompression uninsrestartdelete 32bit; Components: VirtualDub\x264vfw; Check: (not IsWin64);
Source: CodeRim\CodeRim\vfw\x264\x264vfw.ico; DestDir: {sys}; BeforeInstall: ChangeCaption('Установка x264vfw'); Flags: ignoreversion recursesubdirs createallsubdirs setntfscompression uninsrestartdelete 32bit; Components: VirtualDub\x264vfw; Check: (not IsWin64);
Source: CodeRim\CodeRim\vfw\x264\x264vfw.dll; DestDir: {syswow64}; BeforeInstall: ChangeCaption('Установка x264vfw'); Flags: ignoreversion recursesubdirs createallsubdirs setntfscompression uninsrestartdelete 64bit; Components: VirtualDub\x264vfw; Check: IsWin64;
Source: CodeRim\CodeRim\vfw\x264\x264vfw.ico; DestDir: {syswow64}; BeforeInstall: ChangeCaption('Установка x264vfw'); Flags: ignoreversion recursesubdirs createallsubdirs setntfscompression uninsrestartdelete 64bit;Components: VirtualDub\x264vfw; Check: IsWin64;

если убрать либо Check: (not IsWin64);, либо Check: IsWin64, то размер компонентов отображается, но это неправильно. Вопрос: как обойти такой недосмотр со стороны инно? Пока идея только копирнуть эти файлики в {tmp} и оттуда кодом в требуему папку. Удаление делать через [UninstallDelete].

Serega
19-08-2010, 08:58
Пока идея только копирнуть эти файлики в {tmp} и оттуда кодом в требуему папку »
Я думаю причина в другом, т.е. вы указываете и флагами и параметром Check проверку на какую систему устанавливаются те или иные файлы. Вполне возможно, что при двойной проверке происходит какой-то глюк, уберите флаги 32bit и 64bit, думаю в таком случае всё решиться.

P.S.
Для лучшего сжатия попробуйте добавить флаги:
sortfilesbyextension sortfilesbyname

R.i.m.s.k.y.
19-08-2010, 09:04
уберите флаги 32bit и 64bit »
тогда копируются не в тот system и как кодек не работает

Еще, почему мы не добавить в шапку темы ссылки на скачивание дистров Inno, ISTool, Inno Preprocessor и т.п.?

маркузяка
19-08-2010, 09:17
nik1967, уже поставил, хз как она исчезла но в моем скрипте она есть

Serega
19-08-2010, 09:27
тогда копируются не в тот system и как кодек не работает »
сделайте тогда так, т.е. вынесите IsWin64 в отдельную функцию, т.е.:

function GetSys: Boolean;
begin
Result := IsWin64;
end;

а уже в Check указываете эту функцию, т.е. Check: GetSys и Check: not GetSys
почему мы не добавить в шапку темы ссылки на скачивание дистров Inno, ISTool, Inno Preprocessor и т.п.? »
они есть в этой теме : Inno Setup. Прочие вопросы (http://forum.oszone.net/showthread.php?p=1201499#post1201499)
Скоро всё равно будет новая тема, в ней я думаю объединю эти две.

R.i.m.s.k.y.
19-08-2010, 09:30
а уже в Check указываете эту функцию, т.е. Check: GetSys и Check: not GetSys »
не вижу смысла такой подстановки, а вот в DestDir: {code:getsyspath} можно подставить, где getsyspath возвращает путь system32/syswow64 в зависимости от ОС

Maks23zr
19-08-2010, 09:35
У меня вылезла ошибка
http://s09.radikal.ru/i182/1008/97/6f648b9e53d2t.jpg (http://radikal.ru/F/s09.radikal.ru/i182/1008/97/6f648b9e53d2.png.html)
Как мне быть?

R.i.m.s.k.y.
19-08-2010, 10:06
они есть в этой теме : Inno Setup. Прочие вопросы »
Ставил оттуда, после установки перестал работать скрипт, Ultimate test, пришлось просить пару страниц назад папку инно.




© OSzone.net 2001-2012