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

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

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

Всего записей: 111 | Зарегистр. 10-03-2007 | Отправлено: 20:51 08-10-2008
boss911



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri
 
Огромное тебе спасибо за твою помощь.

Цитата:
Exec(ExpandConstant('{sys}\calc.exe'), '-install', '', SW_SHOW,

Мне бы еще сюда добавить, чтобы инсталлятор не дожидался остановки приложения (nowait).

Всего записей: 3758 | Зарегистр. 29-01-2005 | Отправлено: 21:01 08-10-2008
Genri

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

Цитата:
Код:[Run]  
Filename: {app}\Prog1.exe; Flags: waituntilterminated skipifsilent  
Filename: {app}\Prog2.exe; Flags: postinstall skipifsilent nowait  
Filename: {app}\Prog3.exe; Flags: postinstall skipifsilent nowait  
 
Помогите сделать так, если Prog2.exe или Prog3.exe не выбраны (postinstall) для запуска, то Prog1.exe чтобы тоже не выполнялся.

 

Цитата:
Мне бы еще сюда добавить, чтобы инсталлятор не дожидался остановки приложения (nowait).
-- хм, а почему же ты приводил код с флагом waituntilterminated?
Ну если дожидаться окончания не надо, замени ewWaitUntilTerminated на ewNoWait

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



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

Цитата:
хм, а почему же ты приводил код с флагом waituntilterminated?

Да это просто пример, не совсем точный, просто чтобы была понятна суть, а сейчас у меня кое-что уже поменялось.
 
Спасибо, все работает как надо.

Всего записей: 3758 | Зарегистр. 29-01-2005 | Отправлено: 23:25 08-10-2008
mikutu

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня несколько вопросов по поводу Corona Skin
1) Не нашел можно ли в нем сделать галочку для создания ярлыка программы (сам ярлык в скрипте Inno создан нужно сделать так чтобы пользователь имел возможность его не создавать)
2) как сделать checkbox запуск программы на последней странице инсталятора
3) раскомментироровал в примере который идет с Corona Skin (версия 5.4) следующий текст
  #define AviOnProgress AddBackslash(SourcePath) + "Corona\Animation.avi"
и поместил туда соответствующий avi (который скачал по ссылке из комментария), но ни чего не изменилось
 
Добавлено:
Последний вопрос уже решил нужно просто было закомментировать
 #define MiniProgress "100,100"

Всего записей: 23 | Зарегистр. 07-05-2006 | Отправлено: 08:39 09-10-2008
tonegins

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Помогите пожалуйста разобраться с идентификацией страниц. Дело в том, что у меня есть 5 собственно созданных страниц, на первой моей странице пользователь выбирает какие компоненты он хотел бы установить и взависимости от выбранных компонентов в последствие создаются оставшиеся 4 страницы. Я бы хотел всем пяти страницам задать четкий идентификатор, чтобы при переходе на след. или предыдущую страницу CurPageID был всегда у страницы один и тотже, который я поставил им при создании.  
Например:
 
Page1 := CreateCustomPage(100, 'Страница 1', 'Выбор компонентов');
Page1 := CreateCustomPage(101, 'Страница 1', 'Компонент 1');
Page1 := CreateCustomPage(102, 'Страница 2', 'Компонент 2');
Page1 := CreateCustomPage(103, 'Страница 3', 'Компонент 3');
Page1 := CreateCustomPage(104, 'Страница 4', 'Компонент 4');
 
Но уже при создании первой страницы выдается ошибка. Но если сделать так
Page1 := CreateCustomPage(wpWelcome, 'Страница 1', 'Выбор компонентов');
или так  
Page1 := CreateCustomPage(1, 'Страница 1', 'Выбор компонентов');
То первая страница создается нормально.

Всего записей: 11 | Зарегистр. 28-11-2007 | Отправлено: 10:41 09-10-2008
Victor_Dobrov



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mikutu
Цитата:
1) Не нашел, можно ли в Corona Skin сделать галочку для создания ярлыка программы (сам ярлык в скрипте Inno создан, нужно сделать так, чтобы пользователь имел возможность его не создавать)
2) как сделать checkbox - запуск программы на последней странице инсталятора.

Эти вопросы решаются стандартно. Ярлыки можно привязать к странице задач, есть много примеров, где показывается, как создавать ярлыки на Рабочем столе, в меню Пуск и панели быстрого запуска.
После установки программа запускается с флагом postinstall (игнорируется, если инсталлятор предлагает перезагрузку)
 
tonegins
Сортируй страницы по идентификатору Page.ID, для каждой новой страницы он свой.

Всего записей: 742 | Зарегистр. 27-09-2005 | Отправлено: 12:21 09-10-2008
Genri

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

Цитата:
Я бы хотел всем пяти страницам задать четкий идентификатор
-- так почему не задаешь? И что такое у тебя 100, 101, 102...?
 
Page1 := CreateCustomPage(wpWelcome, 'Страница 1', 'Выбор компонентов');  
Page2 := CreateCustomPage(Page1.ID, 'Страница 1', 'Компонент 1');  
Page3 := CreateCustomPage(Page2.ID, 'Страница 2', 'Компонент 2');  
Page4 := CreateCustomPage(Page3.ID, 'Страница 3', 'Компонент 3');  
Page5 := CreateCustomPage(Page4.ID, 'Страница 4', 'Компонент 4');
 
хинт! Первый параметр задает после какой страницы будет вставлена создаваемая.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 12:23 09-10-2008 | Исправлено: Genri, 12:24 09-10-2008
SotM



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

Цитата:
Но если сделать так  
Page1 := CreateCustomPage(wpWelcome, 'Страница 1', 'Выбор компонентов');  
или так  
Page1 := CreateCustomPage(1, 'Страница 1', 'Выбор компонентов');  
То первая страница создается нормально.

Правильно, так и должно быть, здесь первый вариант правильный. Смотрим примеры из шапки и читаем хелп.

Всего записей: 966 | Зарегистр. 28-11-2006 | Отправлено: 12:38 09-10-2008
tonegins

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

Цитата:
Page1 := CreateCustomPage(wpWelcome, 'Страница 1', 'Выбор компонентов');  
Page2 := CreateCustomPage(Page1.ID, 'Страница 1', 'Компонент 1');  
Page3 := CreateCustomPage(Page2.ID, 'Страница 2', 'Компонент 2');  
Page4 := CreateCustomPage(Page3.ID, 'Страница 3', 'Компонент 3');  
Page5 := CreateCustomPage(Page4.ID, 'Страница 4', 'Компонент 4');

 
Сделал имеено так, теперь когда я жму на кнопку далее, в функции обработчике вывожу MsgBox(IntToStr(CurPageID), mbInformation, mb_Ok);
Первая страница с CurPageID = 1 - логично. Вторая уже с CurPageID = 100 - здесь я теряюсь, третья с CurPageID = 101, а теперь если я нажму на кнопку назад, то CurPageID = 102? В чем прикол? Ничего не разберу...

Всего записей: 11 | Зарегистр. 28-11-2007 | Отправлено: 12:58 09-10-2008
mikutu

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо. Создал с помощью мастера проект посмотрел каких строк не хватает у меня в проекте добавил и проблема с иконками решена. С запуском тоже.

Всего записей: 23 | Зарегистр. 07-05-2006 | Отправлено: 12:59 09-10-2008
tonegins

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

Цитата:
Page1 := CreateCustomPage(wpWelcome, 'Страница 1', 'Выбор компонентов');    
Page2 := CreateCustomPage(Page1.ID, 'Страница 1', 'Компонент 1');    
Page3 := CreateCustomPage(Page2.ID, 'Страница 2', 'Компонент 2');    
Page4 := CreateCustomPage(Page3.ID, 'Страница 3', 'Компонент 3');    
Page5 := CreateCustomPage(Page4.ID, 'Страница 4', 'Компонент 4');

 
Если пользователь проставил все галочки, то есть он хочет установить все компоненты, то такая последовательность задания идентификаторов прокатит, а если он не выбрал какой то компонент, например 2, то страница Page2 не создасться, а когда пользователь дойдет до создания страницы 3, то выдастся ошибка, так как страницы 2 нет, и поэтому она не может быть предшедствующей, теперь должна стать предшедствующей 1-я страница.  
Я создаю страницы в зависимости от условия. А можно ли как-нибудь реализовать мою задумку. А если создать все страницы сразу в одном месте без условий, а потом скрывать их взависимости от условия? Если можно скрыть страницу то как? Что-то типа Page2.Hide; ???

Всего записей: 11 | Зарегистр. 28-11-2007 | Отправлено: 14:21 09-10-2008
Genri

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

Цитата:
в функции обработчике вывожу MsgBox(IntToStr(CurPageID), mbInformation, mb_Ok);
-- а позвольте спросить, в каком обработчике? Я так подозреваю, что используются NextButtonClick и BackButtonClick. А в хелпе указано, что в этих функциях CurPageID - это текущая страница, а если Result:= True, то отображается следующая\предыдущая. Т.е. если ты находишься на Page2 с ID например 102, то при нажатии Next, получишь в сообщении 102, но страница отобразиться следующая (103). Если теперь нажмешь назад, то естественно получишь 103, а страница отобразится 102. Надеюсь понятно объяснил.
Не знаю, что ты хочешь обрабатывать, но вероятно, следует использовать CurPageChanged
 
procedure CurPageChanged(CurPageID: Integer);
begin
  WizardForm.Caption:= IntToStr(CurPageID);
end;
 
 
Добавлено:

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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri
Большое спасибо за ответы, буду пробовать.
 
Добавлено:
Genri
Не подскажите как скопировать папку в директорию, которую выбрал пользователь, на созданной мной странице? Я не хочу использовать  
 
Source: "D:\InstallFile\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
 
Хочу реализовать это программно. Не подскажите в каком направление копать?
В принципе хотелось бы использовать минимум стандартных страниц

Всего записей: 11 | Зарегистр. 28-11-2007 | Отправлено: 14:28 09-10-2008
Genri

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

Цитата:
как скопировать папку в директорию
...............
Хочу реализовать это программно
-- либо смотри в хелпе описание функции FindFirst (там же есть и пример использования, но без вложенных папок). Либо поищи в теме файл SHFileOperation.iss - в нем я прописывал функцию CopyDir, которая, насколько помню, копирует с вложенными.
 
ЗЫ. Хотя я сторонник максимального использования штатных средств
 
Добавлено:
И все-таки, если не секрет, почему нельзя использовать штатные средства? Если проблема в том, что файлы должны копироваться в зависимости от условий, то есть такой параметр как Check. Так же можно использовать параметры BeforeInstall и AfterInstall. Т.е. многое проще реализовывать штатными средствами.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 15:18 09-10-2008
tonegins

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri
function ShouldSkipPage(PageID: Integer): Boolean;
begin
   if (PageID = wpSelectDir) or (PageID = wpReady) or (PageID = wpInstalling) then
      Result:= True;
end;
 
первые два PageID = wpSelectDir и PageID = wpReady работают - страница не отображается, но PageID = wpInstalling не выполняется, то есть страница отображается и установка продолжается.  Как-нибудь можно отменить установку, скажем перейти сразу на финишную страницу?? Заранее спасибо!

Всего записей: 11 | Зарегистр. 28-11-2007 | Отправлено: 15:56 09-10-2008
Genri

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

Цитата:
Как-нибудь можно отменить установку, скажем перейти сразу на финишную страницу?
-- так отменить или продолжить? Какой-то странный у тебя инсталлятор получается Может тебе надо продолжить выполнение инсталлятора, но никаких файлов не копировать? Ну так не копируй. Копируй только если выполнено условие.
Сложно давать советы, когда непонятно что требуется в результате.
 
А ShouldSkipPage не вызывается для wpWelcome, wpPreparing и wpInstalling (см.хелп)

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 18:43 09-10-2008
Diawer

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть пару вопросов, а точнее два.
 
1.Я уже спрашивал, но на тот момент никто не смог помочь, а именно по вопросу – в Inno есть стандартное сообщение появляющееся, когда не удалось удалить файлы потому, что они были заняты другим приложением. Я добавляю в свой скрипт код именно этого сообщения (искусственно), когда в папке остались файлы, которые не были прописаны в аннинстале на удаление, то-есть  созданные или добавленные пользователям.
Так вот когда получается так, когда появляется стандартное сообщение, то получается, что с моим их появляется два.
Как можно отключить стандартное сообщение (Деинсталляция My program завершена. Часть элементов не удалось удалить. Вы можете удалить их самостоятельно.
 
2. Как можно добавить небольшой рисунок (.bmp, .jpg или т.п.) на страницу, к примеру [Tasks], во многих инсталляторах программ это реализовано, но по предыдущему форуму найти это мне не удалось.

 
Если знаете как, то отпишитесь.

Всего записей: 180 | Зарегистр. 08-05-2007 | Отправлено: 19:22 09-10-2008
tonegins

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

Цитата:
Может тебе надо продолжить выполнение инсталлятора, но никаких файлов не копировать? Ну так не копируй. Копируй только если выполнено условие.

 
О! Это мне и надо! Можно кусок кода как не копировать или копировать если есть условие? Извиняюсь за навязчивость конечно, но увы я только первый день работаю с Inno...

Всего записей: 11 | Зарегистр. 28-11-2007 | Отправлено: 19:23 09-10-2008
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tonegins -- первый день желательно потратить на изучение хелпа

Код:
 
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
 
[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Check: MyProgCheck
Source: "MyProg.chm"; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"
 
[Code]
function MyProgCheck(): Boolean;
begin
  Result := FileExists(ExpandConstant('{src}\new.txt'));
end;  
MyProg.exe будет установлен только в случае, если рядом с инсталлятором будет найден new.txt
 
Diawer -- как отключить - не знаю. Но чем тебя не устраивает стандартное сообщение? Текст можешь в него вставить и свой.
[Messages]
UninstalledMost=%1 uninstall complete.
 
И кстати, это сообщение не появляется, если в папке с программой есть файлы созданные пользователем. Сообщение появляется если деинсталлятор не смог удалить файлы созданные инсталлятором.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 20:42 09-10-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

Рейтинг.ru