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

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

 

Аватара для alert30

Ветеран


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

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


Crazy Noise, я говорю о секциях [code], о копировании через UBB уже и так давно знаю (это уже не по теме).
А у Вас секция [code] нету.

Лучше Всем расскажу:
Неудобно было так:
[code]
Код: Выделить весь код
begin
end.


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

Отправлено: 12:37, 01-04-2013 | #51



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

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


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


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

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


Цитата Johny777:
можно конечно, только сделал проще - не три разных файла с компонентами а один в котором столбиком(обязательно для первой функции, которая закоментирована) или просто перечислены компоненты, те если имя компонента есть в файле, то он будет добален в чеклистбокс, если нет то пропущен
вот пример из двух функций (вторая, которая не закомментирована работает быстрее, но в познавательных целях оставил первую (у меня какая-то странная тяга к массивам и первая на их основе )) »
так тут смысл в том, чтобы уменьшить скачиваемый инсталл с наиболее частыми обновляемыми файлами.

Отправлено: 15:09, 01-04-2013 | #52


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


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

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


alert30, Вижу не часто попадалось.
читать дальше »
При применении BB таким образом, очень легко ошибиться и не заметить
Код: Выделить весь код
[]Code]
var
  Buff: String;

function InExternalTextFile(const SearchName: String): Boolean;
begin
  if Buff = '' then LoadStringFromFile(AddBackslash(ExpandConstant('{src}')) + 'Install.txt', Buff);
  Result := Pos(SearchName, Buff) > 0;
end;
Цитата alert30:
А у Вас секция [code] нету. »
Смысл и так понятен, там не только код но и весь скрипт.


Кто-то запрещает использовать [HTML][/HTML] или [PHP][/PHP]?

HTML код: Выделить весь код
[code] var Buff: String; function InExternalTextFile(const SearchName: String): Boolean; begin if Buff = '' then LoadStringFromFile(AddBackslash(ExpandConstant('{src}')) + 'Install.txt', Buff); Result := Pos(SearchName, Buff) > 0; end;

PHP код: Выделить весь код

[code]

var
  
BuffString;

function 
InExternalTextFile(const SearchNameString): Boolean;
begin
  
if Buff '' then LoadStringFromFile(AddBackslash(ExpandConstant('{src}')) + 'Install.txt'Buff);
  
Result := Pos(SearchNameBuff) > 0;
end

И ничего не нужно подставлять или изобретать!

Отправлено: 15:57, 01-04-2013 | #53


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


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

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


Цитата nik1967:
Lex_from_Belarus, а я сделал сложнее (наверное, хотя для меня этот вариант проще). В зависимости от нахождения файла рядом (ну или ещё где - путь задаётся в шапке скрипта) с инсталлятором будет отображаться компонент (ну или не будет). If components exist
Цитата:
и чтобы xxx1-3.xxx не были просто архивами, чтобы их отдельно нельзя было распаковать. можно ли реализовать такое?
Воспользуйся паролем на архив при сжатии. »
что-то я наверное туплю наверное, но в каждом архиве находится от 2 до 30 компонетов и наверное этот метод не прокатит?

Отправлено: 16:14, 01-04-2013 | #54


Аватара для alert30

Ветеран


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

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


Crazy Noise, ну это Ваше дело. Тег [code] и его закрытия тега я привык вставлять.

Отправлено: 16:20, 01-04-2013 | #55


Аватара для habib2302

Ветеран


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

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


Доброе время суток.Как сделаль (добавить) в инсталлятор и деинсталлятор Wizard Small Image и Wizard Image без фона?

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


Отправлено: 19:41, 01-04-2013 | #56


Аватара для Johny777

Ветеран


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

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


habib2302,
Цитата habib2302:
.Как сделаль (добавить) в инсталлятор и деинсталлятор Wizard Small Image и Wizard Image без фона? »
Использовать ботву (botva2.dll от South) для прозрачных картинок, но тк тебе ещё и для деинсталятора, то проще всего запихать картинки и библиотеку в ресурсы (в экзешник) и грузить оттуда
Важно: в соглашении вызова импортируемых из библы функциий указать delayload (вроде как стоит по дефолту)

код(целых 87 строк ):
читать дальше »
Код: Выделить весь код
#include "botva2.iss"
[Setup]
AppName=DrawImageExample by South.Tver
AppVerName=DrawImageExample by South.Tver
DefaultDirName={pf}\ImageExample
OutputBaseFilename=setup
RawDataResource=Botva:botva2.dll|bPic:bPic.png|LiPic:LiPic.png|aPic:aPic.png

