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

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

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

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

Ветеран


Contributor


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


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

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

 

Аватара для habib2302

Ветеран


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

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


доброе время суток. дело в том, что после установки я хочу еще распаковать портативку и появляется этот диалог

хотя в секции Setup указал
Код: Выделить весь код
CreateUninstallRegKey=not IsComponentSelected('AIDA64\Portable and AIDA64\Portable\1 and AIDA64\Portable\2 and AIDA64\Portable\3 and Lang and Lang\ru and Lang\en and Lang\ua')

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


Последний раз редактировалось habib2302, 11-02-2014 в 09:54.


Отправлено: 23:21, 10-02-2014 | #2241



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

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


Ветеран


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

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


Цитата _Akim_:
Ребят помогите, что то никак не могу найти пример кода. Нужно чтоб при установке создавался бэкап папки (копированием) а при повторном запуске инсталятора проверялось бы наличие этой бэкап папки, и если она есть то повторно не бэкапить. »
Пример
Код: Выделить весь код
#define CUR_DIR "main" ;Глобально: папка, откуда копируем.
#define BAK_DIR "_backup" ;Глобально: папка, куда копируем.

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.


[Files]
Source: C:\Windows\Fonts\*; DestDir: {app}\main; Flags: external overwritereadonly ignoreversion;


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


function CopyFile(lpExistingFileName, lpNewFileName: String; bFailIfExists: BOOL): BOOL; external 'CopyFile{#A}@kernel32.dll stdcall';


var
    backupChk: TCheckBox;


procedure IsBackup(const FromDir: String; const ToDir: String);
var
    fileArray: array of String;
    FindFiles: TFindRec;
    i, Len: Integer;
begin
    fileArray := ['*'];
    Len := GetArrayLength(fileArray) - 1;
    for i := 0 to Len do
    begin
        if FindFirst(FromDir + fileArray[i], FindFiles) then
        try
            WizardForm.ProgressGauge.Hide;
            WizardForm.StatusLabel.Caption := 'Создание резервной копии файлов...';

            repeat
                if not DirExists(ToDir) then CreateDir(ToDir);
                  CopyFile(FromDir + FindFiles.Name, ToDir + FindFiles.Name, False);
            until not FindNext(FindFiles);
        finally

            WizardForm.ProgressGauge.Show;
            FindClose(FindFiles);
        end;
    end;
end;


procedure InitializeWizard();
var
    ThereIsFolders: Boolean;
begin
    backupChk := nil;
    ThereIsFolders := (DirExists(AddBackslash(WizardDirValue()) + '{#CUR_DIR}') and //Проверяем, есть ли папка, откуда копируем файлы.
                      (not DirExists(AddBackslash(WizardDirValue()) + '{#BAK_DIR}')) ); //Проверяем, что папка, куда копируем файлы не существует.

    if ThereIsFolders then //Если оба вышеозначенных условия соблюдены создаем чекбокс.
    begin
        backupChk := TCheckBox.Create(nil);
        with backupChk do
        begin
            Parent := WizardForm.SelectDirPage;
            SetBounds(ScaleX(WizardForm.DirEdit.Left), ScaleY(WizardForm.DiskSpaceLabel.Top div 2), ScaleX(WizardForm.DirEdit.Width), ScaleY(15));
            Caption := 'Сохранить резервную копию перезаписываемых файлов';
            Checked := ThereIsFolders;
        end;
    end;
end;


procedure CurStepChanged(CurStep: TSetupStep);
begin
    case CurStep of
        ssInstall: if backupChk <> nil then //Проверяем, создан ли чекбокс.
                     if backupChk.Checked then //Если чекбокс создан, проверяем отмечен ли он
                       //Вызываем процедуру создания резервной копии файлов нв этапе перед установкой.
                       IsBackup(ExpandConstant('{app}\{#CUR_DIR}\'), //Папка, откуда копируем файлы.
                       ExpandConstant('{app}\{#BAK_DIR}\')); //Папка, куда копируем файлы.
    end;
end;
Имейте ввиду, что удовлетворительным результатом здесь является исключительно отсутствие папки. Если папка есть, но она пуста, все равно будет возвращен False результат.

---------------------------------------------------------------

habib2302
Код: Выделить весь код
[Setup]
CreateUninstallRegKey=_CheckIsComponents

[Code]
function _CheckIsComponents(): Boolean;
begin
    Result := not IsComponentSelected('AIDA64\Portable\1') and
    not IsComponentSelected('AIDA64\Portable\2') and
    not IsComponentSelected('AIDA64\Portable\3');
end;
Цитата habib2302:
CreateUninstallRegKey=not IsComponentSelected('AIDA64\Portable and AIDA64\Portable\1 and AIDA64\Portable\2 and AIDA64\Portable\3 and Lang and Lang\ru and Lang\en and Lang\ua') »
IsComponentSelected('...'): здесь должно быть указано имя компонента, одного, а не всех компонентов разом, да еще и языков зачем-то. В итоге для компилятора это строка считается именем одного компонента, вот он и проверяет, отмечен ли компонент под именем AIDA64\Portable and AIDA64\Portable\1 and AIDA64\Portable\2 and AIDA64\Portable\3 and Lang and Lang\ru and Lang\en and Lang\ua

Последний раз редактировалось saurn, 11-02-2014 в 10:03.

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

Отправлено: 05:03, 11-02-2014 | #2242


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


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

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


Цитата saurn:
Имейте ввиду, что удовлетворительным результатом здесь является исключительно отсутствие папки. Если папка есть, но она пуста, все равно будет возвращен False результат. »
Да это то что нужно. Бэкапим папку оригинальной программы, делаем это один раз и обязательно, поэтому можно и без чекбоксов. Спасибо.

Отправлено: 13:24, 11-02-2014 | #2243


Аватара для diman_21Ru

Старожил


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

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


Всем привет у Jove в мод-паке появилась занятная функция Авто-оповещение об обновлении Модпака как это можно реализовать ?

Отправлено: 14:53, 11-02-2014 | #2244


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


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

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


Цитата diman_21Ru:
Всем привет у Jove в мод-паке появилась занятная функция Авто-оповещение об обновлении Модпака как это можно реализовать ? »
это мод для танков и к inno setup он никак не относится

Отправлено: 17:04, 11-02-2014 | #2245


Аватара для diman_21Ru

Старожил


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

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


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

Отправлено: 19:34, 11-02-2014 | #2246


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


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

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


diman_21Ru, да меня тоже интересует это может кто то знает как это сделать ?

Отправлено: 20:28, 11-02-2014 | #2247


Аватара для diman_21Ru

Старожил


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

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


Как можно исправить сбоку баг на windows 7 все нормально но на Windows 8 вот как понимаю из за совместимости но все же можно может как то решить

Последний раз редактировалось diman_21Ru, 03-05-2014 в 11:43.


Отправлено: 20:37, 11-02-2014 | #2248


Ветеран


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

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


Цитата diman_21Ru:
Авто-оповещение об обновлении Модпака как это можно реализовать ? »
Написать утилиту, которая будет проверять наличие обновлений на некоем сервере. Только Inno - то тут каким боком?
Цитата diman_21Ru:
Как можно исправить сбоку баг »
Похоже на косяк скинирования.

Отправлено: 20:54, 11-02-2014 | #2249


Аватара для habib2302

Ветеран


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

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


Цитата saurn:
Написать утилиту, которая будет проверять наличие обновлений на некоем сервере. Только Inno - то тут каким боком? »
согласен. как в angry birds в конфиге указал сервак а утилита сканирует наличие новой версии и т.д.

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


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



Компьютерный форум 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




 
Переход