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

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

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

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

Ветеран


Contributor


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


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

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

 

Ветеран


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

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


Цитата GoshaPolo:
Если HKU\SOFTWARE прописывать, то выдает ошибку при установке »
Вы пишите в HKCU\Software, т.к. именно он является реестром текущего пользователя, а в HKU\текущий пользователь\Software он будет продублирован автоматом самой системой.

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

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

Отправлено: 00:36, 02-06-2012 | #181



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

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


Аватара для Johny777

Ветеран


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

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


Serega, Gnom_aka_Lexander,
спасибо!
понял, запомнил

Sanshalay,
страница выбора компонетов появляется, если у тебя есть секция компонентов

вот тебе пример пропуска страниц через код (айди страниц выше )
читать дальше »
Код: Выделить весь код
[Setup]
AppName=Test Mouse Event
AppVersion=1.5
DefaultDirName={pf}\My Application

[Components]
Name: a; Description: описание a
Name: b; Description: описание b
Name: c; Description: описание cGoshaPolo, 

[  Code]
function  ShouldSkipPage(PageID: Integer): Boolean;  
begin
  case
    PageID of
      wpSelectComponents: Result := True;
      wpSelectDir: Result := True;
      wpWelcome: Result := True;
      wpReady: Result := True;
  end;
end;

скрываем все станицы в этом примере, но появится страница готовности. Её не скроешь

другой вариант как сказал GoshaPolo через секцию [Setup] (читай справку)
•DisableDirPage
•DisableFinishedPage
•DisableProgramGroupPage
•DisableReadyMemo
•DisableReadyPage
•DisableStartupPrompt
•DisableWelcomePage

Последний раз редактировалось Johny777, 02-06-2012 в 01:38.

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

Отправлено: 00:55, 02-06-2012 | #182


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

Ветеран


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

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


Serega, спасибо, но меня интересовал не MSGBox а алгоритм сравнения числа 50.6 с VersionMS и VersionLS
Т.е. в пакете версия 50.6, getVersionNumber возвращает VersionMS=50 и VersionLS=327680
Как узнать что версия в пакете новее?

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


Отправлено: 08:10, 02-06-2012 | #183


Аватара для Gnom_aka_Lexander

Ветеран


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

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


R.i.m.s.k.y., если я правильно понял, то так:

читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[*code]
function InitializeSetup(): Boolean;
var
  VersionMS, VersionLS: Cardinal;
  Float : Extended;
  s : string;
begin
  Float := 6.7601;
  if GetVersionNumbers(ExpandConstant('{sys}\shell32.dll'), VersionMS, VersionLS) then
  begin
    if StrToFloat(IntToStr(VersionMS shr 16) + '.' + IntToStr(VersionLS shr 16)) = Float then
      s := 'Версии равны'
    else
      s := 'Версии неравны';
  end else s := 'Не удалось определить версию';
    Result := MsgBox(s, mbInformation, MB_OK) = IDOK;
end;
Обрати внимание на переменную Float и ее тип.
Цитата Johny777:
понял, запомнил »
товй-же код, но с учетом удобства case of:

читать дальше »
Код: Выделить весь код
function  ShouldSkipPage(PageID: Integer): Boolean;  
begin
  case PageID of
      wpSelectComponents, wpSelectDir, wpWelcome, wpReady: Result := True;
  end;
end;

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


Последний раз редактировалось Gnom_aka_Lexander, 02-06-2012 в 10:16.

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

Отправлено: 10:10, 02-06-2012 | #184


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

Ветеран


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

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


Gnom_aka_Lexander, немного не то
мне нужно условие больше или равно, а в примере просто равно

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


Отправлено: 10:20, 02-06-2012 | #185


Аватара для Gnom_aka_Lexander

Ветеран


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

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


R.i.m.s.k.y., ну, дык
Код: Выделить весь код
if StrToFloat(IntToStr(VersionMS shr 16) + '.' + IntToStr(VersionLS shr 16)) >= Float then
StrToFloat возвращает значение типа Extended и его можно любым образом сравнить с другим значением типа Extended каковым и является твое 50.6
могу только догадаться, что shr 16 приводит к десятичному значению, буду благодарен, если мне кто-нибудь объяснит работу этих приведений

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

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

Отправлено: 10:22, 02-06-2012 | #186


Аватара для Sanshalay

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


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

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


GoshaPolo, Johny777, ок. А как скрыть страницу Дополнительные задачи? wpSelectTasks = 9; Ее штатными методами скрыть не получается. А через код я не понимаю что убирать. Поможете?
Скрипт: http://clck.ru/d/zxAyJVzi19yFX

Отправлено: 19:46, 02-06-2012 | #187


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Sanshalay, тебе нужно убрать родную страницу задач, или SelectTasksPage, которая создается в коде?
Если родную - то так:
Код: Выделить весь код
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  Result := PageID = wpSelectTasks;
end;
Если ту, которую создаешь, то так:
Код: Выделить весь код
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  Result := PageID = SelectTasksPage.ID;
end;

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

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

Отправлено: 19:55, 02-06-2012 | #188


Аватара для Sanshalay

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


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

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


Gnom_aka_Lexander, теперь код вот такой:

Код: Выделить весь код
 function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID =wpSelectProgramGroup) then  Result:= True;
  Result := PageID = SelectTasksPage.ID;
end;
Задачи успешно скрылись. Но появилась страница wpSelectProgramGroup. блин. если бы код был мой я бы некогда так не делал (Не ставил эти страницы). А код не мой и поэтому приходится удалять их непонятно как. (Потому что я не понимаю, что надо в коде удалять)

Отправлено: 20:21, 02-06-2012 | #189


Ветеран


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

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


Цитата R.i.m.s.k.y.:
но меня интересовал не MSGBox а алгоритм сравнения числа 50.6 с VersionMS и VersionLS »
Я просто показал пример работы и подумал, что сравнить труда не составит... вот вам функция:
читать дальше »

Код: Выделить весь код
function CompareVersion(const FileName1, FileName2: string): Integer;
{ Данная функция сравнивает версии файлов указанных в FileName1 и FileName2.
  Возвращаемые значения:
    -2: если не смогли прочитать версию любого из файлов;
    -1: FileName1 > FileName2;
     0: FileName1 = FileName2;
     1: FileName1 < FileName2; }
var
  VerMS1, VerLS1, VerMS2, VerLS2: Cardinal;
  fMS1, fLS1, fMS2, fLS2: Extended;
begin
  Result := -2;
  if GetVersionNumbers(FileName1, VerMS1, VerLS1) and
     GetVersionNumbers(FileName2, VerMS2, VerLS2) then
    begin
      fMS1 := StrToFloat(IntToStr(VerMS1 shr 16) + '.' + IntToStr(VerMS1 and $FFFF));
      fLS1 := StrToFloat(IntToStr(VerLS1 shr 16) + '.' + IntToStr(VerLS1 and $FFFF));
      fMS2 := StrToFloat(IntToStr(VerMS2 shr 16) + '.' + IntToStr(VerMS2 and $FFFF));
      fLS2 := StrToFloat(IntToStr(VerLS2 shr 16) + '.' + IntToStr(VerLS2 and $FFFF));
      case fMS1 = fMS2 of
        True:
          case fLS1 = fLS2 of
            True : Result := 0;
            False:
              case fLS1 > fLS2 of
                True : Result := -1;
                False: Result := 1;
              end;
          end;
        False:
          case fMS1 > fMS2 of
            True : Result := -1;
            False: Result := 1;
          end;
      end;
    end;
end;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

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

Отправлено: 20:26, 02-06-2012 | #190



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




 
Переход