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

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

 

Аватара для Gnom_aka_Lexander

Ветеран


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

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


innot20, по версии файла встроенными функциями:
function GetVersionNumbers(const Filename: String; var VersionMS, VersionLS: Cardinal): Boolean;
VersionMS и VersionLS типа Cardinal объявить заранее, в них будут номера версии.
function GetVersionNumbersString(const Filename: String; var Version: String): Boolean;
тут номер версии вернется строкой.
Filename - полный путь к файлу, чью версию нужно узнать. справка - сила.

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


Отправлено: 21:30, 27-01-2014 | #2011



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

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


Аватара для nik1967

Старожил


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

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


innot20, http://forum.oszone.net/post-2236471.html#post2236471

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".

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

Отправлено: 22:09, 27-01-2014 | #2012


SHVtYW4=


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

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


innot20, Если же в случае отсутствия файла допустить установку, то так:
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputDir=.
DirExistsWarning=no

[Code]
function FileVersion(const FilePath: String): String;
var
  oFS: Variant;
begin
  oFS:= CreateOleObject('Scripting.FileSystemObject');
    try
      Result:= oFS.GetFileVersion(FilePath);
    except
  end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
    Result:= true;

    case CurPageID of
      wpSelectDir:
      begin
        if FileExists(ExpandConstant('{app}')+'\GameName.exe') then begin
          if FileVersion(ExpandConstant('{app}')+'\GameName.exe') < '2.0.0.1' then begin
            MsgBoxEx(WizardForm.Handle, 'На данную версию невозможно продолжить установку!', 'Не актуальная версия файла', MB_OK or MB_ICONWARNING, 0, 0);
            Result:= false;
          end;
        end;
      end;
    end;
end;
Цитата Gnom_aka_Lexander:
по версии файла встроенными функциями »
Ну ты молодец, типа он понял что ты сказал.
Справка-то сила, но в пределах разумного.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Последний раз редактировалось Nordek, 28-01-2014 в 06:02.

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

Отправлено: 05:55, 28-01-2014 | #2013


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Nordek, ты прям такой умный. Почему тогда не проверить версию файла встроенными средствами? Или только и умеешь, что криво переделывать чужие примеры? Делай тогда уже правильно, раз весь из себя такой великий гуру.
То, что ты как-бы переделал: у тебя на странице выбора папки нет положительного выхода, только отрицательный. делается это так:
читать дальше »
Код: Выделить весь код
function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result:= true;
  case CurPageID of
    wpSelectDir:
    begin
      Result:= FileExists(ExpandConstant('{app}\GameName.exe'));
      if Result then
        Result := FileVersion(ExpandConstant('{app}\GameName.exe')) < '2.0.0.1';
      if not Result then
        MsgBoxEx(WizardForm.Handle, 'На данную версию невозможно продолжить установку!', 'Не актуальная версия файла', MB_OK or MB_ICONWARNING, 0, 0);
    end;
  end;
end;

далее на встроенной функции:
читать дальше »
Код: Выделить весь код
function NextButtonClick(CurPageID: Integer): Boolean;
var
  Version: String;
begin
  Result:= true;
  case CurPageID of
    wpSelectDir:
    begin
      Result:= FileExists(ExpandConstant('{app}\GameName.exe'));
      if Result then
        Result:= GetVersionNumbersString(ExpandConstant('{app}\GameName.exe')), Version);
      if Result then
        Result := (Version < '2.0.0.1');
      if not Result then
        MsgBoxEx(WizardForm.Handle, 'На данную версию невозможно продолжить установку!', 'Не актуальная версия файла', MB_OK or MB_ICONWARNING, 0, 0);
    end;
  end;
end;
сложно что-ли набросать пример, если считаешь человека ущербным?
P.S.
Поскольку условий больше одного, то правильным будет оповестить, какое именно условие не дает идти дальше:
читать дальше »
Код: Выделить весь код
function NextButtonClick(CurPageID: Integer): Boolean;
var
  Version, StrErr: String;
  i : Integer;
begin
  Result:= true;
  case CurPageID of
    wpSelectDir:
    begin
      i := 0;
      if not FileExists(ExpandConstant('{app}\GameName.exe'))then i := 1 else
        if not GetVersionNumbersString(ExpandConstant('{app}\GameName.exe'), Version) then i := 2 else
          if not (Version < '2.0.0.1') then i := 3;
      Result:= i=0;
      if not Result then
      begin
        case i of
          1 : StrErr := 'Не обнаружен файл '+ExpandConstant('{app}\GameName.exe');
          2 : StrErr := 'Невозможно определить версию файла';
          3 : StrErr := 'На данную версию невозможно продолжить установку!';
        end;
        MsgBox(StrErr, mbError,MB_OK);
      end;
    end;
  end;
end;

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


Последний раз редактировалось Gnom_aka_Lexander, 28-01-2014 в 11:26.


Отправлено: 10:43, 28-01-2014 | #2014


SHVtYW4=


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

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


Gnom_aka_Lexander
Цитата Gnom_aka_Lexander:
ты прям такой умный. »
В пределах разумного. Я у вас мистер хлеб украл? Чего же тогда когда нужно вы мистер не пример предоставили а пытались своими нравоучениями поучить?
Может всего на один раз нужно сделать инсталлятор - а для этого ничего учить не обязательно как и справки всякие читать.
Если человек всерьёз возьмётся за это дело - тогда да, и справочную информацию почитает и у вас спрашивать ничего не будет.

Цитата Gnom_aka_Lexander:
делается это так: »
Можешь когда хочешь - для вытягивания ответа, нет ничего лучше чем манипуляция, даже если при этом придётся специально допустить ошибку.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Отправлено: 12:11, 28-01-2014 | #2015


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Nordek,
читать дальше »
Знаешь, чем отличается помощь, от настоящей помощи? Сначала была именно помощь. потом - это уже не пример, а полностью готовый для использования код, и это уже не помощь. это уже действие, которое в итоге ведет к последующему зафлуживанию форумов, когда человек видя, что тут ему сделают все, что он хочет, начинает обижаться, когда именно ты ему начнешь отказывать, видя такую наглость. Это было неоднократно и будет не раз. именно поэтому нужно различать помощь и "сделайте за меня все". я не хочу сказать, что именно данный вопрошающий начнет именно так поступать. Я хочу сказать, что нужно заставлять людей думать и читать справки. не бывает неразумных пределов в чтении справки, поскольку там есть абсолютно все. А форумы в идеале нужны для того, что-бы разъяснять непонятные моменты. тут-же вопрос прозвучал - как сделать то-то. при чем простой поиск по справке по слову version моментально дает ответ на этот вопрос. вот если-бы человек спросил "как применить функцию GetVersionNumbers или GetVersionNumbersString", то тогда мой "пример" был-бы именно помощью. А в данной ситуации - это не помощь, а "сделай за меня"

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


Отправлено: 12:23, 28-01-2014 | #2016


SHVtYW4=


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

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


Gnom_aka_Lexander
Цитата Gnom_aka_Lexander:
Я хочу сказать, что нужно заставлять людей думать и читать справки. »
Gnom_aka_Lexander, Всех людей не переделаешь - с этим трудно не согласиться. Говорить про элитные функции и процедуры и давать советы типа "смотри в сторону GetVersionNumbers" - это как минимум глупо, исходя из того что человек даже не знает что такое функция в программном коде. Забудем на мгновение про литературу - т.к для лентяев это сверхчеловеческих возможностей и справки для них это миф. Ещё раз забудем на мгновение про литературу т.к ответы можно найти и здесь не заглядывая в книгу. Уже со счёта сбился сколько раз указал ссылку на 662 сообщение и это не единичный случай того, сколько раз здесь давались ответы на одни и те же вопросы. А если никто не ответит, создают одно и тоже сообщение за сообщением. Людям не то что лень что-то читать, но даже найти готовое.

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

Последний раз редактировалось Nordek, 28-01-2014 в 13:32.


Отправлено: 13:24, 28-01-2014 | #2017


Аватара для XXXler

Ветеран


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

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


Попытка добавления в реестр следующей записи вызывает при установке ошибку 87 в ф-ции RegCreateKeyEx - это баг Inno или я чего-то не знаю об экранировании одиночных кавычек?
Код: Выделить весь код
Root: HKLM; SubKey: Microsoft\Windows\CurrentVersion\Control Panel\don't load; ValueType: string; ValueName: LClock.cpl; Components: soft\lclock; Flags: uninsdeletevalue

-------
Исходные коды проектов


Отправлено: 16:19, 28-01-2014 | #2018


SHVtYW4=


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

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


XXXler, Ты SOFTWARE пропустил:
Код: Выделить весь код
[Registry]
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\don't load; ValueType: string; ValueName: LClock.cpl; Flags: Flags: uninsdeletevalue

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.

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

Отправлено: 16:53, 28-01-2014 | #2019


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


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

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


Всем доброго времени суток!
А нет ли какого-нибудь примера по использованию эмуляции дефайнов/прагмы при компиляции из командной строки?
Надо передавать версию приложения через параметр в командной строке при компиляции, но не совсем понимаю, как это правильно сделать.

Отправлено: 18:12, 28-01-2014 | #2020



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




 
Переход