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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 22-10-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]
Скрипты Inno Setup. Помощь и советы [часть 7]

Отправлено: 08:52, 02-02-2015

 

Аватара для AlekseyPopovv

Старожил


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

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


Dodakaedr, Может не правильно выразился, мне надо поменять цвет окна во всех MsgBox...

Отправлено: 13:00, 20-03-2016 | #1441



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

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


Аватара для Dodakaedr

Ветеран


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

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


Цитата AlekseyPopovv:
Может не правильно выразился, мне надо поменять цвет окна во всех MsgBox... »
так задайте его, если по тому примеру то так FinishedForm.Color := clLime;

-------
Inno Setup 5 Ultra Unicode


Отправлено: 13:20, 20-03-2016 | #1442


Аватара для AlekseyPopovv

Старожил


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

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


Dodakaedr, А как в стандартных MsgBox поменять цвет?

Отправлено: 05:26, 21-03-2016 | #1443


Аватара для solopavel

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


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

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


Прошу помощи. В этой проге я дуб дубом, а в smart install maker у меня не получается это сделать. Накидайте пожалуйста образец скрипта для такой схемы:

При установке, нужно удалить из "программы" две папки с файлами полностью "aircraft_1" и "aircraft1_2", а также два файла "traffic_1.bgl" и "traffic_2.bgl". Создать папку с файлами "aircraft_3" и файл "traffic_3.bgl"

Я это вот, как дилетант, так себе это представляю:
Скрытый текст

[InstallDelete]
Type: files; Name: "traffic_1.bgl"{app}\"
Type: files; Name: "traffic_2.bgl"{app}\"
Type: files; Name: "aircraft_1l"{app}\"
Type: files; Name: "aircraft_2l"{app}\"
[Files]
Source: “traffic_3.bgl”; DestDir: “{app}”
Source: “aircraft_3”; DestDir: “{app}”

Заранее благодарен за ответ.

Последний раз редактировалось solopavel, 21-03-2016 в 19:31.


Отправлено: 18:40, 21-03-2016 | #1444


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

Ветеран


Contributor


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

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


Цитата AlekseyPopovv:
А как в стандартных MsgBox поменять цвет? »
AlekseyPopovv, например, так:
Скрытый текст

Код: Выделить весь код
[Setup]
AppName=test
AppVerName=test
DefaultDirName={tmp}\test
CreateAppDir=no
Uninstallable=no
CreateUninstallRegKey=no

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

[Code]
#define A = (Defined UNICODE) ? "W" : "A"
const
  WH_CBT = 5;
  HCBT_CREATEWND = 3; 
  WC_DIALOG = '#32770';
  WM_INITDIALOG = $0110;
  WM_ERASEBKGND = $0014;
  WM_PAINT = $000F;
  WM_CTLCOLORSTATIC = $0138;
  WM_CTLCOLORBTN = $0135; 
  WM_DESTROY = $0002;
  TRANSPARENT = 1;

type
  PAINTSTRUCT = record
    hdc: THandle;
    fErase: BOOL;
    rcPaint: TRect;
    fRestore: BOOL;
    fIncUpdate: BOOL;
    rgbReserved: array [0..31] of Byte;
  end;

function GetCurrentThreadId: DWORD; external 'GetCurrentThreadId@kernel32.dll stdcall';
function CallNextHookEx(hhk: THandle; nCode: Integer; wParam, lParam: Longint): Longint; external 'CallNextHookEx@user32.dll stdcall';
function SetWindowsHookEx(idHook: Integer; lpfn, hMod: Longint; dwThreadId: DWORD): THandle; external 'SetWindowsHookEx{#A}@user32.dll stdcall';
function UnhookWindowsHookEx(hhk: THandle): BOOL; external 'UnhookWindowsHookEx@user32.dll stdcall';
function SetWindowSubclass(hWnd: HWND; pfnSubclass: Longint; uIdSubclass: UINT_PTR; dwRefData: DWORD_PTR): BOOL; external 'SetWindowSubclass@comctl32.dll stdcall';
function RemoveWindowSubclass(hWnd: HWND; pfnSubclass: Longint; uIdSubclass: UINT_PTR): BOOL; external 'RemoveWindowSubclass@comctl32.dll stdcall';
function DefSubclassProc(hWnd: HWND; uMsg: UINT; wParam, lParam: Longint): Longint; external 'DefSubclassProc@comctl32.dll stdcall';
function GetClassName(hWnd: HWND; lpClassName: string; nMaxCount: Integer): Integer; external 'GetClassName{#A}@user32.dll stdcall';
function GetSysColorBrush(nIndex: Integer): THandle; external 'GetSysColorBrush@user32.dll stdcall';
function SetBkMode(hdc: THandle; iBkMode: Integer): Integer; external 'SetBkMode@gdi32.dll stdcall';
function BeginPaint(hWnd: HWND; var lpPaint: PAINTSTRUCT): Longint; external 'BeginPaint@user32.dll stdcall';
function EndPaint(hWnd: HWND; const lpPaint: PAINTSTRUCT): Boolean; external 'EndPaint@user32.dll stdcall';
function FillRect(hDC: THandle; const lprc: TRect; hbr: THandle): Integer; external 'FillRect@user32.dll stdcall';
function GetUpdateRect(hWnd: HWND; var lpRect: TRect; bErase: BOOL): BOOL; external 'GetUpdateRect@user32.dll stdcall';

var
  GCBTProc, GDlgProc: Longint;  
  GDlgHook, GBgndBrush: THandle; 
  
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function DlgProc(hWnd: HWND; uMsg: UINT; wParam, lParam: Longint; uIdSubclass: UINT_PTR; dwRefData: DWORD_PTR): Longint;
var
  ps: PAINTSTRUCT;
  rc: TRect;
begin
  case uMsg of  
    WM_INITDIALOG: 
      begin
        if GBgndBrush = 0 then
          GBgndBrush := GetSysColorBrush(13{COLOR_HIGHLIGHT для примера});
        Result := DefSubclassProc(hWnd, uMsg, wParam, lParam);        
      end;
    WM_ERASEBKGND:
      begin
        GetUpdateRect(hWnd, rc, False);
        FillRect(wParam, rc, GBgndBrush);
        Result := 1;
      end;
    WM_PAINT:
      begin
        BeginPaint(hWnd, ps);
        FillRect(ps.hdc, ps.rcPaint, GBgndBrush);
        EndPaint(hWnd, ps);
      end;
    WM_CTLCOLORBTN, WM_CTLCOLORSTATIC:
      begin
        SetBkMode(wParam, TRANSPARENT);
        Result := GBgndBrush;
      end;
    WM_DESTROY:
      begin
        RemoveWindowSubclass(hWnd, GDlgProc, 0);
        Result := DefSubclassProc(hWnd, uMsg, wParam, lParam);
      end;
  else
    Result := DefSubclassProc(hWnd, uMsg, wParam, lParam);
  end;
end;   

///////////////////////////////////////////////////////////////////
function CBTProc(nCode: Integer; wParam, lParam: Longint): Longint;
var
  ClassName: string;   
begin
  case nCode of  
    HCBT_CREATEWND:
      begin      
        ClassName := StringOfChar(#0, 64);
        GetClassName(wParam, ClassName, Length(ClassName));
        ClassName := TrimRight(ClassName);        
        case ClassName of
          WC_DIALOG:
            begin
              if GDlgProc = 0 then
                GDlgProc := CallbackAddr('DlgProc');
              SetWindowSubclass(wParam, GDlgProc, 0, 0);
            end;
        end;
        Result := 0;
      end;      
  else  
    Result := CallNextHookEx(GDlgHook, nCode, wParam, lParam);  
  end;
end;

//////////////////
procedure HookDlg;
begin
  if GCBTProc = 0 then
    GCBTProc := CallbackAddr('CBTProc');
  GDlgHook := SetWindowsHookEx(WH_CBT, GCBTProc, 0, GetCurrentThreadId);
end;

////////////////////
procedure UnHookDlg;
begin
  UnhookWindowsHookEx(GDlgHook);
end;

///////////////////////////
procedure InitializeWizard;
begin
  HookDlg;  
end;

////////////////////////////
procedure DeinitializeSetup;
begin
  if ExpandConstant('{wizardhwnd}') = '0' then Exit;
  UnHookDlg;
end;

//////////////////////////////////////
function InitializeUninstall: Boolean;
begin
  Result := True;
  HookDlg;
end;

////////////////////////////////
procedure DeinitializeUninstall;
begin
  UnHookDlg;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:56, 21-03-2016 | #1445


Аватара для ZVSRus

Старожил


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

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


Цитата solopavel:
При установке, нужно удалить из "программы" две папки с файлами полностью "aircraft_1" и "aircraft1_2"
Как-то так.
Скрытый текст

Код: Выделить весь код
[Files]
 Source: "{app}\traffic_3.bgl"; DestDir: "{app}";
 Source: "{app}\aircraft_3\*"; DestDir: "{app}\aircraft_3";

[InstallDelete]
 Type: files; Name: "{app}\traffic_1.bgl";
 Type: files; Name: "{app}\traffic_2.bgl";
 Type: filesandordirs; Name: "{app}\aircraft_1l";
 Type: filesandordirs; Name: "{app}\aircraft_2l";

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode

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

Отправлено: 19:57, 21-03-2016 | #1446


Аватара для Dodakaedr

Ветеран


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

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


Цитата El Sanchez:
например, так: »
есть где-то список номером цветов? Или как указать требуемый цвет? Как вы узнали чему равна цифра 13?

-------
Inno Setup 5 Ultra Unicode


Отправлено: 20:30, 21-03-2016 | #1447


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

Ветеран


Contributor


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

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


Цитата Dodakaedr:
есть где-то список номером цветов? Или как указать требуемый цвет? Как вы узнали чему равна цифра 13? »
Dodakaedr, дык, это ж параметр функции GetSysColorBrush, там в описании параметра к ней ссылка на GetSysColor, где представлены константы системных цветов. Я не стал в примере константу писать, влепил комментарий, чтобы обратили внимание на этот кусок кода. Вместо кисти с системным цветом здесь можно создать и использовать свою сплошную кисть с любым цветом при помощи CreateSolidBrush или узорчатую при помощи CreatePatternBrush. Разумеется, при использовании пользовательских кистей обработка сообщений WM_* будет немного другой.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:18, 21-03-2016 | #1448


Аватара для Dodakaedr

Ветеран


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

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


Цитата El Sanchez:
Вместо кисти с системным цветом здесь можно создать и использовать свою сплошную кисть с любым цветом при помощи CreateSolidBrush »
Если есть время набросайте, пожалуйста, пример.

-------
Inno Setup 5 Ultra Unicode


Отправлено: 21:27, 21-03-2016 | #1449


Аватара для solopavel

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


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

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


ZVSRus, спасибо за оперативный ответ.
Сейчас попробую.

Отправлено: 21:31, 21-03-2016 | #1450



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты 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




 
Переход