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

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

 

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


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

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


El Sanchez извините но я нуб в этом деле можете помочь?

Отправлено: 23:43, 22-11-2013 | #1491



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

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


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


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

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


Цитата El Sanchez:
FX-DENIS, это не исправить, в 5 класс школы уже не вернуться. Ищите в скрипте формулу, по которой проценты вычисляются. »
Санчес причем тут 5 класс то,мне уже под 30 лет)),кроме шуток помоги,формула я так понял это,его писал Serega,он даже есть в шапке,отображение размера файлов и процентов.Вот кусок кода:
Код: Выделить весь код
procedure Progress();
begin
  with WizardForm.ProgressGauge do
  ProgressLabel.Caption := IntToStr((Position-Min)/((Max - Min)/100)) + '%';
  SizeLabel.Caption := BytesToReadable(GetFileSize(ExpandConstant(CurrentFileName)), 1);
end;
За размер файлов для установки огромное спасибо,помогло,я не знаю почему в стандартном примере фри арк этого не сказано,что надо такую формулу в SETUP приписать,я так понял там указываеш сумму архивов фри арк,а инно сам плюсует свой размер еще,и получается все правильно
Цитата El Sanchez:
FX-DENIS, скажите сначала что нужно на этапе ssInstall (или ssPostInstall) делать. Словами, без кода. »
Ну то,есть вначале по умолчанию же идет распаковка фри арк архивов и показывается двойной прогресс бар,фри арк скрывает родной прогресс бар,чтоб он не мешал,а на странице распаковки файлов инно он должен его показать,но он его не показывает.На скриншоте видно. Санчес не издевайся,я не знаю как еще на пальцах объяснить
.

Цитата dima.dmitrienko.71@fb:
El Sanchez извините но я нуб в этом деле можете помочь? »
Там перед красной строчкой вставте еще раз end;
Чтоб получилось так
end;
end;

Отправлено: 00:20, 23-11-2013 | #1492


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

Ветеран


Contributor


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

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



Цитата FX-DENIS:
Санчес причем тут 5 класс то,мне уже под 30 лет)) »
А проценты когда учат? А операции над целыми числами еще раньше.

Цитата FX-DENIS:
формула я так понял это,его писал Serega,он даже есть в шапке,отображение размера файлов и процентов.Вот кусок кода: »
FX-DENIS, формула верна, но где гарантия, что Max всегда равен 100? Если он будет меньше, то это вызовет исключение деления на 0, если больше, то на обеих операциях деления будет небольшая погрешность, ибо дробная часть при делении целых чисел в Inno отбрасывается, поэтому 100% не дождешься, будет писать 99%, а это уже вранье в письменной форме. Формулу можно немного переделать, заменя одну операцию деления на умножение: (Position-Min)*100/(Max - Min). Но рискуем нарваться на переполнение, ибо при первом умножении промежуточный результат может выйти за пределы Integer и до свиданья. Поэтому, если мне нужно получить целочисленные проценты, то использую функцию MulDiv:
Код: Выделить весь код
function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer; external 'MulDiv@kernel32.dll stdcall';

with WizardForm.ProgressGauge do ProgressLabel.Caption := Format('%d %%', [MulDiv(Position-Min, 100, Max-Min)]);
Если с отображением дробной части, то:
Код: Выделить весь код
with WizardForm.ProgressGauge do ProgressLabel.Caption := Format('%n %%', [extended(Position-Min)*100/(Max-Min)]);
А насчет того, что вылазит аж 103%, то это где-то Position в коде принимает значения больше Max.

Цитата FX-DENIS:
я не знаю как еще на пальцах объяснить »
FX-DENIS, без четкого алгоритма действий на пальцах нет смысла что-то писать на каком-либо языке программирования. ОК, допустим архивы распаковываются на этапе ssInstall, т.е. до основной утановки. Тогда нужно скрыть стандартный прогресс - создать и отобразить интерфейс для freearc - распаковка - удалить/скрыть интерфейс для freearc - показать стандартный прогресс:
Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
begin
    case CurStep of
        ssInstall : begin
            // тут скрывается стандарный прогрессбар
            WizardForm.ProgressGauge.Hide;

            // тут создаются конролы для freearc (прогрессбары, проценты, ...)
            CreateControls;

            // тут идет распаковка
            ...

            // тут удаляются/скрываются контролы для freearc
            ...

            // тут показывается стандарный прогрессбар для основной установки
            WizardForm.ProgressGauge.Show;
        end;
    end;
end;
Цитата dima.dmitrienko.71@fb:
но я нуб в этом деле можете помочь? »
dima.dmitrienko.71@fb, поставьте курсор на строку выше, потом скроллом наверх пока не увидите слово begin, try или case, подсвеченное красным. Этот блок и нужно закрыть end-ом. Не сможете найти сами, код до проблемной строки в студию.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:07, 23-11-2013 | #1493


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


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

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


Цитата El Sanchez:
Если с отображением дробной части, то: »
Поменял строчку на твою и все норм 100.00% ,а первую функцию MulDiv: не смог некуда вставить,добавил бегин и енд,все равно ошибку выдает,ее надо же поместить в procedure Progress();,но не смог.Я просто не понимаю почему дают примеры фри арк людям,и потом еще кучу всего надо переделывать в скрипте,что было по человечески,почему до сих пор нет наглядного конструктора где выбираешь что надо, а скрипт делается автоматически как надо,например как в InnoIDE или Game Script Generator,почему нет такого программиста кто сделает все в одном для простых людей,не понимаю.Обязательно надо кучу разных программ,Dll,и прочего ,чтоб мало мальски заработало.И этот скрипт джойнер для кого выпустили хер знает,после него тока каша получается ,а не скрипт.Не хотят сделать программу для массового пользования. Ну это просто мысли в слух,извини.
Насчет прогресса попробую еще раз скрыть при фри арк,а потом показать при распаковке родной.ВОт почему нельзя было это сделать людям сразу? или они думали скрипт распаковки фри арка,без инно будут использоватЬ?
Вот еще кстати,что хотел спросить,у Serega там написано было так
Код: Выделить весь код
procedure Progress();
begin
  with WizardForm.ProgressGauge do
//    ProgressLabel.Caption := IntToStr((Position-Min)/((Max - Min)/100)) + '%'; // часто видел, но никогда не вникал в эту формулу...
    ProgressLabel.Caption := IntToStr((Position*100)/Max) + '%'; // правильное отображение процентов
  SizeLabel.Caption := BytesToReadable(GetFileSize(ExpandConstant(CurrentFileName)), 1);
end;
Первая формула закоментированна у него,он даже написал ,что не знает что это,но если использовать без фри арк в дальнейшем,эта формула лучше или он ее закоментировал не даром?

Отправлено: 16:50, 23-11-2013 | #1494


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


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

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


Получается вот так
Код: Выделить весь код
begin
  if CurStep = ssInstall then begin  //Если необходимо, можно поменять на ssPostInstall
    WizardForm.ProgressGauge.Hide;
    WizardForm.CancelButton.Hide;
    CreateControls;
    WizardForm.ProgressGauge.Show;
    WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
    ISDoneCancel:=0;

Но все тоже самое,при распаковке фри арка стандартный бар торчит под ними,а на распаковке отображает себя,WizardForm.ProgressGauge.Hide; не срабатывает

Последний раз редактировалось FX-DENIS, 23-11-2013 в 17:50.


Отправлено: 17:28, 23-11-2013 | #1495


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

Ветеран


Contributor


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

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


Цитата FX-DENIS:
а первую функцию MulDiv: не смог некуда вставить,добавил бегин и енд,все равно ошибку выдает,ее надо же поместить в procedure Progress();,но не смо »
FX-DENIS, никуда ее в тело процедуры или функции помещать не надо, просто перемести ее в начало секции Code куда-нибудь после объявления констант, типов и глобальных переменных, у тебя там еще подобные объявления функций есть от ISDone, например, (ISArcExtract, IS7ZipExtract и т.д.).
Цитата FX-DENIS:
Первая формула закоментированна у него,он даже написал ,что не знает что это,но если использовать без фри арк в дальнейшем,эта формула лучше или он ее закоментировал не даром? »
FX-DENIS, я в предыдущем сообщении указал уже на недостатки обоих примеров. Используй с MulDiv.
Цитата FX-DENIS:
Но все тоже самое,при распаковке фри арка стандартный бар торчит под ними,а на распаковке отображает себя,WizardForm.ProgressGauge.Hide; не срабатывает »
FX-DENIS, ну, дык, понятно, что все то же самое. Ты скрыл прогрессбар, вызвал CreateControls, где создаются контролы для freearc, а потом показал прогрессбар ДО распаковки, а нужно ПОСЛЕ. В представленном коде не вижу реализации распаковки.
Цитата habib2302:
как сделать если отсутствует какой-то компонент например DirectX была снята галка с компонента и был не активным »
habib2302, где отсутствует?
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:19, 23-11-2013 | #1496


Аватара для habib2302

Ветеран


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

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


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

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


Последний раз редактировалось habib2302, 23-11-2013 в 18:28.


Отправлено: 18:21, 23-11-2013 | #1497


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


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

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


Цитата El Sanchez:
ну, дык, понятно, что все то же самое. Ты скрыл прогрессбар, вызвал CreateControls, где создаются контролы для freearc, а потом показал прогрессбар ДО распаковки, а нужно ПОСЛЕ. В представленном коде не вижу реализации распаковки. »
Вообщем куда тока не вставлял,то ошибки то не работает).Поразмыслил логически и вставил сюда,заработало
Код: Выделить весь код
 ISDoneError:=false;
      until true;
      ISDoneStop;
    end;
    HideControls;
    WizardForm.CancelButton.Visible:=true;
    WizardForm.CancelButton.Enabled:=false;
   WizardForm.ProgressGauge.Show;
  end;
  if (CurStep=ssPostInstall) and ISDoneError then begin
    Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
  end;
end;
 /////////////////////  Конец Фри арка
Вообще я думал надо все это вынести в шапку,ведь это изменение стандартного примера фри арка,остальные люди тоже будут мучаться как я с прогресс баром,с процентами.Можно даже выложить правильный фри арк скрипт от начала до конца в шапку,а тот что дается с ISDone в папке ISDone_Example.iss ,бред полный.Спасибо Санчез ,что помогаешь и терпишь меня

Отправлено: 20:03, 23-11-2013 | #1498


Аватара для habib2302

Ветеран


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

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


КТО НИБУДЬ ВООБЩЕ ОТВЕТИТ НА МОЙ ВОПРОС!!!!

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


Отправлено: 22:25, 23-11-2013 | #1499


Аватара для Dinvin4ester

Старожил


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

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


habib2302,
Не нервничай, а лучше откатись на 2- 3 страницы назад .Этот вопрос решили , а я спокойно жду . Главное спокойствие .

Отправлено: 22:50, 23-11-2013 | #1500



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




 
Переход