PDA

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

0.07
18-03-2011, 15:23
"Error: There is not enough space on the first disk to copy all of the required files."
как исправить эту ошибку? подскажите плз

R.i.m.s.k.y.
18-03-2011, 15:55
Не могу вкурить, как сделать на панели секции [Tasks] элемент так, чтобы галка стояла и нельзя было снять.

Затык - я не могу подобрать названия элементов, для секции компонентов я делаю так
WizardForm.ComponentsList.ItemEnabled [WizardForm.ComponentsList.Items.IndexOf (ExpandConstant ('{cm:abcd}'))] := False;
по названию компонента находится он сам и отключается.

А для секции [Tasks] как сделать искомое (чтобы галка на задаче стояла и не снималась)???
Спасибо!

Serega
18-03-2011, 17:58
как исправить эту ошибку? подскажите плз »
Увеличить объём диска или купить новый винчестер... именно об этом говорит ваша ошибка...
Ну а если серьёзно, то нужно просто добавить завершающий знак ';' в самый конец 358 строки.

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


[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma2/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Tasks]
Name: desktopicon; Description: Create a &desktop icon; GroupDescription: Additional icons:
Name: desktopicon\common; Description: For all users; GroupDescription: Additional icons:; Flags: exclusive
Name: desktopicon\user; Description: For the current user only; GroupDescription: Additional icons:; Flags: exclusive unchecked
Name: quicklaunchicon; Description: Create a &Quick Launch icon; GroupDescription: Additional icons:; Flags: unchecked
Name: associate; Description: &Associate files; GroupDescription: Other tasks:

[Code]
procedure TasksListClickCheck(Sender: TObject);
var
Item: Integer;
begin
Item := WizardForm.TasksList.Items.IndexOf('&Associate files');
if WizardForm.TasksList.ItemIndex = Item then
WizardForm.TasksList.Checked[item] := True;
end;

procedure InitializeWizard();
begin
WizardForm.TasksList.OnClickCheck := @TasksListClickCheck;
end;

0.07
18-03-2011, 20:42
у меня выдает такую ошибку:" Disk spanning must be enabled in order to create an installation larger than 2100000000 bytes in size."
я так понимаю это означает, что запрещено использовать в инсталляторе файлы больше, чем 2Гб.
как можно это исправить?

Gnom_aka_Lexander
18-03-2011, 21:41
0.07, пользуйся гуглом (http://translate.google.ru/translate_t?client=opera&rls=ru&q=Disk+spanning+must+be+enabled+in+order+to+create+an+installation+larger+than+2100000000+bytes+in+s ize.&oe=utf-8&channel=suggest&um=1&ie=UTF-8&sa=N&hl=ru&tab=wT#), это означает, что нельзя делить инсталл на части больше двух гигабайт. Пропиши в секцию [Setup]
DiskSpanning=true
DiskSliceSize=1566000000

actavir
21-03-2011, 09:30
Народ подскажите пожалуйста можно ли сделать так чтобы inno setup создавала только .exe файлы без .bin файлов, ну и конечно же чтобы все файлы включённые были в этом .exe. А то хотел сделать маленький инсталятор, одним файлом, но не знаю как, а несколько файлов не удобно заливать
Выручите плиз!!!!!!!!!!




------------
Хорошая игр - это русифицированная игра!!! (http://play-game-ru.ucoz.ru)

Habetdin
21-03-2011, 11:15
actavir, "поиск по теме рулит http://www.yaplakal.com/html/emoticons/rulez.gif"
[Setup]
DiskSpanning=false

ryabis
21-03-2011, 11:48
Вопрос следующий:
Как в скрипте вызвать функцию из WinAPI? Функция GetFileVersionInfo.
Знаю, что в Делфях это делается через подключения в uses модуля Windows.
Как это сделать в InnoSetup???

Krinkels
21-03-2011, 12:56
ryabis
А в инно просто вызываешь данную функцию из длл. Примерно так:
function GetFileVersionInfo(lptstrFilename: PAnsiChar; dwHandle, dwLen: DWORD; lpData: Pointer): BOOL; external 'GetFileVersionInfoA@version stdcall delayload'

ryabis
21-03-2011, 14:46
Krinkels, бьюсь уже весь день... Как мне в Inno объявить функцию VerQueryValue и системную ф-ю AllocMem

function AllocMem( Size: Cardinal ): Poiner;

BOOL WINAPI VerQueryValue(
__in LPCVOID pBlock,
__in LPCTSTR lpSubBlock,
__out LPVOID *lplpBuffer,
__out PUINT puLen
);

C остальным, вроде, разобрался. )))

Krinkels
21-03-2011, 19:17
ryabis
function VerQueryValue(pBlock: Pointer; lpSubBlock: PAnsiChar; var lplpBuffer: Pointer; var puLen: UINT): BOOL; external 'VerQueryValueA@version stdcall delayload'
А первую наверное придется в ручную писать, кусок из дельфи:
function AllocMem(Size: Cardinal): Pointer;
begin
GetMem(Result, Size);
FillChar(Result^, Size, 0);
end;

Serega
21-03-2011, 19:27
Как в скрипте вызвать функцию из WinAPI? Функция GetFileVersionInfo.»
Многими системными функциями на данный момент, воспользоваться просто не возможно, т.к. проблема в том, что Pointer'a в Inno Setup нет.

shidow
22-03-2011, 06:11
Подскажите как можно сделать http ссылку в левом нижнем углу инстала?

ryabis
22-03-2011, 11:09
Многими системными функциями на данный момент, воспользоваться просто не возможно, т.к. проблема в том, что Pointer'a в Inno Setup нет. »
когда делал function GetFileVersionInfo(...; lpData: Pointer) заменил Pointer на PСhar и это сработало. :yes:

Serega
22-03-2011, 12:24
заменил Pointer на PСhar и это сработало »
Да, я иногда так делаю, но это работает не всегда, т.к. PСhar это указатель на строку, а если нужно что-то другое...

P.S.
Когда что-то сильно надо заказчику, т.е. обязательно нужно сделать какую-то проверку перед установкой его программы, но Inno Setup это не поддерживает, то мне проще написать доп. dll и быть уверенным, что это корректно отработает на всех системах.
Многие вещи можно сделать в Inno, но к сожалению не всё.

0.07
22-03-2011, 12:52
подскажите как можно сделать, что бы inno распаковал архивы paq9

Krinkels
22-03-2011, 13:20
0.07
Надеюсь ты не рапак делаешь? А вообще самое простое это либо через секцию [run], либо пихаешь в батник строку(ки) для распаковки и запускаешь его через секцию [run]

duxa
22-03-2011, 13:59
архивы paq9
Ух...и сколько это распаковываться будет?

Krinkels
22-03-2011, 14:38
Немножко оффтопика.
duxa
Ух...и сколько это распаковываться будет? »
Неделю, не меньше. А вообще при слове Paq9 сразу вспоминается KopeRip или как то так его звали, чей репак распаковывался 10 часов. Ох и наслушался он тогда в свой адрес лестных слов.
Пардон за :off:

duxa
22-03-2011, 14:47
Вопрос был задан 0.07, что бы он понял, что это ни к чему хорошему не приведет. Ну да ладно)
http://forum.oszone.net/images/smilies/new/offtopic.gif
Ммм...помню, starcraft beta с временем установки от 3 до 10 ч при весе 1Гб с хвостиком)




© OSzone.net 2001-2012