[Code]
const
    AXEL_YELLOW = $48c1ca;
    RT_RCDATA = 10;


function GetFromRes(const ResName, SaveFileName: String): Boolean;
var
    lResStream: TResourceStream;
begin
    lResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
    try
        lResStream.SaveToFile(ExpandConstant('{tmp}\') + SaveFileName);
    finally
        lResStream.Free;
        Result := FileExists(ExpandConstant('{tmp}\') + SaveFileName);
    end;
end;


procedure InitializeWizard;
var
    bPicHandle, bPicHandle2, lPicHandle: THandle;
begin
    with WizardForm do
    begin
        WelcomePage.Color := AXEL_YELLOW;
        MainPanel.Color := AXEL_YELLOW;

        if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_BPIC', 'bPic.png') and GetFromRes('_IS_LIPIC', 'LiPic.png') and GetFromRes('_IS_APIC', 'aPic.png') then
        begin
            bPicHandle := ImgLoad(WelcomePage.Handle, ExpandConstant('{tmp}\aPic.png'), WizardBitmapImage.Left, WizardBitmapImage.Top, WizardBitmapImage.Width, WizardBitmapImage.Height, True, True);
            WizardBitmapImage.Hide;
            ImgSetVisibility(bPicHandle, True);
            ImgApplyChanges(WelcomePage.Handle);
            
            bPicHandle := ImgLoad(FinishedPage.Handle, ExpandConstant('{tmp}\bPic.png'), WizardBitmapImage2.Left, WizardBitmapImage2.Top, WizardBitmapImage2.Width, WizardBitmapImage2.Height, True, True);
            WizardBitmapImage2.Hide;
            ImgSetVisibility(bPicHandle, True);
            ImgApplyChanges(FinishedPage.Handle);
            
            lPicHandle := ImgLoad(MainPanel.Handle, ExpandConstant('{tmp}\LiPic.png'), WizardSmallBitmapImage.Left, WizardSmallBitmapImage.Top, WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
            WizardSmallBitmapImage.Hide;
            ImgSetVisibility(lPicHandle, True);
            ImgApplyChanges(MainPanel.Handle);
        end;
    end;
end;

procedure DeinitializeSetup();
begin
    if FileExists(ExpandConstant('{tmp}\') + 'botva2.dll') then gdipShutDown();
end;

/////////////////////////////////////////////////////////////////////

procedure InitializeUninstallProgressForm();
var
    lPicHandle: THandle;
begin
    with UninstallProgressForm do
    begin
        MainPanel.Color := AXEL_YELLOW;
    
        if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_LIPIC', 'LIPic.png') then
        begin
            lPicHandle := ImgLoad(MainPanel.Handle, ExpandConstant('{tmp}\LiPic.png'), WizardSmallBitmapImage.Left, WizardSmallBitmapImage.Top, WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
            WizardSmallBitmapImage.Hide;
            ImgSetVisibility(lPicHandle, True);
            ImgApplyChanges(MainPanel.Handle);
        end;
    end;
end;

procedure DeinitializeUninstall();
begin
    if FileExists(ExpandConstant('{tmp}\') + 'botva2.dll') then gdipShutDown();
end;


скрин:


архив с примером и со всем необходимым:
http://sendfile.su/788305

PS: для себя я бы не выносил загрузку ресурсов в функцию function GetFromRes(const ResName, SaveFileName: String): Boolean; с точки зрения оптимизации скорости работы
но думаю так будет проще понять что к чему. Потом поменяешь, если захочешь!
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:09, 02-04-2013 | #57


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Johny777:
для себя я бы не выносил загрузку ресурсов в функцию function GetFromRes(const ResName, SaveFileName: String): Boolean; с точки зрения оптимизации скорости работы »
наоборот. несколько мелких функций гораздо оптимальнее одного здоровенного уродливого монстра. единственное, для дополнительной оптимизации есь смысл передавать TStrings со списком ресурсов , дабы не создавать для каждого ресурса отдельный объект TResourceStream. Создали и в цикле по списку выгружаем на диск, с очисткой после выгрузки. Это точно будет быстрее, чем столько-же раз создать и разрушить объект.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

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

Отправлено: 20:28, 02-04-2013 | #58


Аватара для habib2302

Ветеран


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

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


Johny777, а почему в скрипте указанно 3 изображения?

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


Отправлено: 21:14, 02-04-2013 | #59


Аватара для Gnom_aka_Lexander

Ветеран


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

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


habib2302, потому, что изображения на первой и на последней страницах - это разные объекты. плюс смалл имидж - 3 ведь получается?

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

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

Отправлено: 21:45, 02-04-2013 | #60



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




 
Переход