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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
rainur88

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ultimo
да я знаю, попробовал не получилось
автору скрипта написал,может он ответить          
 
 
 
Добавлено:
а как сделать чтобы при установке игры отобразилось время русский на русском а английски на английском https://s8.hostingkartinok.com/uploads/images/2017/12/fd523bb34548ce9a427327bd87207a40.png
я в скрипте указал english.ini на секунда и минута не отображается на английском ,может вы поможете скрип с файлом и http://rgho.st/7WrB8c767

Всего записей: 50 | Зарегистр. 30-10-2017 | Отправлено: 10:41 17-12-2017 | Исправлено: rainur88, 11:18 17-12-2017
ZVSRus



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

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

Пару дней данный вопрос задавался на другом форуме (наверное были вы), не ответил, думал кто из профессионалов ответит, никто не ответил.
В скрипте у вас за данный таймер отвечает http://s04.radikal.ru/i177/1712/e7/cbbb8fac94e2.png
что подчёркнуто, так же видите подсветку синтаксиса, это отвечает за ваш таймер, нигде ни слова про минуты, секунды. Так вот, могу сильно ошибаться, но язык таймера наверное соответствует языку системы.
Если вы запустите ваш установщик на английской системе, а язык самого установщика выберете русский, то секунды и минуты все равно будут на английском. В этом ничего криминального я не вижу, вряд ли рядовой пользователь с русской системой будет запускать установщик на английском языке (кроме тех людей, которые будут искать в вашем установщике разные недоработки, и потом тыкать, таких тоже хватает). Так что оставляйте как есть. Но если уж сильно хочется чтобы соответствовало языку установщика, тогда по ищите другой код, могу ошибаться но в справке что то подобное встречал. Удачи.
 

Всего записей: 102 | Зарегистр. 13-11-2007 | Отправлено: 13:50 17-12-2017 | Исправлено: ZVSRus, 16:32 17-12-2017
rainur88

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZVSRus
спасибо за ответ и за помочь
 
Добавлено:
как кнопку Обзор.... передвинуть чуть чуть верх, https://s8.hostingkartinok.com/uploads/images/2017/12/d205422447e8594af3f952a1911e7bc8.png
http://rgho.st/8TsjZx2Y6

Всего записей: 50 | Зарегистр. 30-10-2017 | Отправлено: 14:18 17-12-2017 | Исправлено: rainur88, 14:18 17-12-2017
ultimo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rainur88
а давай мы тебе полностью напишем скрипт, и скомпилируем сразу, а?

Всего записей: 177 | Зарегистр. 19-05-2012 | Отправлено: 15:11 17-12-2017
rainur88

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ultimo
не надо спасибо,мне нужно именно этот скрип до делать

Всего записей: 50 | Зарегистр. 30-10-2017 | Отправлено: 15:23 17-12-2017 | Исправлено: rainur88, 16:24 17-12-2017
ZVSRus



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rainur88 как кнопку Обзор.... передвинуть чуть чуть верх
 
Зайди в папку modules, открой form.iss найди строку 356 with WizardForm.DirBrowseButton do
 
Замени Top := ScaleY(115); на Top := ScaleY(112); это координаты отступа сверху.
 
Как поднять или опустить не вопрос, вопрос в том пойди найди нужный компонент в этих джунглях!  

Всего записей: 102 | Зарегистр. 13-11-2007 | Отправлено: 16:04 17-12-2017
rainur88

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

Всего записей: 50 | Зарегистр. 30-10-2017 | Отправлено: 16:21 17-12-2017
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri
 
За помощь спасибо!, подкостылил проверкой на совпадение SHA1 и пока (тьфу -тьфу и три раза по по дереву) удалось обойти проблему. А то энто не дело что первый после старта ОС SERVICE_CONTROL_STOP отрабатывается нормально и статус драйвера SERVICE_STOPPED, а второй и последующие с вероятностью 0,5 приведут к статусу драйвера SERVICE_STOP_PENDING - т.е. он зависает при остановке и перезапускай ОС. Причину я пока так и не смог найти. Будь на одной машине, а тут сразу на нескольких и в разных городах. В инце положил изменения, привожу код в порядок а то из него во все стороны отладочные костыли торчат.

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

Всего записей: 33227 | Зарегистр. 31-07-2002 | Отправлено: 00:07 18-12-2017
nia1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
var
  FinishedLabel: TnewStaticText;
 
procedure InitializeWizard();
begin
  FinishedLabel:= TnewStaticText.Create(WizardForm);
  FinishedLabel.AutoSize:= False;
  with WizardForm.FinishedLabel do
  FinishedLabel.SetBounds(Left, Top+90, Width, Height);
  FinishedLabel.Font:= WizardForm.FinishedLabel.Font
  FinishedLabel.Font.Color:= clRed;
 // FinishedLabel.Transparent:= True;
  FinishedLabel.WordWrap:= true;
  FinishedLabel.Caption:=ExpandConstant('{cm:FinishLabel}');
  FinishedLabel.Parent:= WizardForm.FinishedPage
  FinishedLabel.Font.Style:=[fsBold];
//  FinishedLabel.Alignment := taCenter;
  FinishedLabel.Font.Size:=8;
  end;

Всего записей: 1 | Зарегистр. 22-10-2016 | Отправлено: 14:33 18-12-2017
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Единственное что пока не удалось сделать так это автоматику чтобы формировать эталонные хэши на этапе компиляции инсталлера, остальное вроде решил: Process_Hacker_installer_full.iss поставив в коде проверку SHA1, но пришлось в скрипте задавать эталонные значения хэшей так как вариант с распаковкой драйвера в {tmp} и последующим чтением его SHA1 для сравнения с имеющимся не прошёл, и Services_Full.iss - тут добавлена проверка IsServiceStopPending(). Есть правда подозрения на пару мелочей сейчас другое закончу и ими займусь.

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

Всего записей: 33227 | Зарегистр. 31-07-2002 | Отправлено: 14:41 18-12-2017
Genri

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

Цитата:
автоматику чтобы формировать эталонные хэши на этапе компиляции инсталлера

 

Код:
 
const
  x86 = '{#GetSHA1OfFile("..\..\KProcessHacker\bin-signed\i386\kprocesshacker.sys")}';
  x64 = '{#GetSHA1OfFile("..\..\KProcessHacker\bin-signed\amd64\kprocesshacker.sys")}';
 



----------
Для жалоб | Для благодарностей

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 00:45 19-12-2017
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri
 
Спасибо! Я похоже пытался, но не вышло - выводила сообщения об ошибке из-за путей, но вспомнил - я ж на демоне сижу, ну и позвал в сборочном скрипте sha1sum. И всю логику переписал заново. Теперь и на десятке и на семёрке нежданные предложения рестарта испарились.
 
Добавлено:
Воспользовался подсказкой и лишние команды из сборочного скрипта заодно выкинул. Работает как задумано, в т.ч. проверяет случай "образ драйвера удалили после его запуска" - в таком случае он копируется для чего собственно логику копира переписал заново. Редкая польза рефакторинга кода.

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

Всего записей: 33227 | Зарегистр. 31-07-2002 | Отправлено: 02:08 19-12-2017
specxml

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, был как то такой пост: http://forum.ru-board.com/topic.cgi?forum=5&topic=46338&start=1580#4
Проблема до сих пор осталась актуальной, но сейчас уже хотелось бы её точно решить.
Мерцание окна установщика и компонентов вместе с подсказками. В общем мерцает всё)
 
Если задача требует времени, то я готов отблагодарить того кто вызовется оперативно помочь в решении этой проблемы.
в ЛС можем договориться об условиях.

Всего записей: 7 | Зарегистр. 12-01-2016 | Отправлено: 09:40 21-12-2017
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С помощью  InnoSetup, можно как то заменить текст в файле , или заново/новый файл записать ?  

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 08:01 22-12-2017 | Исправлено: MihailM, 10:42 22-12-2017
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MihailM
 
Можно. Средствами языка Pascal Script в секции CODE. В Pascal Script есть функции работы со строками описанные в разделе Справки Pascal Scripting: Support Functions Reference которая ставится из пакета Inno Setup QuickStart Pack Setup (это полный пакет содержащий все DLL, Pascal Script и препроцессор и лучше сразу скачать его чтобы не вытаскивать модули по одиночке).

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

Всего записей: 33227 | Зарегистр. 31-07-2002 | Отправлено: 11:30 22-12-2017
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG, за это конечно спасибо , но я далек от данного программинга .
А так нашел нужные кусочки кода :  

Код:
Example
#define FileHandle
#define FileLine
#sub ProcessFileLine
  #pragma message FileLine
#endsub
#for {FileHandle = FileOpen("c:\autoexec.bat"); \
  FileHandle && !FileEof(FileHandle); FileLine = FileRead(FileHandle)} \
  ProcessFileLine
#if FileHandle
  #expr FileClose(FindHandle)
#endif

 2-ой
Код:
 
 CopyFile(str 1, str 2)

 и 3-ий
Код:
 
#define MyString "a ca c"
#define MyString2 StringChange(MyString, " ", "b")
// MyString2 = 'abcabc'
 

Только теперь как их соединить вместе , буду думать , точнее толком и не знаю .. Не пойму , что за экранирование решеткой в 1-ом коде .
 
И еще , чтобы было проще , можно как то многострочный текст ввиде переменной запомнить , потом уже записать ?!
Это было намного проще и лучше всего ..

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 12:06 22-12-2017 | Исправлено: MihailM, 12:10 22-12-2017
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MihailM
 
Первый и третий примеры это препроцессор - код выполняемый перед компиляцией, и для этапа времени исполнения (собственно установки) они бесполезны. Второй просто копирует файл, а для замены обычно (пример на IBM PL/1, Паскаль его не поймёт, но он демонстрирует идею алгоритма) нужно открыть файл на редактирование и сделать следующие операции:
 
Proc Sample option(main); /* объявим точку входа и имя нашей программы, это обязательно */
Function StrRep(file,str1,str2,ret); /* поиск и замена строки в файле */
 /* явно объявим используемые переменные */
  Dcl A char() str1; /* искомая строка, инициализируем  */
  Dcl B char() str2 /* заменяющая строка */
  Dcl C int(32); /* смещение строки относительно начала файла в байтах */
  ret bin(1) False /* код завершения, при входе в функцию False так как операция ещё не выполнена */
 
/* часть переменных объявим неявно, компилятор сам поставит правильный тип */
 
 I=strlng(A); /* получили длину искомой строки */
   J=strlng(B); /* получили длину строки замены */
    X=strlng(file); /* получили длину файла */
  GetMem(BUF,X); /* получили память для буфера и его начальный адрес в переменной X */
   Open(file,rw); /* открыли файл на чтение-запись */
     C=find(file,A); /* получили значение смещения A */
       Read(BUF,file,C+I,X-I); /* прочитали в буфер оставшуюся часть файла по смещению С +I*/
       write(file,C,B); /* записали в файл строку B по смещению I */
     write(file,C+J,BUF); /* записали по смещению C длина B оставшуюся часть файла */
    close(file,rw): /* закрыли файл чтобы другие программы могли с ним работать */
  FreeMem(BUF); /* освободим память буфера */
 ret=True; /* установим код завершения True так как операция завершена */
Return; /* возврат в вызывающую программу */
End;
     
/* а дальше просто вызываем нашу функцию */
 
Call StrRep(MyFile,L"искомая строка",L"заменяемая строка",RET);
 If RET == True Then ; Else Print(display,L"Операция не удалась") End;
 
Return; /* вернём управление ОС */
EndProc; /* объявим компилятору что процедура завершена */

 
в других языках программирования запись будет иной, но идея алгоритма сохранится. Я использовал функцию, а не процедуру, так как нам достаточно получить только код завершения. Функция принимает на вход несколько параметров и возвращает один. Процедура ограничения по числу возвращаемых параметров не имеет, но тут она нам не нужна.
 

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

Всего записей: 33227 | Зарегистр. 31-07-2002 | Отправлено: 14:01 22-12-2017 | Исправлено: Victor_VG, 14:31 22-12-2017
ZVSRus



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

Цитата:
 
С помощью  InnoSetup, можно как то заменить текст в файле , или заново/новый файл записать ?
 

Какой файл, .doc, .txt, .ini ?  

Всего записей: 102 | Зарегистр. 13-11-2007 | Отправлено: 15:05 22-12-2017
MihailM



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

Цитата:
Какой файл, .doc, .txt, .ini ?  

Ни тот и не другой - манифест , просто хотел универсальным сделать , а то иногда имя ехе-шника меняю .. Для удобства, уже чтоб было, 1 раз заменил и всё готово.  
Ну это еще как бы разведка , точно не решил еще сразу заменять после инсталяции или же через батник(или что другое). А то не охото , ваять еще в инсталяшку прогу и ей уже менять всё внутри файла , вот подумал , так по проще сделать может..
 
Добавлено:
А так у меня вообще мысля была , может просто взять текст в переменную и потом уже записать .. НО вот как быть , там же многострочный текст .. А так взял код из 3-его примера и заменил уже что и на что нужно ..Так вообще будет намного удобнее ..
P.s. а то вдруг в запарке забуду это сделать )  

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 15:59 22-12-2017 | Исправлено: MihailM, 17:56 22-12-2017
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MihailM -- манифест имеет формат XML. Примеры работы с XML были в старых сезонах


----------
Для жалоб | Для благодарностей

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 19:41 22-12-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 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