Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5]

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

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1265
Благодарности: 1025


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]
Скрипты Inno Setup. Помощь и советы [часть 4]

Отправлено: 03:49, 21-05-2012

 

Аватара для Ivan_009

Ветеран


Сообщения: 608
Благодарности: 58

Профиль | Цитировать


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

Последний раз редактировалось Ivan_009, 25-08-2012 в 14:17.


Отправлено: 14:48, 18-08-2012 | #651



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Ivan_009,
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files] 
Source: icon.ico; DestDir: {tmp}; Flags: dontcopy 
 
[  Code]
function LoadImage(hInst: THandle; ImageName: PChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImageA@user32.dll stdcall delayload'; 
 
procedure InitializeWizard; 
begin 
  ExtractTemporaryFile('icon.ico'); 
  SendMessage(WizardForm.Handle, $0080, 0, LoadImage(0,ExpandConstant('{tmp}')+'\icon.ico',1,16,16,$1010)); 
end;

где icon.ico - иконка 16 на 16 пикселей

Автор скрипта - South

Ваня!
только сейчас догнал этот пример тебе не катит, тк у тебя нет границ окна
вот код
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: "hl2.ico"; Flags: dontcopy

[  Code]
procedure InitializeWizard();
begin
  with WizardForm do
  begin
    OuterNotebook.Hide;
    BorderStyle := bsNone;
    Color := $506a5a;
  end;

  with TNewIconImage.Create(nil) do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(3), ScaleY(3), ScaleX(16), ScaleY(16));
    ExtractTemporaryFile('hl2.ico');
    Icon.LoadFromFile(ExpandConstant('{tmp}\hl2.ico'));
  end;
end;


с файлом: http://sendfile.su/651666 (проверено, одобрено)


использование на форме деинсталятора
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: "hl2.ico"; DestDir: {app}; Flags: ignoreversion nocompression; Attribs: hidden system;

[Code   ]
procedure InitializeWizard();
begin
  with WizardForm do
  begin
    OuterNotebook.Hide;
    BorderStyle := bsNone;
    Color := $506a5a;
  end;

  with TNewIconImage.Create(nil) do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(3), ScaleY(3), ScaleX(16), ScaleY(16));
    ExtractTemporaryFile('hl2.ico');
    Icon.LoadFromFile(ExpandConstant('{tmp}\hl2.ico'));
  end;
end;


procedure InitializeUninstallProgressForm();
begin
  UninstallProgressForm.BorderStyle := bsNone;
  UninstallProgressForm.Color := $506a5a;
  UninstallProgressForm.OuterNotebook.Hide;
  UninstallProgressForm.ProgressBar.Parent := UninstallProgressForm;
  
  if FileCopy(ExpandConstant('{app}\hl2.ico'), ExpandConstant('{tmp}\hl2.ico'), False) = True then
  begin
    with TNewIconImage.Create(nil) do
    begin
      Parent := UninstallProgressForm;
      SetBounds(ScaleX(3), ScaleY(3), ScaleX(16), ScaleY(16));
      Icon.LoadFromFile(ExpandConstant('{tmp}\hl2.ico'));
    end;
  end;
end;

Последний раз редактировалось Johny777, 18-08-2012 в 17:15.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:01, 18-08-2012 | #652


Пользователь


Сообщения: 148
Благодарности: 49

Профиль | Отправить PM | Цитировать


Цитата Ivan_009:
Как зделать так чтобы иконка отображалась в этой области... »
А толку от неё там? Тупо чтобы была?
Если уж так нужно, то как-то так:

читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DisableFinishedPage=yes
OutputDir=.
Compression=lzma/ultra

[Languages]
Name: RUS; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: Files\Icon1.ico; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system; 

[Code ]
function InitializeSetup(): Boolean;
begin
if not FileExists(ExpandConstant('{tmp}\Icon1.ico')) then ExtractTemporaryFile('Icon1.ico'); 
  Result:= True;
end;

var 
  MyIcon: TNewIconImage;   

procedure InitializeWizard();
begin
with WizardForm do begin
  BorderStyle:= bsNone;
  InnerNotebook.Hide;
  OuterNotebook.Hide;
end;    
  MyIcon := TNewIconImage.Create(Wizardform); 
with MyIcon do
begin
  Parent := Wizardform; 
  SetBounds(ScaleX(5),ScaleY(5),ScaleX(16),ScaleY(16)); 
  Icon.LoadFromFile(ExpandConstant('{tmp}\Icon1.ico')); 
end;  
end;

Johny777, на скрин посмотри. Ни че не видешь в правом углу, кнопки на которых свернуть и закрыть.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:13, 18-08-2012 | #653


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


подскажите пожалуйста как в этой процедуре обрабатываемой при изменении лист бокса получить текст выбранного айтема
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;

Последний раз редактировалось Johny777, 18-08-2012 в 18:28.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:12, 18-08-2012 | #654


Аватара для Ivan_009

Ветеран


Сообщения: 608
Благодарности: 58

Профиль | Цитировать


Как сделать такие края в инсталляторе без ботвы.....

Последний раз редактировалось Ivan_009, 25-08-2012 в 14:17.


Отправлено: 19:36, 18-08-2012 | #655


Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


Цитата Ivan_009:
Как сделать такие края в инсталляторе без ботвы..... »
Выдернуть из AutoRun.iss Need for Speed™ Undercover'а.

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:14, 18-08-2012 | #656


Аватара для Ivan_009

Ветеран


Сообщения: 608
Благодарности: 58

Профиль | Цитировать


nik1967, А поподробней можно какие функции

Отправлено: 23:47, 18-08-2012 | #657


Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


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;
Только пропадает прозрачность.

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:11, 19-08-2012 | #658


Аватара для Mafioza

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:45, 19-08-2012 | #659


Аватара для Ivan_009

Ветеран


Сообщения: 608
Благодарности: 58

Профиль | Цитировать


Mafioza, ты про это что ли...
Johny777, как такое зделать незнаешь случаем...

Последний раз редактировалось Ivan_009, 25-08-2012 в 14:17.

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:13, 19-08-2012 | #660



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход