Скрипты Inno Setup. Помощь и советы [часть 5]

Ответить
 • Просмотры: 4
Аватара пользователя
Ivan_009

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Ivan_009 »

Как наложить кнопки свернуть и закрыть через ботву...Подскажите кто знает...
Аватара пользователя
Johny777

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Johny777 »

Цитата Respin:



На кустомной кнопки отмены прописываю: 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]

Сообщение vint56 »

Как наложить кнопки свернуть и закрыть через ботву...Подскажите кто знает...

http://rghost.ru/40324331
Аватара пользователя
nik1967

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение nik1967 »

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]

Сообщение HElmo »

Можно мне пожалуйста пример заполнение массива записей именами файлов найденными по маске с последующим поиском имён но уже из массива (не статичный массив, тк файлов неизвестно сколько)

если по маске ничего не найдено то не заполнять массив (вообще никаких действий)



короче говоря записать в массив все файлы(их имена), которые удовлетворяют маске поиска




Цитата 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]

Сообщение Gnom_aka_Lexander »

HElmo, а так?





Код:

Код: Выделить всё

[Types]
Name: "Full"; Description: "Полная установвка"; Flags : iscustom;
Аватара пользователя
HElmo

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение HElmo »

Цитата Ivan_009:



форма 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]

Сообщение R.i.m.s.k.y. »

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]

Сообщение HElmo »

R.i.m.s.k.y., спасибо, очень помог!!! Все получилось, рад, что есть такие люди.
Аватара пользователя
Ivan_009

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Ivan_009 »

Как можно решить проблему с текструированной кнопкой отмена через ботву... Дело в том, что когда я переключаю на ssPostInstall

невозможно отменить установку... Вернее можно но только один раз Изображение

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

Вернуться в «Автоматическая установка приложений»