Скрипты Inno Setup. Помощь и советы [часть 5]
-
Ivan_009
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Как наложить кнопки свернуть и закрыть через ботву...Подскажите кто знает...
-
Johny777
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Цитата Respin:
На кустомной кнопки отмены прописываю: FStream.Free; WizardForm.Close;
Если во всей установки: Confirm:= False; то всё просто замечательно! Но если: Confirm:= True; ругается на эту строчку: FStream.WriteBuffer(fBuf, lpdwNumberOfBytesRead); Возможно ли как-то откатить установку без ошибок, но с живым Confirm?
Respin, имхо, форму не нужно закрывать. В процедуре DownloadFile находите строчки и дописываете (допустим, что кастомная кнопка это CancelButton):
Код:
Обработчик OnClick кнопки:
Код:
Цитата SatHan:
ответьте пожалуйста на вопрос. как мне сделать чтоб я на кнопочку нажал и ключ добавился?
SatHan,
Код:
Цитата AlexLAN:
Прошу людей с прямыми руками (не такими как у меня ) помочь довести до ума
AlexLAN, функция должна возвращать результат, поэтому добавьте:
Код:
На кустомной кнопки отмены прописываю: FStream.Free; WizardForm.Close;
Если во всей установки: Confirm:= False; то всё просто замечательно! Но если: Confirm:= True; ругается на эту строчку: FStream.WriteBuffer(fBuf, lpdwNumberOfBytesRead); Возможно ли как-то откатить установку без ошибок, но с живым Confirm?
Скрипты Inno Setup. Помощь и советы [часть 5]
Respin, имхо, форму не нужно закрывать. В процедуре DownloadFile находите строчки и дописываете (допустим, что кастомная кнопка это CancelButton):
Код:
Код: Выделить всё
while (InternetQueryDataAvailable(hFile, lpdwNumberOfBytesAvailable, 0, 0) and (lpdwNumberOfBytesAvailable > 0)) do
begin
if CancelButton.Cancel then Exit;
SetArrayLength(lpBuffer, RoundDword(lpdwNumberOfBytesAvailable));
...
finally
Timer.Enabled := False;
FStream.Free;
ProgressPage.Hide;
CancelButton.Cancel := False;
end;Обработчик OnClick кнопки:
Код:
Код: Выделить всё
procedure CancelButtonOnClick(Sender: TObject);
begin
TButton(Sender).Cancel := True;
end;Цитата SatHan:
ответьте пожалуйста на вопрос. как мне сделать чтоб я на кнопочку нажал и ключ добавился?
Скрипты Inno Setup. Помощь и советы [часть 5]
SatHan,
Код:
Код: Выделить всё
procedure NewButton1Click(Sender: TObject);
begin
RegWriteStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Application_is1', 'QuietUninstallString', ExpandConstant('"{uninstallexe}" /SILENT'));
end;Цитата AlexLAN:
Прошу людей с прямыми руками (не такими как у меня ) помочь довести до ума
Скрипты Inno Setup. Помощь и советы [часть 5]
AlexLAN, функция должна возвращать результат, поэтому добавьте:
Код:
Код: Выделить всё
function CutString(CutStr: String): String;
begin
Delete(CutStr, 1, 2);
Result := CutStr;
end;-
vint56
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Как наложить кнопки свернуть и закрыть через ботву...Подскажите кто знает...
http://rghost.ru/40324331
-
nik1967
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Ivan_009, vint56,
Код:
а так можно без InnoCallback.dll (на расширенной версии)
Код:
Код: Выделить всё
#include "botva2.iss"
#define CloseBtnPic "closebtn.png"
#define MinimizeBtnPic "minimizebtn.png"
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
SolidCompression=yes
Compression=lzma2/ultra64
[Files]
Source: Files\*; DestDir: "{tmp}"; Flags: dontcopy sortfilesbyextension
[ Code]
var
hMinimizeBtn,
hCloseBtn: HWND;
function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
Result:=True;
end;
procedure CloseBtnClick(hBtn:HWND);
begin
WizardForm.Close;
end;
procedure MinimizeBtnClick(hBtn:HWND);
begin
SendMessage(WizardForm.Handle,$0112,61472,0);
end;
procedure InitializeWizard;
begin
ExtractTemporaryFile('{#CloseBtnPic}');
ExtractTemporaryFile('{#MinimizeBtnPic}');
with WizardForm do begin
BorderStyle:=bsNone;
Bevel.Hide;
InnerNotebook.Hide;
OuterNotebook.Hide;
Width:=640;
Height:=240;
Position:=poScreenCenter;
Color := cl3DDkShadow;
end;
hCloseBtn:=BtnCreate(WizardForm.Handle,556,5,22,22,ExpandConstant('{tmp}')+'\{#CloseBtnPic}',3,False);
BtnSetEvent(hCloseBtn,BtnClickEventID,CallbackAddr('CloseBtnClick'));
hMinimizeBtn:=BtnCreate(WizardForm.Handle,529,5,22,22,ExpandConstant('{tmp}')+'\{#MinimizeBtnPic}',3,False);
BtnSetEvent(hMinimizeBtn,BtnClickEventID,CallbackAddr('MinimizeBtnClick'));
end;
procedure DeinitializeSetup;
begin
gdipShutdown;
end;-
HElmo
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Можно мне пожалуйста пример заполнение массива записей именами файлов найденными по маске с последующим поиском имён но уже из массива (не статичный массив, тк файлов неизвестно сколько)
если по маске ничего не найдено то не заполнять массив (вообще никаких действий)
короче говоря записать в массив все файлы(их имена), которые удовлетворяют маске поиска
Цитата Johny777:
улучшил функцию проверки строки на целое число
Важно!
должен заметить что криво работает с нулём
откатился к этой:
Код:
===============================================================================
Цитата wertulll:
подбрось пример пожалуйста если не трудно.
Цитата wertulll:
А вобще можно скин убрать с этого окна ???
если устроит такой вариант:
Код:
=============================================================
SatHan,
Чтоб мне не спороть чушь: вроде для этого используются хуки. Могут быть слышны маты антивиря
поставь инно ультру и в \Inno Setup 5\Scripts\WindowsHook есть пример
если по маске ничего не найдено то не заполнять массив (вообще никаких действий)
короче говоря записать в массив все файлы(их имена), которые удовлетворяют маске поиска
Цитата Johny777:
улучшил функцию проверки строки на целое число
Скрипты Inno Setup. Помощь и советы [часть 5]
Важно!
должен заметить что криво работает с нулём

откатился к этой:
Код:
Код: Выделить всё
function IsInt(const sTestStr: string): Boolean;
var
i: Integer;
begin
Result := False;
if Length(sTestStr) > 0 then
for i := 0 to 9 do
begin
Result := Pos(IntToStr(i), sTestStr) > 0;
if Result then
Break;
end;
end;===============================================================================
Цитата wertulll:
подбрось пример пожалуйста если не трудно.
Скрипты Inno Setup. Помощь и советы [часть 5]
Скрипты Inno Setup. Помощь и советы [часть 5]
Цитата wertulll:
А вобще можно скин убрать с этого окна ???
Скрипты Inno Setup. Помощь и советы [часть 5]
если устроит такой вариант:
читать дальше »
Код:
Код: Выделить всё
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp
[Files]
Source: steam.cjstyles; DestDir: {tmp}; Flags: dontcopy
Source: ISSkin.dll; DestDir: {tmp}; Flags: dontcopy
[ Code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('steam.cjstyles');
LoadSkin(ExpandConstant('{tmp}\steam.cjstyles'), '');
Result := True;
end;
procedure DeinitializeSetup();
begin
UnloadSkin();
end;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm := False;
WizardForm.Hide;
Sleep(200);
UnloadSkin();
if ExitSetupMsgBox = False then
begin
Cancel := False;
LoadSkin(ExpandConstant('{tmp}\steam.cjstyles'), '');
WizardForm.Show;
end else Cancel := True;
end;=============================================================
SatHan,
Чтоб мне не спороть чушь: вроде для этого используются хуки. Могут быть слышны маты антивиря
поставь инно ультру и в \Inno Setup 5\Scripts\WindowsHook есть пример
-
Gnom_aka_Lexander
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
HElmo, а так?
Код:
Код:
Код: Выделить всё
[Types]
Name: "Full"; Description: "Полная установвка"; Flags : iscustom;-
HElmo
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Цитата Ivan_009:
форма png
мои скудные знания и логика говорят что это словосочетание не возможно
Цитата Ivan_009:
чтобы при нажатии на кнопку появлялась ... png
Код:
положить рядом со скриптом:
isgsg.dll (библиотека от South)
Pic.png
форма - другой разговор
форма png
Скрипты Inno Setup. Помощь и советы [часть 5]
мои скудные знания и логика говорят что это словосочетание не возможно
Цитата Ivan_009:
чтобы при нажатии на кнопку появлялась ... png
Скрипты Inno Setup. Помощь и советы [часть 5]
читать дальше »
Код:
Код: Выделить всё
#define ShowPic "Pic.png"
[Setup]
AppName=Reg_Path_Demo
AppVerName=Reg_Path_Demo
DefaultDirName={pf}\Reg_Path_Demo
[Files]
Source: isgsg.dll; Flags: ignoreversion dontcopy nocompression solidbreak sortfilesbyextension
Source: Pic.png; Flags: ignoreversion dontcopy nocompression solidbreak sortfilesbyextension
[ code]
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
procedure Show(Sender: TObject);
begin
if not FileExists(ExpandConstant('{tmp}\{#ShowPic}')) then ExtractTemporaryFile('{#ShowPic}');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\{#ShowPic}',300,3000,300,0,255,False,$FFFFFF,10);
end;
procedure InitializeWizard();
begin
with TButton.Create(nil) do
begin
Parent := WizardForm;
Caption := 'Push';
Top := ScaleY(320);
Left := ScaleX(20);
OnClick := @Show;
end;
end;положить рядом со скриптом:
isgsg.dll (библиотека от South)
Pic.png
форма - другой разговор
-
R.i.m.s.k.y.
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
HElmo,
Вот держи рабочий код сразу на два твоих вопроса, и даже больше чтобы несколько раз дверью не скрипеть
Код:
__________
Сообщение помогло? Жми "полезное сообщение" внизу поста
Вот держи рабочий код сразу на два твоих вопроса, и даже больше чтобы несколько раз дверью не скрипеть
Код:
Код: Выделить всё
//универсальная переменная названия дистрибутива
# define SmoothVideoProject "SmoothVideoProject v.3.1"
[Setup]
// не создавать деинсталятор
Uninstallable=false
[Types]
// типы установки
Name: full; Description: Рекомендуемая (полная) установка
Name: compact; Description: Минимальная установка
Name: custom; Description: Выборочная установка; Flags: iscustom
[Components]
// для каждого типа установки - свой набор компонентов
Name: SmoothVideoProject; Description: {#SmoothVideoProject}; Types: full
Name: SVPtube; Description: {cm:SVPtube}; Types: compact;
Name: LAV; Description: {cm:mpclavreg}; Types: custom;
[Languages]
// языки инсталлера
Name: russian; MessagesFile: compiler:Languages\Russian.isl;
Name: english; MessagesFile: compiler:Languages\English.isl;
[CustomMessages]
// сообщения в списке компонентов в зависимости от выбранного языка
english.SVPtube=SVPTube v.1.0 (Play YouTube clips in you favorite player)
russian.SVPtube=SVPTube v.1.0 (Воспроизведение роликов YouTube в любимом плеере)
english.mpclavreg=Install and register LAV
russian.mpclavreg=Установить и зарегистрировать LAV__________
Сообщение помогло? Жми "полезное сообщение" внизу поста
-
HElmo
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
R.i.m.s.k.y., спасибо, очень помог!!! Все получилось, рад, что есть такие люди.
-
Ivan_009
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Как можно решить проблему с текструированной кнопкой отмена через ботву... Дело в том, что когда я переключаю на ssPostInstall
невозможно отменить установку... Вернее можно но только один раз
Вот код наложения кнопок...
невозможно отменить установку... Вернее можно но только один раз

Вот код наложения кнопок...