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

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

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

Сообщение sergey3695 »

Twoface, Вот держи в папку BASS_Files добавь Music.mp3...
Аватара пользователя
Johny777

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

Сообщение Johny777 »

подскажите пожалуйста как в этой процедуре обрабатываемой при изменении лист бокса получить текст выбранного айтема

procedure FileListOnClick(Sender: TObject);

begin

// From_Edit.Text := FileList.Items(Sender).Text;

end;

код целиком:


читать дальше »






Код:

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

[Setup]
AppName=Test
AppVersion=1.0
DefaultDirName={pf}\Test
DefaultGroupName=Test
AllowNoIcons=yes
OutputDir=.
OutputBaseFilename=setup
Compression=lzma
SolidCompression=true
Uninstallable=false
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[  Code]
var
  Page: TInputDirWizardPage;
  Extract_Button: TButton;
  From_Edit: TNewEdit;
  From_Button: TNewButton;
  To_Edit: TNewEdit;
  To_Button: TNewButton;
  FileList: TNewListBox;
  n: integer;
function GetFileCount(dir: string): Integer;
var
  FindFiles: TFindRec;
begin
  Result := 0;
  if FindFirst(dir + '\*.exe', FindFiles) then
    begin
      repeat
        if FindFiles.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then Result := Result + 1;
      until not FindNext(FindFiles) or (Result > 1);
      FindClose(FindFiles);
    end;
end;
procedure GetAllFiles( Path: string; Lb: TNewListBox );
var
sRec: TFindRec;
isFound: boolean;
begin
  isFound := FindFirst(Path +'\*.exe*',sRec);
  while isFound do
  begin
    if (sRec.Name  '.') and (sRec.Name  '..') then
    begin
      if (sRec.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY then
      GetAllFiles(Path + '\' + sRec.Name, Lb);
      Lb.Items.Add(Path + sRec.Name);
      n := FileList.Items.Count;
    end;
    Application.ProcessMessages;
    isFound := FindNext(sRec);
  end;
  FindClose(sRec);
end;
procedure FileListOnClick(Sender: TObject);
begin
//  From_Edit.Text := FileList.Items(Sender).Text;
end;
procedure BrowseButtonOnClick(Sender: TObject);
var
  Dir: String;
  MyExit: TSetupForm;
begin
  case TButton(Sender) of
    From_Button: if BrowseForFolder(SetupMessage(msgBrowseDialogLabel), Dir, False) then
    begin
     // From_Edit.Text := Dir;
      if GetFileCount(Dir) > 1 then
      begin
        MyExit := CreateCustomForm();
        with MyExit do
        begin
          Position := poScreenCenter;
          ClientWidth := ScaleX(400);
          ClientHeight := ScaleY(300);
          Caption := 'Уточнитель';
          Color := clWindow;
          with TButton.Create(nil) do
          begin
            Parent := MyExit;
            Caption := ExpandConstant(SetupMessage(msgButtonNo));
            SetBounds(ScaleX(18), ScaleY(220), ScaleX(71), ScaleY(25));
            Cursor := crHand;
            ModalResult:= mrNo;
          end;
          with TButton.Create(nil) do
          begin
            Caption := ExpandConstant(SetupMessage(msgButtonYes));
            Parent := MyExit;
            SetBounds(ScaleX(110), ScaleY(220), ScaleX(71), ScaleY(25));
            Cursor := crHand;
            ModalResult := mrYes;
          end;
          FileList := TNewListBox.Create(nil);
          with FileList do
          begin
            Parent := MyExit;
            SetBounds(ScaleX(0),ScaleY(0),ScaleX(400),ScaleY(200));
            ItemHeight := 13;
            ItemIndex := n;
            OnClick := @FileListOnClick;
          end;
          GetAllFiles(Dir, FileList );
          case ShowModal() of
            mrNo : MsgBox( '', mbError, MB_OK);
            mrYes : MsgBox( '', mbError, MB_OK);
          end;
        end;
      end;
    end;
    To_Button: if BrowseForFolder(SetupMessage(msgBrowseDialogLabel), Dir, True) then To_Edit.Text := Dir;
  end;
end;
procedure Edits_OnChange(Sender: TObject);
begin
  Extract_Button.Enabled := (From_Edit.Text  '') and (To_Edit.Text  '');
end;
procedure Extract(Sender: TObject);
var
  ErrorCode: Integer;
begin
  Exec(From_Edit.Text, '-y -o"' + To_Edit.Text + '"', From_Edit.Text, SW_HIDE, ewWaitUntilTerminated, ErrorCode);
end;
procedure InitializeWizard();
begin
  with WizardForm do
  begin
    Bevel.Hide;
    OuterNotebook.Hide;
  end;
  From_Edit := TNewEdit.Create(WizardForm);
  with From_Edit do
  begin
    Parent := WizardForm;
    Left := ScaleX(64);
    Top := ScaleY(168);
    Width := ScaleX(313);
    Height := ScaleY(21);
    OnChange := @Edits_OnChange;
  end;
  From_Button := TNewButton.Create(WizardForm);
  with From_Button do
  begin
    Caption := 'Обзор';
    Parent := WizardForm;
    Left := ScaleX(400);
    Top := ScaleY(168);
    Width := ScaleX(75);
    Height := ScaleY(25);
    OnClick := @BrowseButtonOnClick;
  end;
  To_Edit := TNewEdit.Create(WizardForm);
  with To_Edit do
  begin
    Parent := WizardForm;
    Left := ScaleX(64);
    Top := ScaleY(208);
    Width := ScaleX(313);
    Height := ScaleY(21);
    OnChange := @Edits_OnChange;
  end;
  To_Button := TNewButton.Create(WizardForm);
  with To_Button do
  begin
    Caption := 'Обзор';
    Parent := WizardForm;
    Left := ScaleX(400);
    Top := ScaleY(208);
    Width := ScaleX(75);
    Height := ScaleY(25);
    OnClick := @BrowseButtonOnClick;
  end;
  Extract_Button:=TButton.Create(WizardForm);
  with Extract_Button do
  begin
    Parent:=WizardForm;
    SetBounds(WizardForm.Width - ScaleX(300),WizardForm.Height - ScaleX(65),ScaleX(75),ScaleY(25));
    Caption:='Извлечь';
    Enabled := False;
    OnClick:=@Extract;
  end;
end;
Аватара пользователя
Ivan_009

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

Сообщение Ivan_009 »

Как сделать такие края в инсталляторе без ботвы..... Изображение
Аватара пользователя
nik1967

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

Сообщение nik1967 »

Ivan_009,



Спасибо за то что постарался помочь, век помнить буду. Всё, я сам сделал, правда голова чуть не лопнула но сделал.
Аватара пользователя
Ivan_009

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

Сообщение Ivan_009 »

nik1967, А поподробней можно какие функции Изображение
Аватара пользователя
nik1967

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

Сообщение nik1967 »

Ivan_009,
пример




Код:

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

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[ Code]
const
  Radius = 55; // Тут сами экспериментируйте
function CreateRoundRectRgn(p1, p2, p3, p4, p5, p6: Integer): THandle; external 'CreateRoundRectRgn@gdi32 stdcall';
function SetWindowRgn(hWnd: HWND; hRgn: THandle; bRedraw: Boolean): Integer; external 'SetWindowRgn@user32 stdcall';
procedure ShapeForm(aForm: TForm; edgeSize: integer);
var
  FormRegion:LongWord;
begin
  FormRegion:=CreateRoundRectRgn(0,0,aForm.Width,aForm.Height,edgeSize,edgeSize);
  SetWindowRgn(aForm.Handle,FormRegion,True);
end;
procedure InitializeWizard();
begin
  ShapeForm(WizardForm, radius);
end;




Только пропадает прозрачность.
Аватара пользователя
Mafioza

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

Сообщение Mafioza »

как сделать , окно подготовки к установке и его точный прогресс , хотя бы как в NSIS ?заранее спасибо !
Аватара пользователя
Ivan_009

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

Сообщение Ivan_009 »

Mafioza, ты про это что ли... Изображение

Johny777, как такое зделать незнаешь случаем... Изображение
Аватара пользователя
Johny777

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

Сообщение Johny777 »

Ivan_009, Mafioza,

блин чуваки

харэ мудрить

я знаю как такое задать и поделюсь, но вы поймите простую вещь

у меня в инсталле при запуске извлекаются 75 картинок

на них отведено 74 деления прогрессбара на форме которая создаётся в начале InitializeWizard;

а в конце разрушается

сама процедура InitializeWizard; у меня длиной в 4200 строк

и все остальные деления (позиции прогреса) раскиданы на примерно равных интервалах по ней (25 делений)

те я не мог не отобразить запуск такого тяжёлого инсталла

если у вас сразу запускается, то вы и форму не особо увидите. Она мелькнёт и всё

а теперь подумайте

вот вы хотите вешать необдуманно рюшки которые - понты

Я тоже фанат всяких наворотов но скажу честно. Если бы мой инсталл запускался за пару секунд я бы форму даже не создавал

в общем призываю ещё раз пересмотреть желания

если вам нужны кастомные тормоза, то дело ваше. Выдеру пример у себя из кода

Прочитали?

Теперь ещё раз скажите нужно или нет

если не нужно то поудаляйте свои посты

если нужно оставьте. Заменю это сообщение на код
Аватара пользователя
Fifth Intellect

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

Сообщение Fifth Intellect »

Как текструировать DirEdit и GroupEdit через ботву....Заранее спасибо.
Ответить

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