Имя пользователя:
Пароль:
 | Правила  

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

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

Отправлено: 11:48, 10-03-2014

 

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


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

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


Цитата sergey3695:
на кнопку, на форму, картинку. удачи »
Спасибо , вот какраз удача не улыбнулась. Тут какая то ошибка , я думал его нужно обьявить , но я незнаю пока как , с етим у меня проблемы http://forum.oszone.net/attachment.p...1&d=1421614575

Последний раз редактировалось ShadeUa, 28-01-2015 в 16:20.


Отправлено: 23:57, 18-01-2015 | #2341



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

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


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


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

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


ShadeUa, botva2.iss подключи.

Отправлено: 11:20, 19-01-2015 | #2342


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


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

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


Цитата sergey3695:
botva2.iss подключи. »
Вроде , да

#define MyAppName "Test"
#define MyAppVerName "Test"
#define MyDefaultDirName "Test"
#define MyDefaultGroupName "Test"

[Setup]
SourceDir=.
OutputDir=Setup
AppName={#MyAppName}
AppVerName={#MyAppVerName}
DefaultDirName={pf}\{#MyDefaultDirName}
DefaultGroupName={#MyDefaultGroupName}
OutputBaseFilename=Setup
AllowNoIcons=true
ShowTasksTreeLines=true
[files]
Source: 1.png; DestDir: {tmp}; Flags: dontcopy
Source: botva2.dll; DestDir: {tmp}; Flags: dontcopy
Source: botva2.iss; DestDir: {tmp}; Flags: dontcopy

[code]
(*var
CreateFormFromImage : *)
#include "botva2.iss"
function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
if not FileExists(ExpandConstant('{tmp}\1.png')) then ExtractTemporaryFile('1.png');
Result:=True;
end;

#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif

const
GWL_WNDPROC = -4;
WM_NCLBUTTONDOWN = $00A1;
type
LPARAM = Integer;
WPARAM = Integer;
LRESULT = Integer;
TFNWndProc = Integer;
var
OldWindowProc: Longint;

function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'CallWindowProc{#A}@user32.dll stdcall';

function WindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
begin
case Msg of
WM_NCLBUTTONDOWN:
begin
Msg := 0;
WizardForm.Close;
end;
end;
Result := CallWindowProc(OldWindowProc, hWnd, Msg, wParam, lParam);
end;

procedure CloseForm(Sender: TObject);
begin
WizardForm.Close;
end;

procedure InitializeWizard;
begin
CreateFormFromImage(wizardform.Handle,ExpandConstant('{tmp}\1.png'));
ImgApplyChanges(WizardForm.Handle);
OldWindowProc := SetWindowLong(WizardForm.Handle, GWL_WNDPROC, CallbackAddr('WindowProc'));
end;

procedure DeinitializeSetup();
begin
SetWindowlong(WizardForm.Handle, GWL_WNDPROC, OldWindowProc);
gdipShutdown;
end;

Отправлено: 11:49, 19-01-2015 | #2343


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


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

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


Цитата ShadeUa:
Source: botva2.iss; DestDir: {tmp}; Flags: dontcopy »
Зачем? Открой botva2.iss и почитай что там. Это не полностью готовый пример а лишь главный кусок решения. Я думал ты разбираешься хоть малость.

Отправлено: 14:40, 19-01-2015 | #2344


Аватара для ROMKA-1977

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


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

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


Подскажите пож. в чём может бать проблема:
В код инсталятора на SelectDirPage прописана кастомная кнопка "Обзор", работает отлично но если ошибочно выбрать путь установки DVD ROM и далее повторно нажать на "Обзор" всплывает сообщение "Вставьте диск в устройство "DVD RW" которого при стандартной кнопке нет. Как отключить это сообщение?
читать дальше »

Код: Выделить весь код
#define Name "Test" 

[Setup]
SourceDir=.
OutputDir=Setup
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
DefaultGroupName=Test
OutputBaseFilename=Setup
AllowNoIcons=true

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

[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;

[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}

[CustomMessages]
russian.RestoreButton=Сброс

[Code_]
var
  BrowseForm: TSetupForm;
  BrowseForm2: TSetupForm;
  DirTreeView: TFolderTreeView;
  DirFolderTreeView: TStartMenuFolderTreeView;
  EditTreeView: TNewEdit;
  EditFolderTreeView: TNewEdit;
  DB_Button: TNewButton;
  GB_Button: TNewButton; 
  OldEvent_NoIconsCheckClick: TNotifyEvent;

procedure DirTreeViewChange(Sender: TObject);
begin
  if DirTreeView.Directory <> WizardForm.DirEdit.Text then
  EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}' else
  EditTreeView.Text := DirTreeView.Directory;
end;

procedure DirFolderTreeViewChange(Sender: TObject);
begin
  if DirFolderTreeView.Directory <> WizardForm.GroupEdit.Text then
  EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}' else
  EditFolderTreeView.Text := DirFolderTreeView.Directory;
end;

procedure BrowseFormButtonsTreeViewOnClick(Sender: TObject);
begin
  case TButton(Sender).Tag of
    1: EditTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}'));

    2: begin
          DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
          EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
        end;

    3: if EditTreeView.Text <> WizardForm.DirEdit.Text then WizardForm.DirEdit.Text := EditTreeView.Text;
  end;
end;

procedure BrowseFormButtonsFolderTreeViewOnClick(Sender: TObject);
begin
  case TButton(Sender).Tag of
    4: EditFolderTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#Name}'));

    5: begin
          DirFolderTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
          EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}';
        end;

    6: if EditFolderTreeView.Text <> WizardForm.GroupEdit.Text then WizardForm.GroupEdit.Text := EditFolderTreeView.Text;
  end;
end;

procedure BrowseDirTreeViewClick(Sender: TObject);
begin
  BrowseForm := CreateCustomForm();
  with BrowseForm do
  begin
    Width := ScaleX(413);
    Height := ScaleY(361);
    Caption := SetupMessage(msgBrowseDialogTitle);
    Position := poScreenCenter;

    with TLabel.Create(nil) do
    begin
      SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
      Caption := SetupMessage(msgBrowseDialogLabel);
      Parent := BrowseForm;
      Font.Size := 8;
    end;

    DirTreeView := TFolderTreeView.Create(nil)
    with DirTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
      OnChange := @DirTreeViewChange;
      Parent := BrowseForm;
    end;

    EditTreeView := TNewEdit.Create(nil);
    with EditTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
      Text := DirTreeView.Directory;
      Parent := BrowseForm;
      Font.Color := clWindowText;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
      Parent := BrowseForm;
      Caption := SetupMessage(msgButtonCancel);
      ModalResult := mrCancel;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm;
      Caption := ExpandConstant('{cm:RestoreButton}');
      Tag := 1;
      OnClick := @BrowseFormButtonsTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm;
      Caption := SetupMessage(msgButtonNewFolder);
      Tag := 2;
      OnClick := @BrowseFormButtonsTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm;
      Caption := SetupMessage(msgButtonOK);
      Tag := 3;
      OnClick := @BrowseFormButtonsTreeViewOnClick;
      ModalResult := mrOk;
    end;

    DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True);
    ShowModal;
    Free;
  end;
end;

procedure BrowseDirFolderTreeViewClick(Sender: TObject);
begin
  BrowseForm2 := CreateCustomForm();
  with BrowseForm2 do
  begin
    Width := ScaleX(413);
    Height := ScaleY(361);
    Caption := SetupMessage(msgBrowseDialogTitle);
    Position := poScreenCenter;

    with TLabel.Create(nil) do
    begin
      SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
      Caption := SetupMessage(msgBrowseDialogLabel);
      Parent := BrowseForm2;
      Font.Size := 8;
    end;

    DirFolderTreeView := TStartMenuFolderTreeView.Create(nil)
    with DirFolderTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
      SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userstartup}'),ExpandConstant('{commonstartup}'));
      OnChange := @DirFolderTreeViewChange;
      Parent := BrowseForm2;
    end;

    EditFolderTreeView := TNewEdit.Create(nil);
    with EditFolderTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
      Text := DirFolderTreeView.Directory;
      Parent := BrowseForm2;
      Font.Color := clWindowText;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
      Parent := BrowseForm2;
      Caption := SetupMessage(msgButtonCancel);
      ModalResult := mrCancel;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm2;
      Caption := ExpandConstant('{cm:RestoreButton}');
      Tag := 4;
      OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm2;
      Caption := SetupMessage(msgButtonNewFolder);
      Tag := 5;
      OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm2;
      Caption := SetupMessage(msgButtonOK);
      Tag := 6;
      OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
      ModalResult := mrOk;
    end;

    DirFolderTreeView.ChangeDirectory(AddBackslash(WizardForm.GroupEdit.Text), True);
    ShowModal;
    Free;
  end;
end;

procedure NoIconsCheckClick(Sender: TObject);
 begin
   OldEvent_NoIconsCheckClick(Sender);
   GB_Button.Enabled := not WizardForm.NoIconsCheck.Checked;
 end;

procedure InitializeWizard();
begin
  OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick;
  WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick;

  WizardForm.DirBrowseButton.Hide;
  DB_Button := TNewButton.create(WizardForm);
  with DB_Button do
  begin
    Parent := WizardForm.SelectDirPage;
    SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1));
    Caption := SetupMessage(msgButtonBrowse);
    OnClick := @BrowseDirTreeViewClick;
  end;

  WizardForm.GroupBrowseButton.Hide;
  GB_Button := TNewButton.create(WizardForm);
  with GB_Button do
  begin
    Parent := WizardForm.SelectProgramGroupPage;
    SetBounds(WizardForm.GroupBrowseButton.Left, WizardForm.GroupBrowseButton.Top, WizardForm.GroupBrowseButton.Width, WizardForm.GroupBrowseButton.Height - ScaleY(1));
    Caption := SetupMessage(msgButtonBrowse);
    OnClick := @BrowseDirFolderTreeViewClick;
  end;

end;

Отправлено: 22:45, 19-01-2015 | #2345


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


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

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


ROMKA-1977, так и должно быть. при стандартной также.

Отправлено: 23:03, 19-01-2015 | #2346


Ветеран


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

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


Цитата ROMKA-1977:
Как отключить это сообщение? »
Можно указать инсталу не реагировать, если выбран CD-ROM, как вариант.
Скрытый текст
Код: Выделить весь код
#define Name "Test"

[Setup]
SourceDir=.
OutputDir=Setup
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
DefaultGroupName=Test
OutputBaseFilename=Setup
AllowNoIcons=true

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

[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;

[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}

[CustomMessages]
russian.RestoreButton=Сброс

[Code]
/////////////////////////////////////////////////////////
#define A = (Defined UNICODE) ? "W" : "A"
/////////////////////////////////////////////////////////
const
    DRIVE_CDROM = 5;
/////////////////////////////////////////////////////////
function GetDriveType( lpRootPathName: String ): UINT; external 'GetDriveType{#A}@kernel32.dll stdcall';
/////////////////////////////////////////////////////////


var
  BrowseForm: TSetupForm;
  BrowseForm2: TSetupForm;
  DirTreeView: TFolderTreeView;
  DirFolderTreeView: TStartMenuFolderTreeView;
  EditTreeView: TNewEdit;
  EditFolderTreeView: TNewEdit;
  DB_Button: TNewButton;
  GB_Button: TNewButton;
  OldEvent_NoIconsCheckClick: TNotifyEvent;

procedure DirTreeViewChange(Sender: TObject);
begin
  if DirTreeView.Directory <> WizardForm.DirEdit.Text then
  EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}' else
  EditTreeView.Text := DirTreeView.Directory;
end;

procedure DirFolderTreeViewChange(Sender: TObject);
begin
  if DirFolderTreeView.Directory <> WizardForm.GroupEdit.Text then
  EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}' else
  EditFolderTreeView.Text := DirFolderTreeView.Directory;
end;

procedure BrowseFormButtonsTreeViewOnClick(Sender: TObject);
begin
  case TButton(Sender).Tag of
    1: EditTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}'));

    2: begin
          DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
          EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
        end;

    3: if EditTreeView.Text <> WizardForm.DirEdit.Text then
    /////////////////////////////////////////////////////////////////
         if GetDriveType( AddBackslash( ExtractFileDrive( EditTreeView.Text ) ) ) <> DRIVE_CDROM then
    /////////////////////////////////////////////////////////////////
           WizardForm.DirEdit.Text := EditTreeView.Text;
  end;
end;

procedure BrowseFormButtonsFolderTreeViewOnClick(Sender: TObject);
begin
  case TButton(Sender).Tag of
    4: EditFolderTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#Name}'));

    5: begin
          DirFolderTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
          EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}';
        end;

    6: if EditFolderTreeView.Text <> WizardForm.GroupEdit.Text then WizardForm.GroupEdit.Text := EditFolderTreeView.Text;
  end;
end;

procedure BrowseDirTreeViewClick(Sender: TObject);
begin
  BrowseForm := CreateCustomForm();
  with BrowseForm do
  begin
    Width := ScaleX(413);
    Height := ScaleY(361);
    Caption := SetupMessage(msgBrowseDialogTitle);
    Position := poScreenCenter;

    with TLabel.Create(nil) do
    begin
      SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
      Caption := SetupMessage(msgBrowseDialogLabel);
      Parent := BrowseForm;
      Font.Size := 8;
    end;

    DirTreeView := TFolderTreeView.Create(nil)
    with DirTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
      OnChange := @DirTreeViewChange;
      Parent := BrowseForm;
    end;

    EditTreeView := TNewEdit.Create(nil);
    with EditTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
      Text := DirTreeView.Directory;
      Parent := BrowseForm;
      Font.Color := clWindowText;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
      Parent := BrowseForm;
      Caption := SetupMessage(msgButtonCancel);
      ModalResult := mrCancel;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm;
      Caption := ExpandConstant('{cm:RestoreButton}');
      Tag := 1;
      OnClick := @BrowseFormButtonsTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm;
      Caption := SetupMessage(msgButtonNewFolder);
      Tag := 2;
      OnClick := @BrowseFormButtonsTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm;
      Caption := SetupMessage(msgButtonOK);
      Tag := 3;
      OnClick := @BrowseFormButtonsTreeViewOnClick;
      ModalResult := mrOk;
    end;

    DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True);
    ShowModal;
    Free;
  end;
end;

procedure BrowseDirFolderTreeViewClick(Sender: TObject);
begin
  BrowseForm2 := CreateCustomForm();
  with BrowseForm2 do
  begin
    Width := ScaleX(413);
    Height := ScaleY(361);
    Caption := SetupMessage(msgBrowseDialogTitle);
    Position := poScreenCenter;

    with TLabel.Create(nil) do
    begin
      SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
      Caption := SetupMessage(msgBrowseDialogLabel);
      Parent := BrowseForm2;
      Font.Size := 8;
    end;

    DirFolderTreeView := TStartMenuFolderTreeView.Create(nil)
    with DirFolderTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
      SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userstartup}'),ExpandConstant('{commonstartup}'));
      OnChange := @DirFolderTreeViewChange;
      Parent := BrowseForm2;
    end;

    EditFolderTreeView := TNewEdit.Create(nil);
    with EditFolderTreeView do
    begin
      SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
      Text := DirFolderTreeView.Directory;
      Parent := BrowseForm2;
      Font.Color := clWindowText;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
      Parent := BrowseForm2;
      Caption := SetupMessage(msgButtonCancel);
      ModalResult := mrCancel;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm2;
      Caption := ExpandConstant('{cm:RestoreButton}');
      Tag := 4;
      OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm2;
      Caption := SetupMessage(msgButtonNewFolder);
      Tag := 5;
      OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
    end;

    with TButton.Create(nil) do
    begin
      SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
      Parent := BrowseForm2;
      Caption := SetupMessage(msgButtonOK);
      Tag := 6;
      OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
      ModalResult := mrOk;
    end;

    DirFolderTreeView.ChangeDirectory(AddBackslash(WizardForm.GroupEdit.Text), True);
    ShowModal;
    Free;
  end;
end;

procedure NoIconsCheckClick(Sender: TObject);
 begin
   OldEvent_NoIconsCheckClick(Sender);
   GB_Button.Enabled := not WizardForm.NoIconsCheck.Checked;
 end;

procedure InitializeWizard();
begin
  OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick;
  WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick;

  WizardForm.DirBrowseButton.Hide;
  DB_Button := TNewButton.create(WizardForm);
  with DB_Button do
  begin
    Parent := WizardForm.SelectDirPage;
    SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1));
    Caption := SetupMessage(msgButtonBrowse);
    OnClick := @BrowseDirTreeViewClick;
  end;

  WizardForm.GroupBrowseButton.Hide;
  GB_Button := TNewButton.create(WizardForm);
  with GB_Button do
  begin
    Parent := WizardForm.SelectProgramGroupPage;
    SetBounds(WizardForm.GroupBrowseButton.Left, WizardForm.GroupBrowseButton.Top, WizardForm.GroupBrowseButton.Width, WizardForm.GroupBrowseButton.Height - ScaleY(1));
    Caption := SetupMessage(msgButtonBrowse);
    OnClick := @BrowseDirFolderTreeViewClick;
  end;

end;


Тем же способом можете выводить сообщение, если выбран CD-ROM, типа "установка на выбранный диск невозможна" и т.д.

Последний раз редактировалось saurn, 19-01-2015 в 23:22.

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

Отправлено: 23:16, 19-01-2015 | #2347


Аватара для ROMKA-1977

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


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

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


Цитата saurn:
Можно указать инсталу не реагировать, если выбран CD-ROM »
а возможен ли вариант полностью удалить отображение CD-ROM из DirTreeView?

Отправлено: 23:29, 19-01-2015 | #2348


Ветеран


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

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


Цитата ROMKA-1977:
возможен ли вариант полностью удалить отображение CD-ROM из DirTreeView »
Нет.

Отправлено: 23:37, 19-01-2015 | #2349


Аватара для nik1967

Старожил


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

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


ROMKA-1977, можешь ещё, как вариант, при выборе CD-ROM'а сделать неактивной нужную кнопку.
Вариант с nextbutton

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

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

Отправлено: 11:00, 20-01-2015 | #2350



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты 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




 
Переход