Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Tco 03, да, это похоже на то, что мне нужно.
Буду пробовать, спасибо:)
dima.dmitrienko.71@fb
21-12-2013, 17:36
Всем привет вы бы не могли подсказать вот этот скрип можо сделать чтобы не только картинка вылезала а и описание??
Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
Compression=none
AppId=TheBestAppId
DisableWelcomePage=yes
DisableFinishedPage=yes
DisableDirPage=yes
DisableReadyPage=yes
[Components]
Name: hl2; Description: Half-Life 2; Flags: disablenouninstallwarning
Name: hl2\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: hl2\en; Description: English; Flags: disablenouninstallwarning exclusive
Name: ep1; Description: Half-Life 2 Episode One; Flags: disablenouninstallwarning
Name: ep1\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: ep1\en; Description: English; Flags: disablenouninstallwarning exclusive
Name: ep2; Description: Half-Life 2 Episode Two; Flags: disablenouninstallwarning
Name: ep2\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: ep2\en; Description: English; Flags: disablenouninstallwarning exclusive
Name: portal; Description: Portal; Flags: disablenouninstallwarning
Name: portal\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: portal\en; Description: English; Flags: disablenouninstallwarning exclusive
[Files]
Source: Wasteland_Scanner_con.bmp; Flags: dontcopy nocompression
Source: Strider_early2.bmp; Flags: dontcopy nocompression
Source: Cremator_poster.bmp; Flags: dontcopy nocompression
Source: Portal.bmp; Flags: dontcopy nocompression
[code ]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
const
UNDEF_INDEX = -777;
ALPHA_BLEND_LEVEL = 128; // max=Byte=255
WS_EX_LAYERED = $80000;
WS_EX_TRANSPARENT = $20;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
GWL_EXSTYLE = (-20);
var
InfoPic: TBitmapImage;
LastIndex: Integer;
TempPath: String;
PicForm: TForm;
type
COLORREF = DWORD;
function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall';
function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function SetFocus(hWnd: HWND): HWND; external 'SetFocus@user32.dll stdcall';
procedure ShowPicHint(const PicFilePath: String);
var
pt: TPoint;
begin
if not GetCursorPos(pt) then Exit;
InfoPic.Bitmap.LoadFromFile(PicFilePath);
try
with PicForm do
begin
SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height);
Show;
end;
finally
SetFocus(WizardForm.Handle);
end;
end;
procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
UndefPic: String;
begin
if Index = -1 then Exit;
if Index = LastIndex then Exit;
try
case TNewCheckListBox(Sender).ItemCaption[Index] of
'Half-Life 2': UndefPic := 'Wasteland_Scanner_con.bmp';
'Half-Life 2 Episode One': UndefPic := 'Strider_early2.bmp';
'Half-Life 2 Episode Two': UndefPic := 'Cremator_poster.bmp';
'Portal': UndefPic := 'Portal.bmp';
else
begin
LastIndex := UNDEF_INDEX;
PicForm.Hide;
Exit;
end;
end;
if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
ShowPicHint(TempPath + UndefPic);
finally
LastIndex := Index;
end;
end;
procedure CompOnMouseLeave(Sender: TObject);
begin
PicForm.Hide;
LastIndex := -1;
end;
procedure InitInfo();
begin
WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
TempPath := AddBackslash(ExpandConstant('{tmp}'));
LastIndex := UNDEF_INDEX;
PicForm := TForm.Create(WizardForm)
with PicForm do
begin
BorderStyle := bsNone;
FormStyle := fsStayOnTop;
InfoPic := TBitmapImage.Create(PicForm)
with InfoPic do
begin
Parent := PicForm;
AutoSize := True;
end;
end;
SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA);
end;
procedure InitializeWizard();
begin
InitInfo();
end;
ошибка runtime error (at 145:123) could not call proc
Кто знает чем лечить? у 1 человека только такое было.. остальные нормально запускают
Mat_y, у меня такое обычно бывает, если какой-то косяк с библиотекой. Но может возникать и из-за чего-то еще. Так что нужно больше информации:) В какой момент ошибка возникает? На какую сточку кода ругается?
На какую сточку кода ругается? »
:spy: Ошибка уже всё сама за себя сказала: (at 145:123) - строка 145 - символ 123
Так что нужно больше информации В какой момент ошибка возникает? На какую сточку кода ругается? »
Из 300 тысяч запускавших только у одного такая фигня. При компиляции проблем нет.
Ошибка уже всё сама за себя сказала: (at 145:123) - строка 145 - символ 123 »
спасибо. откуда считать начинать? просто так вообще попадаю на секцию Components.. а в коде еще полно выносок типа #include
откуда считать начинать? »
http://i5.imageban.ru/thumbs/2013.12.22/05f0fcc8a3b6010708fbc80bd75a4629.png (http://i5.imageban.ru/out/2013/12/22/05f0fcc8a3b6010708fbc80bd75a4629.png)
Dimon585h
22-12-2013, 21:32
Ребят, помогите пожалуйста, кто знает Pascal, как сделать движение шарика под углом.
В обычном паскале, чтобы надо было задавать ещё после запуска программы угол и начальную скорость шарика, и чтобы рисовалась траектория, надеюсь вы меня поняли, помогите пожалуйста.
Так тоже не понятно? »
Нет, не понятно... в таком случае мы попадаем на пустое место. Вообще вся 145 строка попадает на секцию COMPONENTS... где нечему ломаться... а 123 символ уходит далеко за пределы написанного... ошибка возникает уже на скомпилированном скрипте... я предпологаю, что в этом случае правильно начинать считать с секции CODE... и если считать оттуда, то как учитывать внешние секции CODE,которые вынесены в отдельный фаил через #include
то как учитывать внешние секции CODE »Пересобрать без модулей и дать тому человеку протестировать, для того чтоб узнать на каком месте в этот раз выпадет ошибка (at XXX:XXX). Полагаю после сборки, она может быть вызвана уже в другом месте. Да к тому же на сколько помню, у тебя в скрипте много дублей.
которые вынесены в отдельный фаил через #include »От того всегда не любил модульную структуру скрипта и стараюсь собирать полный скрипт.
Tco 03, прям просто КО. Извините:)
Но вообще говоря, когда я спрашивала про строчку, я имела ввиду именно строку, а не номер. Может где-то в истории это было раньше, а я пропустила, но тем не менее, сам скрипт я не видела.
Mat_y, а нельзя запустить это из отладчика? В этом случае оно стопорнется на строке с ошибкой и даже цветом эту строку выделит. Ну или если нельзя (я так понимаю, что ошибка не у тебя), то да, можно попробовать пересобрать без модулей и посмотреть.
я так понимаю, что ошибка не у тебя »
Shkutu, В том то и дело что не у него Из 300 тысяч запускавших только у одного такая фигня. При компиляции проблем нет. »
то да, можно попробовать пересобрать без модулей и посмотреть. »По хорошему там весь скрипт переписывать нужно.
diman_21Ru
24-12-2013, 15:00
Парни на 5.5.4 не работает
tuz-veta
24-12-2013, 21:02
можете помочь?
Какой функцией удалить все содержимое папки, в которую будет устанавливаться программа?
Парни на 5.5.4 не работает »Что значит не работает?
Если ты про расширенную версию говоришь, то её ещё не существует.
Есть только 5.5.1 (http://forum.oszone.net/post-2267176-1603.html)
Какой функцией удалить все содержимое папки »
Удалить перед установкой:
[InstallDelete]
Name: {app}; Type: filesandordirs
diman_21Ru
25-12-2013, 10:38
Парни что за ошибка procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea); неизвестный тип
habib2302
26-12-2013, 21:11
Доброе время суток.Возможно ли указать 2 компонент в командную строку для тихой установки?
Optitron
26-12-2013, 21:13
habib2302, вроде как /Components="название 2 компонента"
habib2302
26-12-2013, 21:19
/Components="название 2 компонента" »
я имел виду
/Components=Portable /Components=Ru
habib2302, Посмотри справку: "Прочая информация » Параметры командной строки инсталлятора".
/COMPONENTS="comma separated list of component names"
Меняет выбранные по умолчанию компоненты. В этом случае параметр командной строки указывает инсталлятору менять тип установки на Выборочный. If no custom type is defined, this parameter is ignored.
Only the specified components will be selected; the rest will be deselected.
If a component name is prefixed with a "*" character, any child components will be selected as well (except for those that include the dontinheritcheck flag). If a component name is prefixed with a "!" character, the component will be deselected.
This parameter does not change the state of components that include the fixed flag.
Например:
Deselect all components, then select the "help" and "plugins" components:
/COMPONENTS="help,plugins"
Например:
Deselect all components, then select a parent component and all of its children with the exception of one:
/COMPONENTS="*parent,!parent\child"
А вообще, /SAVEINF="filename" и /LOADINF="filename" рулят ;).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC