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

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

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

Widok (29-12-2008 12:26): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



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

Это мощное средство для создания установочных пакетов (дистрибутивов) программ. Поддерживается шифрование, установка пароля, различные задачи по завершении установки. Можно создавать свои страницы, используя Inno Setup Form Designer.
По сравнению с NSIS (основной конкурент на бесплатной основе) проще в настройке, имеет более понятную структуру скрипта.  
 
Последний релиз: 5.2.3 [10.03.2008]
История версий | скачать | все сборки || Скачать Preprocessor | все сборки
 
Русификатор от NightW0lf для версии 5.2.0
Скачать | зеркало
 
Русская справка к версиям 5.0.x, автор перевода BagIra
Скачать | зеркало || cкачать в .chm формате
 
Руководство по расширенным возможностям Inno Setup 5 (не для чайников) от Kindly
Версия 5.1 скачать || версия 5 скачать|зеркало || версия 4 скачать|зеркало || версия 3 скачать|зеркало
 
Inno Setup Extensions Knowledge Base (содержит ответы на многие вопросы)
Новая версия (Web-интерфейс) || Старая chm-версия скачать | зеркало
 
Коллекция скриптов и Сборник вопросов, собранных из этой и предыдущих частей топика.
 
Corona Skin & Check System Requirements от Victor_Dobrov
Скачать | зеркало | скриншот | описание | старая версия || InnoSetup Upgrade || Слайд-шоу
Обложка для Inno Setup. Сделает инсталлятор более симпатичным и добавляет расширения: Проверка минимальных требований. Расширенный прогрессбар. Расчёт времени до завершения распаковки. Список дисков. Слайдшоу или AVI-файл в фоновом окне. Компактный режим установки. Деинсталляция неучтённых файлов. Экран справки/скриншота. Медиаплеер и многое другое...
 
Примечание: Если необходимо использовать метод проверки внешнего файла через сумму MD5 (который описан в 5 версии руководства от Kindly) для запуска инсталлятора, то понадобится калькулятор хеша MD5, калькулятор сумм MD5, SHA-256, CRC32. Если требуется узнать, какие ключи реестра меняет та или иная программа, используйте RegShot. Чтобы растянуть фоновый рисунок на весь экран, в версии Inno Setup 5.1.10 и выше используйте этот код.

Дополнительные утилиты для Inno Setup


Мощная надстройка для Inno Setup, при помощи которой создавать свои инсталляторы становится очень просто.
 
Последний релиз: 5.2.1 [15.10.2007]
Скачать | зеркало || Русификатор | зеркало

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

Прежнее название ScriptMaker. Удобная оболочка для облегчения написания скриптов установки для Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
 
Последний релиз: 1.0.3.1 [23.03.2008]
Скачать | обновить (нужен QuickStartPack 5.2.3)

Распаковщик установок, сделанных с помощью Inno Setup. При распаковке извлекаются  ресурсы и скрипт установки (немного усечённый). Возможно подключение к Total Commander или FAR с помощью MultiArc плагинов.
Поддерживает распаковку инсталляторов, сделанных с помощью Inno Setup начиная с версии 3.0.0-beta по 5.2.3
 
Последний релиз: 0.20 [23.05.2008] New
Скачать | Расширенная версия (с поддержкой русского языка)  

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

Объёмные скрипты или части кода заключайте в тег more, чтобы ваш вопрос в сообщении не затерялся среди множества строк прилагаемого скрипта.

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 18:16 17-06-2008 | Исправлено: equis, 17:51 06-12-2008
EagleSH

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri
всё отлично пашет. не знаю, чё я таким сложным путём пошёл... спс.

Всего записей: 318 | Зарегистр. 20-12-2005 | Отправлено: 23:14 19-06-2008
boss911



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

Код:
[Run]
Filename: ResHacker\RESHacker.exe; WorkingDir: {app}; Parameters: -script ResFiles\access.cpl.txt; StatusMsg: Модификация файлов...; Flags: waituntilidle shellexec
Filename: ResHacker\RESHacker.exe; WorkingDir: {app}; Parameters: -script ResFiles\acctres.dll.txt; StatusMsg: Модификация файлов...; Flags: waituntilidle shellexec
Filename: ResHacker\RESHacker.exe; WorkingDir: {app}; Parameters: -script ResFiles\accwiz.exe.txt; StatusMsg: Модификация файлов...; Flags: waituntilidle shellexec
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
и т.д.

Можно это как-то объединить в один запуск, сделать нечто подобное (переменная):

Код:
[Run]
Filename: ResHacker\RESHacker.exe; WorkingDir: {app}; Parameters: -script ResFiles\%ИМЯ_ФАЙЛА%.txt; StatusMsg: Модификация файлов...; Flags: waituntilidle shellexec

?
 
Естественно, нужно, чтобы оно прогнало все TXT файлы, которые будут лежать в "ResFiles\*.txt", но с обязательным поочередным запуском, то есть, чтобы инсталлятор дожидался остановки предыдущего запуска (флаг 'waituntilidle').
 
Возможно, мой вопрос из раздела фантастики, но все же хочется, чтобы вы прокомментировали его, а лучше, помогли реализовать задачу, плиз.

Всего записей: 3704 | Зарегистр. 29-01-2005 | Отправлено: 00:15 20-06-2008 | Исправлено: boss911, 00:17 20-06-2008
999Kay666

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

Цитата:
1. Можно.  
2. Можно.  
 
Но зачем?  

 
Во-первых нме так удобнее, во-вторых я хочу сделать подобие ИнсталлШиелд, как в игре Сибирь.
 
А твоё "Можно" - это можно, но не знаю, или знаю, но не скажу!
 
Убрать строку "установка" у меня получалось, но чисто случайно, поэтому не помню как. А как обездвижить Мастер - понятия не имею.

Всего записей: 85 | Зарегистр. 17-06-2008 | Отправлено: 01:33 20-06-2008
mukas

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

Всего записей: 252 | Зарегистр. 24-04-2007 | Отправлено: 01:37 20-06-2008
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
999Kay666 -- "можно", это значит что такая возможность существует. Но прежде чем давать совет применить тот или иной метод, мне бы хотелось понять суть вопроса. Твой ответ ясности не добавил. Лично мне бы не понравилось работать с инсталлятором, окно которого я не могу переместить туда, где мне удобней (напр. на второй монитор).
 
Так что:
1. Запрет перемещения
2. Скрытие заголовка
...а как и какой из них тебе "удобнее" применять - разбирайся сам. Без удовлетворительного объяснения причин такого требования, я больше ничем помочь не смогу.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 02:03 20-06-2008
serg_aka_lain

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

Цитата:
привет

 
Наверно так
 
function InitializeSetup(): Boolean;
begin
   MsgBox('привет', MbInformation, Mb_Ok);
   Result := True;
end;

Всего записей: 340 | Зарегистр. 13-01-2007 | Отправлено: 04:00 20-06-2008
SotM



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
serg_aka_lain
Думаешь лучше использовать MsgBox?
Может лучше забабахать картинку в PhotoShope с надписью "Hello world".
Потом можно splash с этой картинкой сделать, а потом еще этакой фоновой музыки добавить... думаю инсталяшка будет занимать максимум мегабайт 10-15.
 

Всего записей: 965 | Зарегистр. 28-11-2006 | Отправлено: 09:35 20-06-2008 | Исправлено: SotM, 09:50 20-06-2008
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911 -- можно. Но зачем?
Имена файлов и их кол-во на этапе компиляции известны ? В чем задача? Не прописывать много строк или не пересобирать инсталлятор?  

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 11:20 20-06-2008
boss911



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

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

Ты почти угадал, иногда надо добавить или удалить строку для запуска, а так будет достаточно выкинуть или докинуть *.txt. В этот раз пришлось добавить 20 строк, а для красоты их надо было еще проставить между строк по имени запуска файлов. Уверен, смысл и идею ты понял.
 
Смотрел help, но нечего подобного не нашел. Скажи, тут без секции код ситуацию не разрешить?

Всего записей: 3704 | Зарегистр. 29-01-2005 | Отправлено: 16:13 20-06-2008
valeron87



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911
Без секции кода скорее всего не получится, а с ней будет примерно вот так:

Код:
[Files]
Source: "Scripts\*.txt"; DestDir: "{app}\ResFiles"; AfterInstall: ApplyScript; Flags: ignoreversion
 
[Code]
procedure ApplyScript;
var
  ErrorCode: integer;
  tmp: String;
begin
  tmp:=WizardForm.StatusLabel.Caption;
  WizardForm.StatusLabel.Caption:='Модификация файла...';
  ShellExec('open', ExpandConstant('{app}\ResHacker\RESHacker.exe'), '-script "'+ExpandConstant(CurrentFileName)+'"', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode);
  WizardForm.StatusLabel.Caption:=tmp;
end;

Всего записей: 65 | Зарегистр. 19-11-2006 | Отправлено: 17:06 20-06-2008
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911 -- если файлы на этапе компиляции присутствуют, то можно через препроцессор. Иначе - через секцию код.
Попробую найти время и набросать пример.
 
 
Добавлено:
Использование препроцессора

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 17:06 20-06-2008
boss911



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
valeron87
 
Что-то не вышло, а также сдалось такое впечатление, что команда выполнялась после каждой распаковки объекта, постоянно при распаковки менялись по очередности режимы "Распаковка файлов" и "Модификация файла...". Даже "{app}\ResHacker\RESHacker.exe" еще не распаковался.
 
Мне вообще-то надо так:

Код:
Source: ResFiles\*; DestDir: {app}\ResFiles; Flags: recursesubdirs createallsubdirs; AfterInstall: ApplyScript

вот так и пробовал. Просто в папке не только *.txt, а и другие необходимые для работы файлы.
 
Я еще забыл указать, что выполнения команд на "{app}\ResHacker\RESHacker.exe" должно выполнятся в первую очередь, а потом только то, что прописано ниже в секции Run.
 


Genri

Цитата:
если файлы на этапе компиляции присутствуют, то можно через препроцессор.

Файлы присутствуют, после чего все извлекаются. А в чем преимущества будет?

Всего записей: 3704 | Зарегистр. 29-01-2005 | Отправлено: 18:18 20-06-2008 | Исправлено: boss911, 18:19 20-06-2008
999Kay666

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

Цитата:
...а как и какой из них тебе "удобнее" применять - разбирайся сам. ...больше ничем помочь не смогу.

УЖЕ помог, за что огромное спасисбо!!! Разобрался и решил - ты прав, полностью обездвиживать не стал.  

Цитата:
....Без удовлетворительного объяснения причин такого

Зачем же так зря. Я же написал как в игре "Сибирь" - InctallShield. Т.е. Всё как обычно, но страница Инсталляции прямоугольная в уголке.
 
procedure CurPageChanged(CurPageID: Integer);
begin
 if CurPageID=wpInstalling
then
begin
  WizardForm.MainPanel.Visible:=False;
  WizardForm.Bevel1.Visible:=False;
  WizardForm.Width:=ScaleX(395);
  WizardForm.Height:=ScaleY(142);
 
  WizardForm.Left:=ScaleX(MainForm.Width-420);
  WizardForm.Top:=ScaleY(MainForm.Height-170);
begin    
  SetWindowLong(WizardForm.Handle, GWL_STYLE,
              GetWindowLong(WizardForm.Handle, GWL_STYLE) and not WS_CAPTION);
end
 
  WizardForm.InnerNotebook.Left:=ScaleX(10);
  WizardForm.InnerNotebook.Top:=ScaleY(10);
  WizardForm.InnerNotebook.Width:=ScaleX(370);
  WizardForm.StatusLabel.Left:=ScaleX(0);
  WizardForm.StatusLabel.Top:=ScaleY(0);
и т.д.  
Спасибо!
P.S. Интересно можно было бы сделать проще?
 
И Генри, если не сложно - как сделать: При выборе определённого компонента, кнопка становится с надписью "Далее", и я перехожу на следующую(уже написанную мной) страницу. Если компонент не выбран, то на кнопке написано "Установить".

Всего записей: 85 | Зарегистр. 17-06-2008 | Отправлено: 18:28 20-06-2008 | Исправлено: 999Kay666, 18:39 20-06-2008
boss911



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

Код:
[Run]
#define FindHandle

 
Добавлено:

Код:
[Files]
Source: ResFiles\*; DestDir: {app}\ResFiles; Flags: recursesubdirs createallsubdirs
 
[Run]
#define FindHandle
#define FindResult
#define Mask ".\ResFiles\*.txt"
 
#sub ProcessFoundFile
  #define FileName FindGetFileName(FindHandle)
  ; Filename: {app}ResHacker\RESHacker.exe; WorkingDir: {app}; Parameters: -script ResFiles\{#FileName}
  ; Filename: {sys}\notepad.exe; WorkingDir: {app}; Parameters: ResFiles\{#FileName}; Flags: waituntilterminated
#endsub
 
#for {FindHandle = FindResult = FindFirst(Mask, 0); FindResult; FindResult = FindNext(FindHandle)} ProcessFoundFile

И что это за блокнот (notepad.exe) или эта строка тут для примера?

Всего записей: 3704 | Зарегистр. 29-01-2005 | Отправлено: 18:31 20-06-2008 | Исправлено: boss911, 18:43 20-06-2008
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911 -- спотыкается вероятно из-за того, что у тебя не установлен препроцессор (смотри на сайте Inno Setup QuickStart Pack)
Блокнот только для демонстрации. Строку с блокнотом закомментируй или удали; в строке с RESHacker комментарий удали.
 
999Kay666 -- что из себя представляет игра Сибирь - мне неизвестно (из игр я только первый орион знаю )
 
По поводу кнопки: можно Я так понимаю, речь идет о кнопке на странице выбора компонентов? И если этот конкретный компонент не выбран, то по нажатию на кнопку "Установить" сразу начинается установка? В принципе можно и так. Но проще в этом случае пропустить ненужные страницы и попасть на страницу wpReady, на которой кнопка "Установить" отображается штатным образом.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 19:20 20-06-2008
boss911



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

Цитата:
(смотри на сайте Inno Setup QuickStart Pack)

И что мне тут нужно? Препроцессора не вижу.
 

Цитата:
в строке с RESHacker комментарий удали.  

При компиляции из ISTool комментарий сам прописывается, что за...
А если помимо запусков "{app}ResHacker\RESHacker.exe" у меня есть другие команды (их несколько) выполнения, куда их прописывать, можно заместь строки с блокнотом? А поочередность выполнения, какая будет, по списку?
 
Добавлено:
Препроцессор нашел.
 
Добавлено:
Genri

Код:
[Run]
#define FindHandle
#define FindResult
#define Mask "ResFiles\*.txt"
 
#sub ProcessFoundFile
  #define FileName FindGetFileName(FindHandle)
  Filename: {app}\ResHacker\RESHacker.exe; WorkingDir: {app}; Parameters: -script ResFiles\{#FileName}; StatusMsg: Модификация файлов... Процесс может занять 2 минуты.; Flags: waituntilterminated
  Filename: {sys}\cmd.exe; Parameters: "/C RD /Q /S ""{app}\ResFiles"""; WorkingDir: {sys}; StatusMsg: Завершение установки; Flags: waituntilterminated runhidden
#endsub
 
#for {FindHandle = FindResult = FindFirst(Mask, 0); FindResult; FindResult = FindNext(FindHandle)} ProcessFoundFile

Получается полная каша. Сперва запускается первая команда, потом вторая, после чего опять первая и т.д. Естественно, вторая команда полностью сводит на нет первую команду.
 
Как сделать, чтобы инсталлятор дожидался строго остановки первой команды, после чего стартовала вторая, третья и т.д.
 


Какие файлы препроцессора (ispack-5.2.3.exe) нужны, чтобы из перебросить в дистрибутив с Inno (isetup-5.2.3.exe)?

Всего записей: 3704 | Зарегистр. 29-01-2005 | Отправлено: 20:07 20-06-2008 | Исправлено: boss911, 20:09 20-06-2008
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911 -- выше ты спрашивал, как свести в одну команду Filename: ResHacker\RESHacker.exe... Теперь у тебя две команды (...RESHacker.exe и ...cmd.exe).
Все, что между строками:
#define FileName FindGetFileName(FindHandle)  
......................
#endsub  
...будет повторяться столько раз, сколько будет найдено файлов *.txt
Все, что надо запускать в этой секции до повторяющихся строк, прописывай в самом начале (до строки #define FindHandle)
Все, что надо запускать в этой секции после повторяющихся строк, прописывай после строки #for {FindHandle = FindResult = FindFirst(Mask, 0); FindResult.....

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 22:44 20-06-2008
defrager1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jordan добавил ISSkin (isskin.codejock.com) на свою 3rdparty страницу . Предлагаю добавить и в Шапку. Классная вещь.

Всего записей: 1 | Зарегистр. 18-11-2005 | Отправлено: 22:45 20-06-2008
999Kay666

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

Цитата:
По поводу кнопки: можно  

Да,да всё правильно. Толь один нюанс - я перехожу на следующую(уже написанную мной) страницу.
Знаешь как?

Всего записей: 85 | Зарегистр. 17-06-2008 | Отправлено: 23:26 20-06-2008
Genri

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

Цитата:
Толь один нюанс - я перехожу на следующую(уже написанную мной) страницу
-- каких-либо проблем из-за этого я не вижу. Для определения, пропускать страницу или нет, есть функция ShouldSkipPage (см. в хелпе Pascal Scripting: Event Functions); для проверки выбран ли компонент, есть функция IsComponentSelected (см. в хелпе Pascal Scripting: Support Functions Reference).
Пример использования (страницы пропускаются, если не выбран компонент Help File)

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 00:13 21-06-2008
   

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru