A
aLLeXUs
Гость
PlayHard, что бы получить такую рамку как у каталистов нужно нарисовать Panel, и поверх него немного меньший Bevel. Получится вот такой эффект
procedure CompOnClick(Sender: TObject);
var
i: Integer;
begin
with WizardForm.ComponentsList do begin
for i:= 0 to ItemCount -1 do begin
case i of
1,5: Checked[i]:= Checked[9];
2,3,6,7: ItemEnabled[i]:= not Checked[9];
end;
end;
end;
end;
procedure InitializeWizard();
begin
with WizardForm.ComponentsList do begin
TreeViewStyle:= True;
OnClickCheck:= @CompOnClick;
CompOnClick(nil);
end;
end;[/SOURCE][/MORE]
В принципе - то же самое, но более современно :)
Я так понял что паковал внешним компрессором, то прогресс бар и не будет плавным если распаковываешь через ISArcExtract (IsDone.dll), так как не от чего отталкиваться чтобы двигать пб, а в конце 3 сек. это копирование данных из freearc.tmp в папку с игрой.Нужна помощь...
Не могу понять почему при распаковки через arc.ini прогресс бар реагирует тока в конце.
В том смысле что в конце распаковки тока прогресс бар промелькает до 100% сек за 3 и всё...
; Название игры (С AppId НЕ БУДЕТ РАБОТАТЬ!)
#define Name2 "Need For Speed: The RUN"
[Setup]
AppMutex={#Name2}
[code_]
// Сама процедура Mutex
var
Mutex: THandle;
function CreateMutex(lpMutexAttributes: Longint; bInitialOwner: BOOL; lpName: String): THandle; external 'CreateMutexW@kernel32.dll stdcall';
function ReleaseMutex(hMutex: THandle): BOOL; external 'ReleaseMutex@kernel32.dll stdcall';
function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall';
procedure SMutex;
begin
Mutex:= CreateMutex(0, False, '{#SetupSetting("AppMutex")}');
end;
\\ Твое сообщение
function InitializeSetup(): Boolean;
begin
if CheckForMutexes(ExpandConstant('{#SetupSetting("AppMutex")}')) then
begin
MsgBox('Уже запущена одна версия инсталлятора. Одновременный запуск запрещён', mbError,mb_Ok);
Exit;
end;
Result:= True;
end;
procedure InitializeWizard();
begin
SMutex;
end;
\\ Для IsDone добавить
if (CurStep=ssPostInstall) and ISDoneError then begin
ReleaseMutex(Mutex);
CloseHandle(Mutex);
Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', False);
end;
// Сама процедура Mutex
var
Mutex: THandle;
function CreateMutex(lpMutexAttributes: Longint; bInitialOwner: BOOL; lpName: AnsiString): THandle; external 'CreateMutexA@kernel32.dll stdcall';
function ReleaseMutex(hMutex: THandle): BOOL; external 'ReleaseMutex@kernel32.dll stdcall';
function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall';
procedure SMutex;
begin
Mutex:= CreateMutex(0, False, ExpandConstant('{#SetupSetting("AppMutex")}'));
end;
function InitializeSetup(): Boolean;
begin
Result:= not CheckForMutexes(ExpandConstant('{#SetupSetting("AppMutex")}'));
if not Result then
MsgBox('Уже запущена одна версия инсталлятора. Одновременный запуск запрещён', mbError,mb_Ok);
end;
procedure InitializeWizard();
begin
SMutex;
end;[/SOURCE][/SPOILER]
помню, что nik1967 сделал полностью прозрачный инсталл, поищи или спроси у него
ура, нашёл - лови (надеюсь, nik1967 не против)поискал везде где только знал, может сохранилась ссылочка у кого-нибудь?
Да мне не жалко - только тот скрипт заброшен и не доделан.ура, нашёл - лови (надеюсь, nik1967 не против)