Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]


Страниц : [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

El Sanchez
10-03-2014, 11:48
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы (http://forum.oszone.net/showthread.php?p=1201499#post1201499).



Русская справка (http://rghost.ru/users/Arsen19/releases/Russkaya-spravka-k-Inno-Setup) в формате .chm к версии 5.x, авторы перевода bugron (http://forum.ru-board.com/profile.cgi?action=show&member=bugron), BagIra (http://forum.ru-board.com/profile.cgi?action=show&member=BagIra);

Inno Setup Extensions Knowledge Base (http://www.vincenzo.net/isxkb/index.php?title=Special:AllPages) - онлайн справочник, содержит ответы на многие вопросы | старая chm-версия (http://www.vincenzo.net/isxkb/images/5/57/Isxkbchm.zip);

Коллекция скриптов (http://victor-dobrov.narod.ru/InnoSetupScripts.7z) | Сборник вопросов (http://victor-dobrov.narod.ru/InnoSetupFAQ_ru-board.chm);

Сборник скриптов (http://narod.ru/disk/7844921001/Inno%20Faq%201.4.chm.html) в формате .chm от Krinkels (http://www.forum.oszone.ru/member.php?userid=223950);

Готовые решения (http://innoultra.ru/?page_id=18) с сайта innoultra.ru (http://innoultra.ru);

Cборник скриптов и примеров (http://krinkels.org/showthread.php?t=7) с сайта krinkels.org (http://krinkels.org);




Компоненты основных страниц (http://forum.oszone.net/post-1096943-634.html), (ссылка на сообщение);
Бегущая строка (http://www.forum.oszone.ru/post-1071300-518.html) - бегущая строка на WizardForm, (ссылка на сообщение);
Эффект печатной машинки (http://www.forum.oszone.ru/post-1082174-553.html) - текст на WizardForm появляется по одной букве, (ссылка на сообщение);
Ultimate Test (http://www.forum.oszone.ru/post-1212059-48.html) - проверка системных требований для инсталлятора с чёрным фоном, (ссылка на сообщение);
Проверка системных требований (http://www.forum.oszone.ru/post-1230777-185.html) - пример проверки системных требований без get_hw_caps.dll, (ссылка на сообщение);
Картинка на страницах инсталлятора (http://www.forum.oszone.ru/post-1242285-250.html) - пример скрипта, показывающий как растянуть стандартную картинку на всю страницу, (ссылка на сообщение);
Наложение изображений на стандартные кнопки (http://forum.oszone.net/post-1902066-1569.html) - пример, показывающий как использовать свои изображения на кнопках, (ссылка на сообщение);
Свой шрифт в инсталляторе (вариант №1) (http://forum.oszone.net/post-1875376-964.html) - пример скрипта для использования своего шрифта в инсталляторе, (ссылка на сообщение);
Свой шрифт в инсталляторе (вариант №2) (http://forum.oszone.net/post-1973652-702.html) - пример скрипта для использования своего шрифта в инсталляторе, (ссылка на сообщение);
Цвет прогресс-бара (http://forum.oszone.net/post-1693828-1893.html) - пример скрипта для замены цвета прогресс-бара на свой, (ссылка на сообщение);
Создание кастомного прогресс-бара (http://www.forum.oszone.ru/post-1281679-544.html) - имитация кастомного прогресс-бара, (ссылка на сообщение);
Создание кастомного чекбокса (http://forum.oszone.net/post-1798150-166.html) - пример скрипта для создания своего чекбокса, всего 12 состояний, (ссылка на сообщение);
Создание кастомного диалогового окна (http://forum.oszone.net/post-2043384-1383.html) - пример скрипта для создания своего диалогового окна, (ссылка на сообщение);
Закрашивание фона кнопок (http://forum.oszone.net/post-2184424-770.html) - пример скрипта для закрашивания заднего фона кнопок (актуально для ANSI), (ссылка на сообщение);
Закрашивание фона страниц (http://forum.oszone.net/post-2354722-752.html) - пример скрипта для закрашивания заднего фона страниц инсталлятора, (ссылка на сообщение);
Видео на фоновом окне (http://forum.oszone.net/post-1797189-152.html) - пример скрипта для воспроизведения стандартного avi-файла на фоновом окне инсталлятора, (ссылка на сообщение);
Скрипты инсталляторов для игр (http://forum.ru-board.com/topic.cgi?forum=5&topic=36421&start=0&limit=1&m=6#1) - скрипты инсталляторов для игр, (ссылка на сообщение);
Выделение всех компонентов (http://www.forum.oszone.ru/post-1276947-444.html) - пример показывает как выделить или снять отметки со всех компонентов одной кнопкой, (ссылка на сообщение);
Запрет установки в корень системного диска (http://www.forum.oszone.ru/post-1210003-46.html), (ссылка на сообщение);
Автовыбор диска установки (http://www.forum.oszone.ru/post-1217528-97.html) - определяет логические диски на компьютере и предлагает установить на первый логический диск не являющийся системным, (ссылка на сообщение);
Распаковка архивов FreeArc (http://www.forum.oszone.ru/post-1300871-729.html) - новая версия скриптов для распаковки архивов FreeArc, (ссылка на сообщение);
Работа с архивами 7z (http://forum.oszone.net/post-2012750-1182.html) - пример скрипта для работы с архивами 7z, (ссылка на сообщение);
Проверка на кирилицу в пути установки (вариант №1) (http://forum.oszone.net/post-1891325-1357.html) - пример скрипта для проверки наличия кириллицы в пути установки, (ссылка на сообщение);
Проверка на кирилицу в пути установки (вариант №2) (http://forum.oszone.net/post-1891353-1361.html) - пример скрипта для проверки наличия кириллицы в пути установки, (ссылка на сообщение);
Проверка на кирилицу в пути установки (вариант №3) (http://forum.oszone.net/post-1904620-1632.html) - пример скрипта для проверки наличия кириллицы в пути установки, (ссылка на сообщение);
Выкатывающаяся панель (вариант №1) (http://forum.oszone.net/post-1904450-1629.html) - пример создания выкатывающейся панели, (ссылка на сообщение);
Выкатывающаяся панель (вариант №2) (http://forum.oszone.net/post-1917798-2074.html) - пример создания выкатывающейся панели, (ссылка на сообщение);
Выкатывающаяся панель (вариант №3) (http://forum.oszone.net/post-2003766-1118.html) - пример создания выкатывающейся панели, (ссылка на сообщение);
Предосмотр компонентов (http://forum.oszone.net/post-2169372-662.html) - пример создания предосмотра устанавливаемых компонентов в всплывающем окне, (ссылка на сообщение);
Создание заставки SplashScreen (http://forum.oszone.net/post-2429012-1942.html) - пример создания заставки SplashScreen на основе растровых изображений, (ссылка на сообщение);
Стандартные папки Windows (http://www.forum.oszone.ru/post-1218002-103.html) - пример скрипта, позволяющий получить путь к стандартным папкам Windows, (ссылка на сообщение);
ExecAndWait.iss (http://forum.oszone.net/post-1325616-881.html) - скрипт, который позволяет запускать другие программы с ожиданием их завершения и при этом инсталлятор остаётся "живым", т.е. отвечает на действия пользователя, (ссылка на сообщение);
Проверка наличия .NET Framework (http://forum.oszone.net/post-1574554-263.html) - пример проверки и загрузки в случае отсутствия .NET Framework'a, (ссылка на сообщение);
MsiQueryProductState.iss (http://forum.oszone.net/post-1731731-2725.html) - пример скрипта для проверки установки программы, установленной с помощью Windows Installer, (ссылка на сообщение);
Определение информации о версии файла (http://forum.oszone.net/post-1643761-1146.html) - пример скрипта для определения информации о версии файла, которую можно посмотреть в свойствах файла на вкладке Версия, (ссылка на сообщение);
Поиск файла по маске (http://www.forum.oszone.ru/post-1351758-1312.html), (ссылка на сообщение);
Спрятать окно инсталлятора (http://www.forum.oszone.ru/post-1475670-2201.html) - спрятать окно инсталлятора без использования параметров командной строки /SILENT, /VERYSILENT, (ссылка на сообщение);
Окно инсталлятора поверх всех остальных (http://forum.oszone.net/post-1628287-1031.html) - окно инсталлятора поверх всех остальных, (ссылка на сообщение);
Замена меню "О программе" (http://forum.oszone.net/post-1660375-1363.html) - пример скрипта для замены текста меню "О программе", (ссылка на сообщение);
Отключить сообщение о нехватке места на HDD (http://forum.oszone.net/post-1839804-655.html) - пример скрипта для отключения сообщения о нехватке места на HDD. С небольшими изменениями может использоваться для отключения и других сообщений, вызванных внутренними обработчиками Inno, (ссылка на сообщение);
Многостраничный деинсталлятор (http://forum.oszone.net/post-2213049-1092.html) - пример скрипта для создания своих страниц в деинсталляторе, (ссылка на сообщение);
Отображение размера устанавливаемого файла (http://forum.oszone.net/post-1882481-1175.html) - пример скрипта для приведения размера устанавливаемого файла из байтовой формы в удобочитаемую (вариант №1) и отображения на втором прогрессбаре, (ссылка на сообщение);
Перевод размера файла в удобочитаемую форму (http://forum.oszone.net/post-1882594-1184.html) - пример скрипта для приведения размера файла из байтовой формы в удобочитаемую (вариант №2), (ссылка на сообщение);
Использование объекта FileSystemObject (http://forum.oszone.net/post-1998107-1061.html) - примеры использования методов и свойств объекта FileSystemObject, (ссылка на сообщение);
Копирование файлов с прогрессом (http://forum.oszone.net/post-2032676-1327.html) - пример скрипта для копирования файлов и директорий с отображением прогресса операции, маски поддерживаются, (ссылка на сообщение);
Отображение процентов при (де)инсталляции (http://forum.oszone.net/post-2124681-69.html) - пример скрипта для отображения процентов прогресса удаления/копирования файлов при (де)инсталляции, (ссылка на сообщение);
ConvertString.iss (http://forum.oszone.net/post-1643707-1144.html) - пример скрипта для конвертирование строк в различные кодировки, (ссылка на сообщение);
Работа с XML (http://forum.oszone.net/post-1798658-175.html) - архив с скриптами для работы с xml-документами, (ссылка на сообщение);
SetRestorePoint.iss (http://forum.oszone.net/post-1648495-1205.html) - пример скрипта для создания контрольной точки перед установкой, (ссылка на сообщение);
Определение локального IP-адреса (WMI) (http://forum.oszone.net/post-1669020-1496.html) - пример скрипта для определения локальных IPv4, IPv6-адресов машины (используется WMI), (ссылка на сообщение);
Определение внешнего IP-адреса (http://forum.oszone.net/post-1648368-1204.html) - пример скрипта для определения внешнего IP-адреса машины, на которой запущен инсталлятор (необходимо соединение с интернетом), (ссылка на сообщение);
IsInternetActive.iss (http://forum.oszone.net/post-1860073-827.html) - пример скрипта для определения подключения машины к Интернет, (ссылка на сообщение);
Загрузка файла из Интернет (http://forum.oszone.net/post-2267694-1626.html) - пример скрипта для загрузки файла из Интернет, один поток без докачки, (ссылка на сообщение);
Запущен ли процесс (WMI) (http://forum.oszone.net/post-1685154-1693.html) - пример скрипта для определения запущен ли определенный процесс в системе, используя WMI, (ссылка на сообщение);
Запущен ли процесс (http://forum.oszone.net/post-1800689-218.html) - пример скрипта для определения запущен ли определенный процесс в системе, (ссылка на сообщение);
Закрытие процесса (http://forum.oszone.net/post-2401734-1524.html) - пример скрипта для закрытия запущенного процесса, (ссылка на сообщение);
Закрепить ярлык на панели задач в Windows 7 (вариант №1) (http://www.forum.oszone.ru/post-1444931-2009.html) - пример закрепления ярлыка приложения на панели задач в Windows 7, (ссылка на сообщение);
Закрепить ярлык на панели задач в Windows 7 (вариант №2) (http://forum.oszone.net/post-2371597-1027.html) - пример закрепления ярлыка приложения на панели задач в Windows 7, (ссылка на сообщение);
Установка гаджета в Windows 7 (http://forum.oszone.net/post-1861100-834.html) - пример установки гаджета в Windows 7 (требуется юникодная версия Inno), (ссылка на сообщение);
Установка драйвера устройства (http://forum.oszone.net/post-1674976-1599.html) - пример скрипта для установки legacy- и WDM- (требуется утилита devcon.exe) драйверов устройств, (ссылка на сообщение);




ISTool (http://sourceforge.net/projects/istool/) - неплохой редактор скриптов Inno Setup.
Последняя версия: 5.3.0.1 [29.09.2009] - Скачать (http://sourceforge.net/projects/istool/files/istool-5.3.0.1.exe/download) | зеркало (http://sourceforge.net/settings/mirror_choices?projectname=istool&filename=istool-5.3.0.1.exe);


Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
Последняя версия: 1.0.3.1 [23.03.2008] - Скачать (http://www.freedownloadsplace.com/Inno-Script-Generator-Download-31392.htm) | зеркало на русифицированную программу (http://ifolder.ru/21111525);
Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.


Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
Последняя версия: 2.0.8 [12.11.2006] - Скачать (http://www.mediafire.com/?2m65h5urdcmxrjg);
Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.


Inno Setup GameScript Generator (http://forum.csmania.ru/viewtopic.php?f=38&t=4688) - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;


ISSkin (http://isskin.codejock.com/) - Программа для создания и добавления в инсталлятор скинов. Инструкция (http://isskin.codejock.com/gettingstarted.asp).
Последняя версия: 3.0.0.0 [19.01.2010] - Скачать (http://isskin.codejock.com/downloads/ISSkinExample.zip);


ISSJoiner (http://issjoiner.codeplex.com/) - Программа для объединения нескольких скриптов InnoSetup в один.
Последняя версия: 3.0 [23.07.2009]


Converter (http://forum.oszone.net/post-1216149-86.html) - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
Последняя версия: 0.1.4 [13.03.2010] - Скачать (http://forum.oszone.net/attachment.php?attachmentid=41380&d=1268419710);


RegExporter (http://mitrichsoftware.wordpress.com/inno-setup-tools/regexporter/) - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
Последняя версия: 1.2.0 [23.09.2014] - Скачать (https://yadi.sk/d/0G42pJTObceYW);


[hr]
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Inno Setup [все вопросы] часть 1 (http://forum.oszone.net/thread-60604.html)
Скрипты Inno Setup. Помощь и советы [часть 2] (http://forum.oszone.net/thread-148703.html)
Скрипты Inno Setup. Помощь и советы [часть 3] (http://forum.oszone.net/thread-190621.html)
Скрипты Inno Setup. Помощь и советы [часть 4] (http://forum.oszone.net/thread-218969.html)
Скрипты Inno Setup. Помощь и советы [часть 5] (http://forum.oszone.net/thread-235078.html)

Скрипты Inno Setup. Помощь и советы [часть 6] (http://forum.oszone.net/thread-257328.html)

Farser21
10-03-2014, 12:16
Всем привет, как сделать так, чтобы установка продолжалась в том случае если в папку куда устанавливаешь есть файл WorldOfTanks.exe. Т.е. Если в папке куда устанавливаешь нет файла WorldOfTanks.exe, то выскакивает окно, что сюда установить компоненты нельзя.

Заранее спасибо!

Mailchik
10-03-2014, 13:31
Farser21, [Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
MsgBox('Сюда установить компоненты нельзя!', mbError, MB_OK);
Result := False;
end;
end;
end;

Farser21
10-03-2014, 14:05
Mailchik, спасибо работает. Но есть одна проблема. Когда я выбираю папку без файла WorldOfTanks.exe, выскакивает окно, я нажимаю ок. Потом оно сразу перекидывает меня уже на следующую страницу выбора компонентов. Можно сделать, чтобы при нажатие ок на окошке, оставалось на данной странице?

Возможно я неправильно совместил?
Как правильно соединить это?
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= true;

case CurPageID of
wpSelectDir:
begin
if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
if FileVersion(ExpandConstant('{app}')+'\WorldOfTanks.exe') < '0.9.0' then begin
MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии игры! Моды предназначены для версии патча 0.9.0 ', 'Моды не подходят у данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;
end;
end;
end;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
MsgBox('Сюда установить компоненты нельзя!', mbError, MB_OK);
Result := False;
end;
end;
end;

R.i.m.s.k.y.
10-03-2014, 14:45
есть такая функция сравнения версий function CompareVersion(VerMStoCompare, VerLStoCompare: Cardinal; const FileName2: string): Integer;
{ Данная функция сравнивает версии файлов указанных в FileName1 и FileName2.
Возвращаемые значения:
-2: если не смогли прочитать версию любого из файлов;
-1: FileName1 > FileName2;
0: FileName1 = FileName2;
1: FileName1 < FileName2;
FileName1 = передаваемые числа версий для сравнения с файлом FileName2, условия теже:
-1: файл "старый"
0: версии равны
1: файл новее}

var
VerMS1, VerLS1, VerMS2, VerLS2: Cardinal;
fMS1, fLS1, fMS2, fLS2: Extended;
begin
Result := -2; VerMS1 := VerMStoCompare; VerLS1 := VerLStoCompare;
if GetVersionNumbers(FileName2, VerMS2, VerLS2)
//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;
// MsgBox(FileName2 + #13#10 +
// 'VerMS1 = ' + IntToStr(VerMS1) + ' VerLS1 = ' + IntToStr(VerLS1) + #13#10 +
// 'VerMS2 = ' + IntToStr(VerMS2) + ' VerLS2 = ' + IntToStr(VerLS2) + #13#10 +
// IntToSTR(Result), mbInformation, MB_OK);
end;

в ней ошибка: версия 1,0,0,6 будет БОЛЬШЕ чем 1,0,0,20
Подскажите, пожалуйста, как исправить

______________________

Farser21, прятать надо не под спойлер, а под тег code
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
MsgBox('Сюда установить компоненты нельзя!', mbError, MB_OK);
Result := False;
end; //if
if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
if FileVersion(ExpandConstant('{app}')+'\WorldOfTanks.exe') < '0.9.0' then begin
MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии игры! Моды предназначены для версии патча 0.9.0 ', 'Моды не подходят у данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;end;//if
end;//case
end;

кстати когда я пропустил момент что инно научился сравнивать текстовые переменные знаками неравенства?

Farser21
10-03-2014, 15:04
R.i.m.s.k.y., спасибо. Все работает.

R.i.m.s.k.y.
10-03-2014, 15:34
Господа состоятельные кроты, помогите разобраться:

А) пользователь user запускает windows, приходит одмин и запускает установщик от себя - admin
Кто CurrentUser и OriginalUser в терминах Inno? (runasoriginaluser & runascurentuser)

Б) unins.exe понимает переменные вида {src}? т.е. если программа установлена в C:\program files\prog и там же лежит деинсталлятор, созданный инно в процессе установки unins000.exe, можно проверить наличие файла C:\program files\prog\file.txt по ExpandConstant('{src}\prog\file.txt') в процессе удаления программы?

Nordek
10-03-2014, 16:00
Архив содержит:
ITDownloader + Rus
ITCallback
ITTray

kot-da-vinci
10-03-2014, 18:06
Добрый день всем.

Можно ли разделить секцию [Tasks] на 2 странички? У меня там сейчас 2 независимые группы exclusive опций. После добавления новых вариантов в одну из групп они перестали помещаться на одну страничку без скроллбара.
Видел в архиве этой темы пример кода по созданию своей странички с чекбоксом и сохранению его состояния в переменной кода. Но остается непонятным как активировать выбранный вариант в группе опций.
Может есть какой-нибудь другой способ разделить группы по страничкам?

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

type
TVersionInfo = record
Major, Minor, Release, Build: WORD;
end;

function GetFileVersion(const FileName: string): TVersionInfo;
var
VerMS, VerLS: Cardinal;
begin
if GetVersionNumbers(FileName, VerMS, VerLS) then
begin
Result.Major := VerMS shr 16;
Result.Minor := VerMS and $FFFF;
Result.Release := VerLS shr 16;
Result.Build := VerLS and $FFFF;
end
else
begin
Result.Major := 0;
Result.Minor := 0;
Result.Release := 0;
Result.Build := 0;
end;
end;

function GetInt(var Str: String): Integer;
var
DotPos: Integer;
begin
Result := 0;
DotPos := Pos('.', Str);
if DotPos > 0 then
begin
Result := StrToIntDef(Copy(Str, 1, DotPos - 1), 0);
Str := Copy(Str, DotPos + 1, Length(Str) - DotPos);
end
else
begin
Result := StrToIntDef(Str, 0);
Str := '';
end;
end;

function StrToFileVer(const FileVerStr: String): TVersionInfo;
var
LocalStr: String;
begin
LocalStr := FileVerStr;

Result.Major := GetInt(LocalStr);
Result.Minor := GetInt(LocalStr);
Result.Release := GetInt(LocalStr);
Result.Build := GetInt(LocalStr);
end;

function CompareVer(Ver1, Ver2: TVersionInfo): Integer;
// Ver1 > Ver2 ====> result > 0
// Ver1 = Ver2 ====> result = 0
// Ver1 < Ver2 ====> result < 0
begin
Result := Integer(Ver1.Major) - Integer(Ver2.Major);
if Result = 0 then
begin
Result := Integer(Ver1.Minor) - Integer(Ver2.Minor);
if Result = 0 then
begin
Result := Integer(Ver1.Release) - Integer(Ver2.Release);
if Result = 0 then
begin
Result := Integer(Ver1.Build) - Integer(Ver2.Build);
end;
end;
end;
end;

function InitializeSetup(): Boolean;
var
BSVer, UpdateVer, MinAppVer: TVersionInfo;
begin
// Проверка на совместимость установленной версии с этим апдейтом
BSVer := GetFileVersion('MyPath\MyApp.exe');
UpdateVer := StrToFileVer(ExpandConstant('{#MyAppVersion}'));
MinAppVer := StrToFileVer(ExpandConstant('{#MinAppVersionForUpdate}'));
Result := CompareVer(MinAppVer, BSVer) <= 0;
if not Result then
begin
MsgBox(Format(ExpandConstant('{cm:MyAppIsTooOld}'), [BSVer.Major, BSVer.Minor, BSVer.Release, BSVer.Build, MinAppVer.Major, MinAppVer.Minor, MinAppVer.Release, MinAppVer.Build]), mbError, MB_OK);
Exit;
end;
Result := CompareVer(UpdateVer, BSVer) >= 0;
if not Result then
begin
MsgBox(Format(ExpandConstant('{cm:MyAppIsNewer}'), [BSVer.Major, BSVer.Minor, BSVer.Release, BSVer.Build]), mbError, MB_OK);
Exit;
end;
// ===============================================================
end;

El Sanchez
10-03-2014, 19:32
кстати когда я пропустил момент что инно научился сравнивать текстовые переменные знаками неравенства? »
R.i.m.s.k.y., сравнение строк как в Delphi:

Strings are compared according to the ordinal values that make up the characters that make up the string. Character types are treated as strings of length 1.

в ней ошибка: версия 1,0,0,6 будет БОЛЬШЕ чем 1,0,0,20
Подскажите, пожалуйста, как исправить »
R.i.m.s.k.y., дополнить каждый токен версии лидирующими нулями, потом строки можно сравнивать:

////////////////////////////////////////////////////
function FormatVersion(const szVer: String): String;
var
i: Integer;
begin
with TStringList.Create do
try
StringChangeEx(szVer, '.', ',', True);
CommaText := szVer;
for i := 0 to Count-1 do Strings[i] := Padz(Strings[i], 5);
Result := CommaText;
StringChangeEx(Result, ',', '.', True);
finally
Free;
end;
end;

/////////////////////////////
procedure InitializeWizard();
begin
if FormatVersion('10.0.0.6') < FormatVersion('10.0.0.20') then
MsgBox('True', mbInformation, MB_OK) else MsgBox('False', mbInformation, MB_OK);
end;


А) пользователь user запускает windows, приходит одмин и запускает установщик от себя - admin
Кто CurrentUser и OriginalUser в терминах Inno? (runasoriginaluser & runascurentuser) »
R.i.m.s.k.y., admin.
Б) unins.exe понимает переменные вида {src}? т.е. если программа установлена в C:\program files\prog и там же лежит деинсталлятор, созданный инно в процессе установки unins000.exe, можно проверить наличие файла C:\program files\prog\file.txt по ExpandConstant('{src}\prog\file.txt') в процессе удаления программы? »
R.i.m.s.k.y., {src} - нет, {app} - да.

Farser21
10-03-2014, 20:08
Всем привет, как сделать слайды на странице установки? И как добавить другой более красивый прогресс бар или изменить?

Вот мой скрипт, заранее спасибо за ответы.

http://rghost.ru/52965051

Serega
10-03-2014, 20:29
в ней ошибка: версия 1,0,0,6 будет БОЛЬШЕ чем 1,0,0,20 »
В ней нет ошибки, просто перед тем как сравнивать, версии нужно привести к одному виду.
дополнить каждый токен версии лидирующими нулями, потом строки можно сравнивать »
Красиво придумал, краткость сестра таланта :good:
А) пользователь user запускает windows, приходит одмин и запускает установщик от себя - admin
Кто CurrentUser и OriginalUser в терминах Inno? (runasoriginaluser & runascurentuser) »
admin. »
Извиняюсь, но чуть дополню:
CurrentUser-admin
OriginalUser-пользователь user
{src} - нет, {app} - да. »
Все константы прописываются жёстко в момент инсталляции, т.е. {app} или {src} будут прописаны для деинсталлятора в одном виде C:\program files\prog\.

Mat_y
11-03-2014, 09:41
Вопрос.
В справке есть такие вещи:
/LOADINF="filename"
Указывает инсталлятору загрузить параметры установки из указанного файла после проверки командной строки. Этот файл может быть подготовлен с помощью '/SAVEINF=' command.

Не забудьте ставить кавычки при использовании имен, содержащих пробелы.

/SAVEINF="filename"
Указывает инсталлятору сохранять параметры установки в указанный файл.

Не забудьте ставить кавычки при использовании имен, содержащих пробелы.


Так вот... я что-то не могу понять... это можно как-то в CODE прописать при компиляции или же это только для запуска файла из ком. строки?

R.i.m.s.k.y.
11-03-2014, 10:10
Mat_y, для запуска установщика из комстроки
впрочем я частенько делал установщик в установщике: основной установщик компилировал и вкладывал как программу во внешний установщик который уже запускал внутренний с нужными параметрами

R.i.m.s.k.y.
11-03-2014, 12:04
Serega, El Sanchez, curuninstallstepchange ругается на невозможность вызова ExecAsOriginalUser
что не есть хорошо т.к. удаление производится от одмина а вычистить HKCU нужно пользователю
Фокус с HKU\SID не пройдет тк только программа, запускаемая из под ExecAsOriginalUser с соответствующим параметром знает чего нужно вычищать пользователю
Как обойти невозможность вызова ExecAsOriginalUser в curuninstallstepchange?

Dodakaedr
11-03-2014, 12:08
Ребята подскажите как запретить программе доступ к интернету в inno?

R.i.m.s.k.y.
11-03-2014, 12:13
Dodakaedr, общий вопрос - общий ответ: настройку программы запрета хождения в нэт применить на этапе установки программы

Serega
11-03-2014, 12:32
тк только программа, запускаемая из под ExecAsOriginalUser знает чего нужно вычищать пользователю
Как обойти сие? »
Вижу только один путь, поднимаете пользователю права, производите чистку и затем главное не забудьте понизить их.

R.i.m.s.k.y.
11-03-2014, 12:38
Вижу только один путь, поднимаете пользователю права, »
а) как? пример кода?
б) можно ли через runas user password prog params ? имя пользователя и SID уже знаю

kot-da-vinci
11-03-2014, 12:41
дополнить каждый токен версии лидирующими нулями, потом строки можно сравнивать
Красиво придумал, краткость сестра таланта »
А если в версии будет 3 или 4 цифры?




© OSzone.net 2001-2012