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

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

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

Аватара для 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] - Скачать;


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

Отправлено: 19:06, 28-03-2013

 

Аватара для diman_21Ru

Старожил


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

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


Хоть убейся но в скрипт backup папки res-mods и галочку в компоненты я не как добавить не могу =(
Если все же кто то может добавить мне это в скрипт я скину в личку только скажите

Отправлено: 22:23, 05-02-2014 | #2141



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

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


SHVtYW4=


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

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


Цитата diman_21Ru:
Хоть убейся но в скрипт backup папки res-mods и галочку в компоненты я не как добавить не могу =( »
Не верю. Знаешь в чём твоя беда? В том что ты невнимателен, не хочешь учиться и ленивый - даже для себя самого, поверь, я знаю о чём пишу.
С лёгкостью это наглядно покажу: Сообщение 1751, Сообщение 2116 - кому это всё пишется?

Показываю на примере этого кода который предоставил saurn:
читать дальше »
Подчеркнул красным

Код: Выделить весь код
procedure CreateCustomControls();
var
    i, Len: Integer;
begin
    SetArrayLength(arrayChk, 2);
    Len := GetArrayLength(arrayChk) - 1;

    for i := 0 to Len do
    begin
        arrayChk[i] := TCheckBox.Create(nil);
        with arrayChk[i] do
        begin
            Parent := WizardForm.SelectDirPage;
            SetBounds(ScaleX(0), ScaleY(100 + i*24), ScaleX(15), ScaleY(15));
        end;
    end;

    SetArrayLength(arrayLbl, 2);
    Len := GetArrayLength(arrayLbl) - 1;

    for i := 0 to Len do
    begin
        arrayLbl[i] := TLabel.Create(nil);
        with arrayLbl[i] do
        begin
            Parent := WizardForm.SelectDirPage;
            SetBounds(ScaleX(18), ScaleY(101 + i*24), ScaleX(WizardForm.DirEdit.Width), ScaleY(15));
            Font.Color := $008000;
            case i of
                0: Caption := 'Backup res_mods folder';
                Len: Caption := 'Backup xvm folder only';
            end;
        end;
    end;
end;

Код: Выделить весь код
procedure CreateCustomControls();
var
    i, Len: Integer;
begin
    SetArrayLength(arrayChk, 2);
    Len := GetArrayLength(arrayChk) - 1;

    for i := 0 to Len do
    begin
        arrayChk[i] := TCheckBox.Create(nil);
        with arrayChk[i] do
        begin
            Parent := WizardForm.SelectComponentsPage;
            SetBounds(ScaleX(0), ScaleY(180 + i*24), ScaleX(15), ScaleY(15));
        end;
    end;

    SetArrayLength(arrayLbl, 2);
    Len := GetArrayLength(arrayLbl) - 1;

    for i := 0 to Len do
    begin
        arrayLbl[i] := TLabel.Create(nil);
        with arrayLbl[i] do
        begin
            Parent := WizardForm.SelectComponentsPage;
            SetBounds(ScaleX(18), ScaleY(181 + i*24), ScaleX(WizardForm.DirEdit.Width), ScaleY(15));
            Font.Color := $008000;
            case i of
                0: Caption := 'Backup res_mods folder';
                Len: Caption := 'Backup xvm folder only';
            end;
        end;
    end;
end;

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.

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

Отправлено: 00:33, 06-02-2014 | #2142


Аватара для habib2302

Ветеран


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

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


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

и после соглашения появляется маленькое окно процесса установки

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 10:09, 06-02-2014 | #2143


Аватара для diman_21Ru

Старожил


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

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


Source: {app}res_mods*; DestDir: {app}res_mods_old; Flags: external overwritereadonly ignoreversion; выходит ошибка пи установке модов !

Отправлено: 19:16, 06-02-2014 | #2144


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


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

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


Приветствую!
Подскажите плиз, как можно изменять текст стандартных сообщений в коде (не через секцию Messages)? Нужно на InstallingPage менять текст в зависимости от различных условий

Отправлено: 19:21, 06-02-2014 | #2145


Ветеран


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

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


habib2302
читать дальше »
Код: Выделить весь код
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
OutputDir=...
BitmapResource=bitmap:compiler:WizModernSmallImage.bmp

[Files]
Source: {fonts}\*; DestDir: {app}; Flags: external

[code]
#define A = (Defined UNICODE) ? "W" : "A"


const
    MB_ICONNONE          = $00000000;
    MB_ICONSTOP          = $00000010;
    MB_ICONEXCLAMATION   = $00000030;
    MB_ICONASTERISK      = $00000040;

    MB_CANCELTRYCONTINUE = $00000006;

    MB_APPLMODAL         = $00000000;
    MB_SYSTEMMODAL       = $00001000;
    MB_TASKMODAL         = $00002000;

    MB_RIGHT             = $00080000;

    IDTRYAGAIN           = 10;
    IDCONTINUE           = 11;

    BM_CLICK = $00F5;

    WM_USER              = $0400;
    PBM_SETPOS           = WM_USER + 2;
    GWL_WNDPROC          = - 4;


type
    LPCTSTR = String;
    _HINSTANCE = LongWord;

    LPARAM = Integer;
    WPARAM = Integer;
    LRESULT = Integer;
    TFNWndProc = Integer;


function MessageBox(HWND: hWnd; lpText: LPCTSTR; lpCaption: LPCTSTR; uType: UINT): Integer; external 'MessageBox{#A}@user32.dll stdcall';
function LoadBitmap(hInstance: _HINSTANCE; lpBitmapName: LPCTSTR): HBITMAP; external 'LoadBitmap{#A}@user32.dll stdcall';
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 SetWindowText(hWnd: HWND; lpString: LPCTSTR): BOOL; external 'SetWindowText{#A}@user32.dll stdcall';


var
    swInitialize: Boolean;
    OldProgressBarProc: Longint;


function ProgressBarProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
begin
    if Msg = PBM_SETPOS then with WizardForm do SetWindowText( StatusLabel.Handle, Format('%s'#32'%s', [SetupMessage(msgStatusExtractFiles), FormatFloat('0.#0 %', (ProgressGauge.Position*100)/ProgressGauge.Max)]) );

    Result := CallWindowProc(OldProgressBarProc, hWnd, Msg, wParam, lParam);
end;


function InitializeSetup(): Boolean;
begin
    Result := MessageBox(Application.Handle, 'Продолжить установку?', 'Подтверждение установки', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON1 or MB_APPLMODAL) = 6;
    swInitialize := Result;
end;


procedure InitializeWizard();
begin
    with WizardForm do
    begin
        ClientHeight := ScaleY(97);
        BorderStyle := bsDialog;
        Position := poScreenCenter;

        InnerNotebook.SetBounds(ScaleX(0), ScaleY(0), ScaleX(497), ScaleY(97));
        MainPanel.Hide;
        WizardSmallBitmapImage.Hide;
        PageDescriptionLabel.Hide;
        PageNameLabel.Hide;
        FilenameLabel.Hide;

        with StatusLabel do
        begin
            Left := ScaleX(64);
            Top := ScaleY(24);
        end;

        ProgressGauge.Left := ScaleX(64);

        with TBitmapImage.Create(nil) do
        begin
            Parent := WizardForm.InstallingPage;
            SetBounds(ScaleX(8), ScaleY(24), ScaleX(48), ScaleY(48));
            Bitmap.Handle := LoadBitmap(HInstance, '_IS_BITMAP');
        end;
    end;
end;


procedure CurPageChanged(CurPageID: Integer);
begin
    PostMessage(WizardForm.NextButton.Handle, BM_CLICK, 0, 0);
end;


procedure CurStepChanged(CurStep: TSetupStep);
begin
    case CurStep of
        ssInstall: OldProgressBarProc := SetWindowLong(WizardForm.ProgressGauge.Handle, GWL_WNDPROC, CallbackAddr('ProgressBarProc'));
        ssPostInstall: SetWindowlong(WizardForm.ProgressGauge.Handle, GWL_WNDPROC, OldProgressBarProc);
        ssDone: MessageBox(WizardForm.Handle, 'Установка завершена', 'Завершение установки', MB_OK or MB_ICONASTERISK or MB_DEFBUTTON1 or MB_APPLMODAL)
    end;
end;


procedure DeinitializeSetup();
begin
    if swInitialize then SetWindowlong(WizardForm.ProgressGauge.Handle, GWL_WNDPROC, OldProgressBarProc);
end;

UPD: поправил пример

Цитата Shkutu:
Подскажите плиз, как можно изменять текст стандартных сообщений в коде (не через секцию Messages)? Нужно на InstallingPage менять текст в зависимости от различных условий »
Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
begin
    case CurStep of
        ssInstall: if...условие... then WizardForm.StatusLabel.Caption :=
    end;
end;
Или в CurPageChanged. Можете это делать и в своей функции, где описаны условия и изменения зависящие от них, и вызывать функцию на нужном этапе.
-------------------------------------------------------------------------------------------

Цитата diman_21Ru:
Source: {app}res_mods*; DestDir: {app}res_mods_old; Flags: external overwritereadonly ignoreversion; выходит ошибка пи установке модов ! »
Потому что секция файлов тут - одна сплошная ошибка. Устал пояснять, но все же повторю, сжато:
Код: Выделить весь код
Source: Папка, где находятся устанавливаемые файлы\*; DestDir: папка, куда файлы устанавливаются; Flags: recursesubdirs overwritereadonly createallsubdirs ignoreversion;
diman_21Ru, может, почитаете наконец справку?

Последний раз редактировалось saurn, 06-02-2014 в 21:43.

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

Отправлено: 19:50, 06-02-2014 | #2146


SHVtYW4=


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

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


Цитата diman_21Ru:
Source: {app}res_mods*; DestDir: {app}res_mods_old »
Первое на что обрати внимание, это слешь \
Код: Выделить весь код
Source: {app}\res_mods\*; DestDir: {app}\res_mods_old; Flags: ignoreversion overwritereadonly createallsubdirs recursesubdirs;
нет флагов
Код: Выделить весь код
recursesubdirs   - Обрабатывать подкаталоги
createallsubdirs - Создавать все подкаталоги
так же присутствует флаг
Код: Выделить весь код
external - Внешний источник (это значит что если флаг external присутствует, то файлы и папки в инсталлятор не войдут. Будут браться из рядом лежащей папке который указан в инсталляторе).
Цитата diman_21Ru:
Source: {app}res_mods* »
И что за {app} вначале, который в Source? У тебя есть этот каталог?
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:02, 06-02-2014 | #2147


Аватара для diman_21Ru

Старожил


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

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


Как можно в этом скрипте почистить и убрать все чтобы могли появится Компоненты
http://rghost.ru/52251071

Последний раз редактировалось diman_21Ru, 08-02-2014 в 20:37.


Отправлено: 23:35, 06-02-2014 | #2148


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


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

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


saurn, спасибо. А не подскажете, какой компонент надо использовать, чтобы также поменять тот текст, что расположен над StatusLabel?

Отправлено: 01:03, 07-02-2014 | #2149


Ветеран


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

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


Цитата Shkutu:
какой компонент надо использовать, чтобы также поменять тот текст, что расположен над StatusLabel? »
В шапке формы?
Код: Выделить весь код
WizardForm.PageNameLabel.Caption := ''; //заголовок
WizardForm.PageDescriptionLabel.Caption := ''; //подзаголовок
Эти контролы одни для всех страниц, и их значения меняются в зависимости от текущей страницы мастера.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:54, 07-02-2014 | #2150



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход