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

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

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

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


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]
Скрипты Inno Setup. Помощь и советы [часть 4]

Отправлено: 03:49, 21-05-2012

 

Аватара для Johny777

Ветеран


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

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


Nightwishh, модифицировал показ слайдов (рандомный), много удалил и заменил InnoCallback.dll на CallbackAddr
библиотека не нужна. Только картинки
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Files]
Source: Image_1.bmp; Flags: dontcopy solidbreak sortfilesbyextension nocompression
Source: Image_2.bmp; Flags: dontcopy solidbreak sortfilesbyextension nocompression
Source: Image_3.bmp; Flags: dontcopy solidbreak sortfilesbyextension nocompression

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

[code]
const
  SlidesNumber=3; //количество слайдов
  SlideRenewTine=2; // задержка показа слаидов в секундах
  
var
  SplashImage: TBitmapImage;
  SlidesTimer: LongWord;
  Pic: Byte;

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

procedure ShowRandomPics;
begin
  Pic := Random(SlidesNumber);
  SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_' + IntToStr(Pic+1) + '.bmp'));
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
  z: Byte;
begin
  case CurStep of
    ssInstall:
    begin
      { SplashImage }
      SplashImage := TBitmapImage.Create(nil);
      with SplashImage do
      begin
        SetBounds(ScaleX(0), ScaleY(0), WizardForm.MainPanel.Width, WizardForm.Bevel.Top)
        Parent := WizardForm.InstallingPage;
        Stretch := True;
        Pic := Random(SlidesNumber);
        ExtractTemporaryFile('Image_' + IntToStr(Pic+1) + '.bmp');
        Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_' + IntToStr(Pic+1) + '.bmp'));
      end;
      WizardForm.StatusLabel.Caption := 'Распаковка слайдов ...';
      for z := 1 to SlidesNumber do if not FileExists(ExpandConstant('{tmp}\Image_' + IntToStr(z) + '.bmp')) then ExtractTemporaryFile('Image_'+inttostr(z)+'.bmp');
      SlidesTimer := SetTimer(WizardForm.Handle, 7, SlideRenewTine*1000, CallbackAddr('ShowRandomPics'));
    end;
    
    ssPostInstall:
    begin
      KillTimer(WizardForm.Handle, SlidesTimer);
      SplashImage.Free;
    end;
  end;
end;

procedure DeInitializeSetup();
begin
  KillTimer(WizardForm.Handle, SlidesTimer);
end;


Цитата Nightwishh:
а именно меня волнуют 2 одинаковые функции »
и правильно волнуют. Достаточно записать по одному экземпляру заголовка

теперь тебе будет легче объединить 2 кода в ручную

Последний раз редактировалось Johny777, 09-11-2012 в 21:24.

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

Отправлено: 20:38, 09-11-2012 | #1221



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

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


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

Ветеран


Contributor


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

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


Цитата elChoopacabra:
При выборе определённого компонента:
1. запустить (до копирования файлов) сторонний (дополнительный) инсталлятор из {tmp} с заданными ключами установки.
2. удалить в {app} определённые папки ("мусорные", которые установит инсталлятор из пункта 1).
3. выполнить копирование (установку) файлов уже посредством основного inno-инсталлятора »
elChoopacabra, первые 2 пункта нужно делать на этапе ssInstall, как раз перед отработкой секции Run (3 пункт):
Код: Выделить весь код
[Files]
Source: setup.exe; Flags: dontcopy nocompression; Components: mycomponent

[code]
procedure CurStepChanged(CurStep: TSetupStep);
var
    ResCode: Integer;
begin
    case CurStep of
        ssInstall: begin
            if IsComponentSelected('mycomponent') then
            begin
                ExtractTemporaryFile('setup.exe');
                if FileExists(ExpandConstant('{tmp}\setup.exe') then
                begin
                    Exec(ExpandConstant('{tmp}\setup.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResCode);
                    DelTree(ExpandConstant('{app}\MyFolder'), True, True, True);
                end;
            end;
        end;
    end;
end;
P.S. Дополнительный установщик может состоять из оболочки и основного установщика, например, связка InstallShield - Windows Installer. В таком случае возможен вариант, когда команда Exec вернет управление, дождавшись кода возврата от оболочки, а основной установщик еще только начал свою работу. Тогда и команде DelTree нечего будет удалять - мусор появится позже, когда отработает основной установщик. Поэтому рекомендую разобрать дополнительный установщик до его составляющих.


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

Отправлено: 21:23, 09-11-2012 | #1222


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


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

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


Johny777,
Спасибо, всё работает, но есть одна пакость! Дело в том что у меня архивы фриарк, которые распаковываются перед inno (ssInstall), а
здесь слайды начинают работать после распаковки. Пробывал в скрипте исправлять в процедуре: procedure CurStepChanged(CurStep: TSetupStep); непомогает!

Отправлено: 22:22, 09-11-2012 | #1223


Аватара для Johny777

Ветеран


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

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


Nightwishh, ну помести код распаковки архивов после извлечения картинок и запуска таймера. Убиение таймера оставь где стоит. Те до этапа(ssPostInstall) где таймер убивается не дойдёт пока не выполнится код распаковки. А значит до тех пор он, таймер, будет с частотой 2сек. выполнять процедуру ShowRandomPics; Расценивай таймер не иначе как параллельный поток(процесс)
короче:
читать дальше »
Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
var
  z: Byte;
begin
  case CurStep of
    ssInstall:
    begin
      { SplashImage }
      SplashImage := TBitmapImage.Create(nil);
      with SplashImage do
      begin
        SetBounds(ScaleX(0), ScaleY(0), WizardForm.MainPanel.Width, WizardForm.Bevel.Top)
        Parent := WizardForm.InstallingPage;
        Stretch := True;
        Pic := Random(SlidesNumber);
        ExtractTemporaryFile('Image_' + IntToStr(Pic+1) + '.bmp');
        Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_' + IntToStr(Pic+1) + '.bmp'));
      end;
      WizardForm.StatusLabel.Caption := 'Распаковка слайдов ...';
      for z := 1 to SlidesNumber do if not FileExists(ExpandConstant('{tmp}\Image_' + IntToStr(z) + '.bmp')) then ExtractTemporaryFile('Image_'+inttostr(z)+'.bmp');
      SlidesTimer := SetTimer(WizardForm.Handle, 7, SlideRenewTine*1000, CallbackAddr('ShowRandomPics'));

      /// здесь код распаковки архивов

    end;
    
    ssPostInstall:
    begin
      KillTimer(WizardForm.Handle, SlidesTimer);
      SplashImage.Free;
    end;
  end;
end;


===========================

Цитата El Sanchez:
ой, опередили »
уже нет! У меня не хватало "if IsComponentSelected('mycomponent') then..."

Последний раз редактировалось Johny777, 09-11-2012 в 22:47.

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

Отправлено: 22:42, 09-11-2012 | #1224


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


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

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


Не... для меня сложно, накуралесю что-нить, тем более там скрипт ISDone 0.6, придётся убирать таймер из музыки и всё по старому делать, зря только вопросами грузил!

Отправлено: 00:22, 10-11-2012 | #1225


Аватара для Johny777

Ветеран


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

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


Nightwishh, вот скажи мне. Нафига тебе этот исдан. Почти все реапки какие вижу с ним. может дело и не в нём, но они по большей части глючные. Кто тебе по ушам настучал его использовать. Забей и всё будет нормално. я б не променял коды ваше на возможность сильнее сжать(и эта возможность под вопросом)
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:56, 10-11-2012 | #1226


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


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

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


Johny777, да всё пока нормально, взял для слайдов другой скрипт, насчёт глюков ISDone- вроде норм с ним, спасибо за таймер для музыки и за скрипт слайшоу!

Отправлено: 01:57, 10-11-2012 | #1227


Аватара для Mailchik

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


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

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


Цитата Johny777:
Нафига тебе этот исдан. Почти все реапки какие вижу с ним. может дело и не в нём, но они по большей части глючные. Кто тебе по ушам настучал его использовать.
Хм. Странно. Встречный вопрос, а кто настучал его не использовать? Баги присутствуют, куда же без них, хотя я ни одного не замечал за этой библиотекой. Очень удобная библиотека, я бы даже сказал нужная для репакера. Очень много нужных функций. Дак если есть такая библиотека, зачем придумывать велосипед, и собирать заново. Лично моё мнение.
Цитата R.i.m.s.k.y.:
это какие нужные в ней функции?
Распаковка архивов созданных разными алгоритмами (precomp, srep, zip, xdelta + подключение конфиг файла, для распаковки внешними компрессорами), запуск сторонних exe, с плавным отображением прогрессбара.

Последний раз редактировалось Mailchik, 10-11-2012 в 13:00.

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

Отправлено: 12:48, 10-11-2012 | #1228


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Цитата Mailchik:
Очень много нужных функций »
это какие нужные в ней функции?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 12:55, 10-11-2012 | #1229


Аватара для Johny777

Ветеран


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

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


Mailchik, использовать или не использовать исдан - личное решение каждого. Здесь на форуме видел людей, которые не зная возможностей инно, обходя их начинают пользоваться исданом. Оттого и мнение, что кто-то (форум, человек, репакер) прошелся по ушам и доверчивости новичка. Меня это печалит. Поэтому я не выдержав заявил Nightwishh-у чтоб он не зацикливался на методах этой библиотеки. Базара нет "Распаковка архивов созданных разными алгоритмами (precomp, srep, zip, xdelta + подключение конфиг файла, для распаковки внешними компрессорами), запуск сторонних exe, с плавным отображением прогрессбара." - несомненный плюс, но у медали две стороны
давай взвесим стороны:
начнём с того что времена, когда выгодно и удобно купить/скачать однослойную болванку с пятью играми на ней давно прошли(не для всех, но меньшинством я позволю себе пренебречь). Ожидания от современного репака(перепаковки):
- удобство проистекающее из ненадобности в ручную ставить патч, копировать правленные файлы, файлы локализации, настраивать ини файлы эмулятора для стим-игр и прочее
- качество. Те правильный и грамотный код, в котором:
1. Описаны все необходимые действия для правильной установки и удаления продукта
2. Сам инсатлл должен быть удобен по отношению к пользователю.
3. Время установки должно быть приемлемым
4. И самое главное - нужно уметь ценить ресурсы чужого компа!
Что мы получаем (говорю как бывший пользователь репаков):
1. Не все, но это ввиду того что "готовый" продукт можно получить обходя возможности инно через исдан сделало из будущего, без будущего, репакера обезьяну
2. Многое уделяется не удобству, а оформлению, хотя иногда оно из него и проистекает. Я сам фанат крутого оформления, но уважая чужое мнение не меньше своего, отдаю полуготовый продукт на тест и (внимание) на "общее впечатление" (там же и удобство) от продукта с будущим учётом пожеланий будущих пользователей. Не спрашивай примера. У меня пока один такой инсталл и он не доступен широкой общественности
3. Время установки не приемлемо, а без прекомпа возможности библиотеки аннулируются (+-500-300мб после фри арка можно пренебречь) кодом несколькими страницами назад и родным ужимателем инно
4. Дополнительное место на харде для распаковки и уйма оперативки - наглое отношение к пользователю, тк он не ценит ресурсы сколько бы их не было

Теперь о возможностях исдана- разнообразная распаковка. Вот и всё. О фагах секции файлов можно забыть. Ровно как и о функциях AfterInstall, BeforeInstall
запуск сторонних exe - может и инно.
Короче. Кто хочет пусть юзает исдан. Мне с этого момента пофиг. Я лишь буду указывать на альтернативные возможности или возможноти(которых в исдане нен) в инно

PS:
Цитата Mailchik:
если есть такая библиотека, зачем придумывать велосипед, и собирать заново »
инно была раньше, так что ей и быть великом
а целесообразность исдана без прекомпа и сильного сжатия из которого проистекают некоторые из вышеописанных проблем(3, 4) я ставлю под большой вопрос

PSS:
ничего личного по отношению к автору библиотеки. Если он её придумал, значит было зачем

Последний раз редактировалось Johny777, 10-11-2012 в 15:36.

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

Отправлено: 15:28, 10-11-2012 | #1230



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход