Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup - создание инсталляционных пакетов (Часть 15)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151

Открыть новую тему     Написать ответ в эту тему

Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inno Setup
 
 

Предыдущие части
Это мощное бесплатное средство для создания установочных пакетов (дистрибутивов) программ. Поддерживается шифрование, установка пароля, различные задачи по завершении установки.
По сравнению с NSIS (основной конкурент на бесплатной основе) проще в настройке, имеет более понятную структуру скрипта, но генерит на 200-300 кб больший инсталятор. На данный момент он конкурирует и даже превосходит многие коммерческие установщики по функциональности и стабильности.
All version | Исходники проекта
 
Последние версии:
Inno Setup QuickStart Pack (Unicode) 6.1.2 [15.11.2020]
Скачать (4.23 Mb)
 
Inno Setup 6.2.2 [15.02.2023]
Скачать (4.50 Mb)
 
Что нового? | Что нового v.6x?  
 
Русский язык для Inno Setup v6.x
Скачать
 
Русский язык для Inno Setup v5.x
Скачать
 
Русская справка к версии - 6.0.0 beta | 5.6.1 - Зеркало
 
Последняя версия с поддержкой Windows 95 - 5.1.7
 
Последняя версия с поддержкой Windows 98/ME/NT4 - 5.4.3 ANSI
 
Последняя версия с поддержкой Windows 2000/XP/2003 - 5.6.1 (ANSI, Unicode)
 

Расширенная версия от китайских собратьев. Офсайт
Inno Setup Compiler 5.5.0-5.2 build 121216
Скачать (2.98 Mb) |Скачать (2.98 Mb) - зеркало GoogleDrive | Что нового
 
Inno ISCmplr Setup 5.5.1 build 120726
Скачать (1.73 Mb) | Что нового
 
Добавляет списку компонентов возможность сворачивать дочерние элементы. Содержит более удобный редактор, кроме того, компилятор имеет множество других возможностей и новых функций. На сайте автора также есть дополнительные библиотеки.
 
Русский язык для Inno Setup Enhanced (Restools) версии 5.4.x (ansi и unicode) от vadimsva
Скачать
 


Документация, FAQ, и различные примеры для Inno Setup - Здесь можно найти различную документацию, примеры, архивы веток InnoSetup для оффлайн просмотра, и т.д.
 
Дополнительные библиотеки для Inno Setup - InnoTools Downloader, коллекция DLL файлов, распаковка архивов 7-zip и FreeArc и т.д.
 
Дополнительные утилиты для Inno Setup - сюда входят различные распаковщики, надстройки над Inno Setup, различные генераторы скриптов, утилита объединения скриптов и т.д.
 
Скрипты инсталляторов для игр - В этом разделе можно найти различные обложки и скрипты инсталляторов для игр.  
 
Скрипт для добавления ярлыков в Game Explorer (работает только в Windоws 7)

Родственные темы:

Inno Setup плюс внешние упаковщики - обсуждение FreeArc+Inno, Precomp+Inno, 7zip+Inno и Inno+остальные внешние упаковщики.
 
Пережатиe/Pекомпрессия/Oптимизация файлов для лучшего сжатия - обсуждение того, какими утилитами/способами лучше сжимать, чтобы получить как можно меньший размер инсталятора.

Примечание для всех участников

Правила топика посвященному Inno Setup  
 
Перед тем, как задать вопрос: Первый вариант: загрузите "версию для печати" (ссылка справа вверху, над номерами страниц) и попробуйте поискать средствами браузера (ctrl+F). Второй вариант: для экономии трафика и для более удобного поиска, скачайте оффлайн версию форума для просмотра в разделе Документация.
Большинство типовых задач уже решались, причем неоднократно!  
Пожалуйста, не захламляйте тему и используйте поиск, этим вы избавите тему от флуда!

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:29 13-10-2013 | Исправлено: Komandor, 10:55 21-01-2024
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleksoid1978
 
В сам скрипт она обычно не пишется, но можно прописать примерно так (это в коде старого инсталлятора для Process Hacker 3 и я сейчас им пользуюсь):
 
#if VER < EncodeVer(5,5,9)
  #error Update your Inno Setup version (5.5.9 or newer)
#endif
 
а при распаковке консольный Innounp выводит номер версии соответствующей формату контейнера который у неё периодически меняется, что и затрудняет либо блокирует распаковку. Например формат контейнера менялся в версии 5.5.7, и все версии 5.5.7 - 5.5.9 будут распознаны распаковщиком как 5.5.7.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 09:37 18-10-2019
codecs



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
сразу в [Files] никак нельзя что ли, в смысле обычным флагом regserver ?

не знаю как сейчас, но раньше на 64-битных системах он не отрабатывал, а с Run проблем никогда не было

Всего записей: 2004 | Зарегистр. 22-07-2003 | Отправлено: 10:12 18-10-2019
7sh3

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
codecs
это могло быть только в случае если сам файл для регистрации x64, а инсталлятор собирался как чистый x86, в общем без ArchitecturesInstallIn64BitMode=x64

Всего записей: 13878 | Зарегистр. 16-10-2005 | Отправлено: 11:56 18-10-2019
codecs



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
этому багу было пофиг на ключ ArchitecturesInstallIn64BitMode=x64

Всего записей: 2004 | Зарегистр. 22-07-2003 | Отправлено: 13:44 18-10-2019
7sh3

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
codecs
не знаю, не видел такого бага с регистрацией, по крайней мере в версиях начиная с 5.3.x

Всего записей: 13878 | Зарегистр. 16-10-2005 | Отправлено: 15:11 18-10-2019
Bannan



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Компиляция Inno Setup 6.0.3 с поддержкой WindowsХР. Только обращаю ваше внимание, что не все новые функции Inno поддерживаются WindowsXP. Например, функции создания сообщений TaskDialogMsgBox и SuppressibleTaskDialogMsgBox в WinXP работать не будут, т.к. для их обработки используется соответствующий вызов из системной библиотеки Comctl32.dll, а в данной библиотеке ХР этот функционал отсутствует. То есть для работы этих функций минимальная версия ОС должна быть Vista.

Всего записей: 506 | Зарегистр. 30-07-2011 | Отправлено: 17:24 18-10-2019
sega1971

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При переходе на версию 6 заметил, что в диалогах перестала отображаться картинка слева (та, которая описывается при помощи WizardImageFile). Что нужно исправить?
 
И ещё вопрос: если использовать WizardStyle=classic, то у меня внизу формы через процедуру InitializeWizard была размещена ссылка на сайт разработчика. Если использовать WizardStyle=modern, то ссылка не отображается. Как исправить?

Всего записей: 31 | Зарегистр. 12-03-2008 | Отправлено: 18:17 18-10-2019
codecs



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
не знаю, не видел такого бага с регистрацией

очевидно ты еще много чего не видел - если бы не было этого бага, то никто бы не искал обходные пути

Цитата:
перестала отображаться картинка слева

она еще с 5.6.0 по дефолту не отображается, а чтоб включить надо вписать DisableWelcomePage=False

Цитата:
Если использовать WizardStyle=modern, то ссылка не отображается

при размере 100% она отображается - т.е. в скрипте надо исправить привязку на нижний край
или всегда использовать WizardSizePercent=100
 

Всего записей: 2004 | Зарегистр. 22-07-2003 | Отправлено: 19:11 18-10-2019
7sh3

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
codecs

Цитата:
очевидно ты еще много чего не видел - если бы не было этого бага, то никто бы не искал обходные пути  

повторяю для непонятливых - бага такого нет по крайней мере в версиях начиная с 5.3.x
если есть доказательство обратного - предъяви, если нет - просто сиди и не умничай со своими очевидностями )

Всего записей: 13878 | Зарегистр. 16-10-2005 | Отправлено: 21:40 18-10-2019
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спсб всем не равнодушным. regsvr32 победил, оказалось проще - у меня переменные путей прописывались позже чем регистрация длл - от сюда и ошибка регистрации.
 
Хочу еще раз о помощи попросить!  
 
Source: {#AppPath_11}*.*; DestDir:{app}\;OnlyBelowVersion: 6.0; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: users-full
Source: {#AppPath_18}*.*; DestDir:{app}\;MinVersion: 6.0; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: users-full
 
тут забито жестко - для XP и W7 и выше! Можно ли как то к этому прикрутить свой параметр(ключ), который отменит OnlyBelowVersion и MinVersion?
 
например, запуская на W7 я хочу не AppPath_18 а AppPath_11! Что то на подобии
setup.exe /xp и setup.exe /w7
 
разбор параметров я сделал, но как заставить отмениться OnlyBelowVersion и MinVersion????
 
если без ключей - ставит под ОС, если с ключем то на усмотрение пользователя

Код:
function CmdLineParamExists(const Value: string): Boolean;
var
  I: Integer;  
begin
  Result := False;
  for I := 1 to ParamCount do
    if CompareText(ParamStr(I), Value) = 0 then
    begin
      Result := True;
      Exit;
    end;
end;
function XP: Boolean;
begin
  Result := not CmdLineParamExists('/XP');
end;
function W7: Boolean;
begin
  Result := not CmdLineParamExists('/W7');
end;

 
S.O.S

Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 22:13 18-10-2019 | Исправлено: Kilyan, 22:42 18-10-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilyan
 
Можно, через вызовы функций Version API в Паскаль скрипте. Только нужно учитывать, что версии ОС после Win8 - начиная с Win81 в вызове GetVersionEx API сообщают версию как 6.2 и или что прописано в манифесте программы (выписка из MSDN):

Цитата:
With the release of Windows 8.1, the behavior of the GetVersionEx API has changed in the value it will return for the operating system version. The value returned by the GetVersionEx function now depends on how the application is manifested.
 
Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). Once an application is manifested for a given operating system version, GetVersionEx will always return the version that the application is manifested for in future releases.

а потому, если программа не использует функции проверки версии ОС из Version API, то проблемы на ОС версий старше 6.2 гарантированы.  
 
В NSIS для решения данной задачи используется библиотека StdUtils в которой есть такие проверки, но так как её исходники открыты под GPL, то хороший программист может портировать её под инку добавив в неё ещё один полезный инструмент. А почему бы и нет? Ведь значительная часть работы - создание алгоритмов и проверка их взаимодействия с ОС сделана её автором и с его согласия (как-то элементарная порядочность и уважение к чужому труду этого требуют) другой человек может использовать его труд сэкономив часть времени и труда на свою разработку.
 
Добавлено:
Из-за изменений в Win32API ваш код даст ошибку после Win8 (версия ОС 6.2), так что тут лучше работать через вызовы системного Version API благо сами разработчики дают пример на C++ как это можно сделать:

Код:
#include <windows.h>
#include <stdio.h>
#include <VersionHelpers.h>
 
int  
__cdecl
wmain(
    __in int argc,  
    __in_ecount(argc) PCWSTR argv[]
    )
{
    UNREFERENCED_PARAMETER(argc);
    UNREFERENCED_PARAMETER(argv);
 
    if (IsWindowsXPOrGreater())
    {
        printf("XPOrGreater\n");
    }
 
    if (IsWindowsXPSP1OrGreater())
    {
        printf("XPSP1OrGreater\n");
    }
 
    if (IsWindowsXPSP2OrGreater())
    {
        printf("XPSP2OrGreater\n");
    }
 
    if (IsWindowsXPSP3OrGreater())
    {
        printf("XPSP3OrGreater\n");
    }
 
    if (IsWindowsVistaOrGreater())
    {
        printf("VistaOrGreater\n");
    }
 
    if (IsWindowsVistaSP1OrGreater())
    {
        printf("VistaSP1OrGreater\n");
    }
 
    if (IsWindowsVistaSP2OrGreater())
    {
        printf("VistaSP2OrGreater\n");
    }
 
    if (IsWindows7OrGreater())
    {
        printf("Windows7OrGreater\n");
    }
 
    if (IsWindows7SP1OrGreater())
    {
        printf("Windows7SP1OrGreater\n");
    }
 
    if (IsWindows8OrGreater())
    {
        printf("Windows8OrGreater\n");
    }
 
    if (IsWindows8Point1OrGreater())
    {
        printf("Windows8Point1OrGreater\n");
    }
 
    if (IsWindows10OrGreater())
    {
        printf("Windows10OrGreater\n");
    }
 
    if (IsWindowsServer())
    {
        printf("Server\n");
    }
    else
    {
        printf("Client\n");
    }
}


----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 13:08 19-10-2019
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG с этим вообще не возникает проблем, перечитайте ещё раз мой вопрос

Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 14:50 19-10-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilyan
 
Я потому и подумал про свой разбор версии ОС - воспользоваться им как условием выбора пользовательской функции, а проверки самой инке поставить "от минимум до максимум" по факту просто выключив их. Ничего другого по опыту предложить не могу. Когда-то так пришлось поступить в Wise Install Maker - проверки самой среды не позволяли решить задачу, а отключить их можно было только поставив "допустимо" на весь диапазон условий. Потому и тут предложил это многократно проверенное решение:
 
 если совсем отключить проверку нельзя, то надо изменить её параметры на "всё допустимо".  
 
Идея такова.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 15:25 19-10-2019
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот решение, если кому надо
 

Код:
 
Files]
 
;Source: {#AppPath_11}oledb\bin\oraoledb11.dll; DestDir:{app}\oledb\bin; Check:XP; Flags: regserver ; Permissions: users-full
;Source: {#AppPath_18}oledb\bin\oraoledb18.dll; DestDir:{app}\oledb\bin; Check:W7; Flags: regserver ; Permissions: users-full  
 
Code]
 
function IsWindowsVersionOrNewer(Major, Minor: Integer): Boolean;
var
  Version: TWindowsVersion;
begin
  GetWindowsVersionEx(Version);
  Result :=
    (Version.Major > Major) or
    ((Version.Major = Major) and (Version.Minor >= Minor));
end;
 
function IsWindowsXPOrNewer: Boolean;
begin
  Result := IsWindowsVersionOrNewer(5, 1);
end;
function IsWindowsVistaOrNewer: Boolean;
begin
  Result := IsWindowsVersionOrNewer(6, 0);
end;
 
function IsWindows7OrNewer: Boolean;
begin
  Result := IsWindowsVersionOrNewer(6, 1);
end;
 
function IsWindows8OrNewer: Boolean;
begin
  Result := IsWindowsVersionOrNewer(6, 2);
end;
 
function IsWindows10OrNewer: Boolean;
begin
  Result := IsWindowsVersionOrNewer(10, 0);
end;
 
function CmdLineParamExists(const Value: string): Boolean;
var
  I: Integer;  
begin
  Result := False;
  for I := 1 to ParamCount do
    if CompareText(ParamStr(I), Uppercase(Value)) = 0 then
    begin
      Result := True;
      Exit;
    end;
end;
 
function XP: Boolean;
begin  
  if CmdLineParamExists('/XP') then Result:=true else
  if CmdLineParamExists('/W7') and NOT IsWindows7OrNewer then Result :=false else
  if NOT IsWindows7OrNewer then Result:=true;
end;
 
function W7: Boolean;
begin
  if CmdLineParamExists('/W7') then Result:=true else
  if CmdLineParamExists('/XP') and IsWindows7OrNewer then Result :=false else
  if IsWindows7OrNewer then Result:=true;
 
end;


Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 20:35 19-10-2019 | Исправлено: Kilyan, 20:36 19-10-2019
sega1971

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
при размере 100% она отображается - т.е. в скрипте надо исправить привязку на нижний край
или всегда использовать WizardSizePercent=100

 
Спасибо. Помогло.

Всего записей: 31 | Зарегистр. 12-03-2008 | Отправлено: 17:55 23-10-2019
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще один вопрос: ShellExec понятное дело может открыть урл, а как на счет example@email.com ??
Как открыть программу связанную с почтовым ящиком? Задача - клик на лэйбл - отправить мэйл!
 
Добавлено:
Вопрос снимается, уже понял
ShellExec('open', 'mailto:{#AppUPL}?subject={#MyAppName} v{#MyAppVersion}&body=Расскажи о проблеме', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)

Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 20:15 23-10-2019
sjwrec



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Моя очередная версия модульного скрипта репака для расширенной версии Inno Setup.
Inno Setup Compiler - Необходима версия не ниже 5.5.1.ее1(u) 121216 (есть в шапке)
 
ENGINE v7.0 Ядро R6
Тип инсталла: FULLSCREEN ALL in ONE
Пример для упаковки игры: Assassin's Creed Odyssey
Скрин
Скачать с ЯД

Всего записей: 473 | Зарегистр. 01-10-2010 | Отправлено: 18:13 26-10-2019
MAFyodorov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Нужно при компиляции скрипта через командную строку передать параметр с путем к файлам, который использовать в разделе Files, н-р:
compil32 "script.iss" -CmdPath "D:\Samples"
 
script.iss:
 
#define DefPath "D:\Install"
 
[Files]
Source: {param:CmdPath|DefPath}\Install\App.exe; DestDir: {app};
 
В документации не нашел, как такое реализовать?

Всего записей: 4 | Зарегистр. 28-12-2006 | Отправлено: 15:16 28-10-2019
iglezz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MAFyodorov
В правке это есть
Код:
/D<name>[=<value>]  Emulate #define public <name> <value>  

Таким образом в скрипте строчка
Код:
#define DefPath "D:\Install"  
соответствует записи командной строки:
Код:
/DDefPath="D:\Install"  

Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 16:40 28-10-2019 | Исправлено: iglezz, 16:43 28-10-2019
MAFyodorov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iglezz
Спасибо, помогло!!!

Всего записей: 4 | Зарегистр. 28-12-2006 | Отправлено: 17:23 28-10-2019 | Исправлено: MAFyodorov, 17:24 28-10-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup - создание инсталляционных пакетов (Часть 15)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru