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

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

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

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

   

haav



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

 
 
Это мощное средство для создания установочных пакетов [дистрибутивов] программ. Поддерживается шифрование, установка пароля, различные задачи по завершении установки. Можно легко самим создавать диалоги, используя спец. дизайнер. И всё это абсолютно бесплатно! По сравнению с NullSoft [основной конкурент на бесплатной ниве] мне albel понравилась более интуитивно-понятная структура скрипта, простота в настройке.  
 
Последний релиз: 5.1.11 [1 Марта 2007 года]
История версий | скачать  
 
Русификатор от NightW0lf для версии 5.1.11  
Скачать | зеркало
 
Русская справка к версиям 5.0.xx
Скачать | зеркало || cкачать в .chm формате
И снова BagIra на высоте
 
Руководство по расширенным возможностям Inno Setup 5 [не для чайников] от Kindly
[3 версия]  
Скачать | зеркало
[4 версия]  
Скачать | зеркало
[5 версия]  
Скачать | зеркало
 
Inno Setup Extensions Knowledge Base  
Скачать | зеркало
 
Примечание: начиная с версии 5.1.10 в Inno Setup при использовании в инсталляторе фонового изображения формата BMP стало глючить возможность растягивания картинки на весь экран - чтобы это исправить добавьте этот код.
Если вы захотите использовать метод проверки внешнего файла через сумму MD5 [который описан в 5 версии руководства по программированию в Inno Setup] для запуска инсталлятора то вам понадобится калькулятор суммы MD5, калькулятор сумм MD5, SHA-256, CRC32. Если вы хотите узнать какие ключи в реестр вносит та или иная программа [или игра] то Вам понадобится RegShot.



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



ISTool
 
www.istool.org
 
Последний релиз: 5.1.8 [18 Октября 2006 года] New
Скачать | зеркало  
[как сказано в описании изменений, добавлена поддержка новых директив 5.1.8]
 
Русификатор
Скачать | зеркало


 
Распаковщик установок, сделанных с помощью Inno Setup. При распаковке извлекаются  ресурсы и скрипт установки [немного усечённый]. Возможно подключение к TotalCommander или FAR с помощью MultiArc плагинов.
 
Поддерживает распаковку инсталляторов, сделанных с помощью Inno Setup начиная с версии 3.0.0-beta по 5.1.10
 
Последний релиз: 0.19
Скачать | зеркало


 
Удобная оболочка для облегчения написания скриптов установки для INNO SETUP. Обладает некоторыми полезными функциями, которых нет ни у самого INNO, ни у ISTool.
 
Последний релиз: 5.1.6.9 [09 Июль 2006 года]
Скачать 4.2 мб | обновление 3.1 мб
 
Русификатор от GloThin
Скачать с сайта GloThin | Зеркало | Зеркало | зеркало
Пароль: ruboard
Примечание: офф. сайт косо отображается в Oper`е.
 
Новое название проекта на сайте, похоже произошла замена ScriptMaker на:
 
Inno Script Generator

Последний релиз: 1.02.5 [02 Апреля 2007 года]
Скачать | обновление
Примечание: обновление ставится только на Inno Setup Quickstartpack 5.1.11.

Всего записей: 67 | Зарегистр. 11-12-2001 | Отправлено: 15:23 09-10-2002 | Исправлено: NightW0lf, 15:16 15-04-2007
NightW0lf



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

Цитата:
-- добавь флаг:  
Flags:  ignoreversion

Спасибо работает!
И все таки это вообще возможно:

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

 
 
Добавлено:
И если нетрудно то скачаю тот пример инсталлятора в катаром все реализовано.

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 23:50 02-01-2007
Mihagod

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NightWolf, спасибо за подсказку!
 
Если не затруднит ещё один вопросик (пока ), как у ярлыка задать рабочую папку? Например "C:\Program Files\папка такая то". Тоесть рабочая папка была указана всегда та, куда устанавливается приложение, вот. А то пустая строка почему то.
 
Спасибо за внимание!

Всего записей: 2 | Зарегистр. 02-01-2007 | Отправлено: 17:29 04-01-2007
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mihagod
Дописываешь в скрипте к ярлыку WorkingDir: {app}; если рабочая папки это папки куда устанавливается приложение.

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 17:37 04-01-2007
Serge2005

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Выложите, пожалуйста, расширенные руководства, справки итп, а то по ссылкам в шапке не качаются.
 
Возможно ли реализовать нечто вроде: при устоновке скрипт проверит наличие нескольких файлов, если один из них существует, то путь к нему записать в ини файл как параметр... Если нет, то удалить некоторые параметры ини файла?
(*собственно для этого и нужна расширенная справка...*)

Всего записей: 554 | Зарегистр. 11-02-2006 | Отправлено: 18:04 04-01-2007
omals

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в секции  
[RUN]
нужно прописать запуск не реальной екзешки, а просто
выполнение какойто моей функции
ну типа
[RUN]
Filename: {code:MyFunction};
 
в  
[Code]
function MyFunction(S:STRING):STRING;
var
ErrorCode: Integer;
begin
//тут например
begin
  ShellExec('open', ExpandConstant('{app}\myURL.url'),'', '', SW_SHOW, ewNoWait, ErrorCode);
//открываю дефолтным браузером URL
end;
 
но при компиляции получим обшибку, шо нет реального файла для выполнения
можно тупо перед end прописать
Result:=rundll32.exe
в результате выполнится нужный мне код, а затем без пользы запуститься rundll32.exe
но это некрасиво и неправильно както
 
 

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 19:30 04-01-2007
Igimon

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите пожалуйста как сделать так чтобы во время выполнения команды из секции [RUN] строка прогресс бара не стояла на месте а быстро двигалась вперед-назад?  
P.S. Речь не идет об корректном отображении строки прогресс бара, речь идет только о визуальном движении прогресс бара и создание наглядной видимости того что инсталлятор продолжает работать.

Всего записей: 800 | Зарегистр. 08-04-2005 | Отправлено: 22:08 04-01-2007
AtotIK



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

Цитата:
Теперь мне надо чтобы инсталлятор заменил оригинальный файл (на пример - myprog1.exe) на такой же, но только обновленный, и во время установки в директории программы была сразу создана папка "Backup_Files" (т.е. у пользователя инсталлятор не должен спрашивать ни название папки, ни где размещать ее, а нужно чтобы инсталлятор создавал все сам автоматически).

 
[Files]
Source: "{app}\Some.file"; DestDir: "{app}\Backup_Files"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion external;  
 
Скину счас тебе весь код в личку...разбирайся...Тока эти файлы ни кому не давай.

Всего записей: 153 | Зарегистр. 17-09-2006 | Отправлено: 17:29 05-01-2007 | Исправлено: AtotIK, 17:32 05-01-2007
Chanka

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

Цитата:
Тока эти файлы ни кому не давай.

 
Жадные вы. Не получите от меня линк на пропатченный инсталлятор.

Всего записей: 208 | Зарегистр. 24-08-2006 | Отправлено: 18:32 05-01-2007
NightW0lf



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

Цитата:
Не получите от меня линк на пропатченный инсталлятор.

А какой и для чего пропатченный инсталлятор?
AtotIK
Спасибо за код буду разбираться!

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 18:40 05-01-2007
AtotIK



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2 Chanka
 
Это как в ситуации с SerGEAnt'ом...Авторское право стоит на меня.
 
2 NightW0lf
 
Да я пошутил...В принципе, если найдёшь в коде чё-нить интерестное, то можешь отдать куски Kindly.
 
-----------------------------------------
 
Кста...Вот пример написания выбора установки (например - русской версии игрушки) через RadioButton:
 
[Files]
;Основные файлы
Source: "Work\*.*"; DestDir: "{app}"; Flags: ignoreversion overwritereadonly
;Файлы русификатора игры
Source: "Russian\*.*"; DestDir: "{app}"; Check: Russian; Flags: ignoreversion overwritereadonly
 
[Code]
var
RussianBtn, EnglishBtn: TRadioButton;
ResultCode: Boolean;
 
procedure CreateTheWizardPages;
var
 LangPage: TWizardPage;
begin
 LangPage:=CreateCustomPage(wpSelectComponents, 'Language', 'Select Game Language');
  RussianBtn:=TRadioButton.Create(LangPage);
  RussianBtn.Top:=ScaleY(30);
  RussianBtn.Width:=LangPage.SurfaceWidth;
  RussianBtn.Height:=ScaleY(17);
  RussianBtn.Caption:='Russian';
  RussianBtn.Checked:=GetPreviousData('Russian', '1') = '1';
  RussianBtn.Parent:=LangPage.Surface;
 
  EnglishBtn:=TRadioButton.Create(LangPage);
  EnglishBtn.Top:=RussianBtn.Top + ScaleY(30);
  EnglishBtn.Width:=LangPage.SurfaceWidth;
  EnglishBtn.Height:=ScaleY(17);
  EnglishBtn.Caption:='English';
  EnglishBtn.Checked:=GetPreviousData('English', '0') = '1';
  EnglishBtn.Parent:=LangPage.Surface;
end;
 
procedure InitializeWizard();
begin
CreateTheWizardPages;
end;
 
procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
 SetPreviousData(PreviousDataKey, 'Russian', IntToStr(Ord(RussianBtn.Checked)));
 SetPreviousData(PreviousDataKey, 'English', IntToStr(Ord(EnglishBtn.Checked)));
end;
 
function Russian: Boolean;
begin
 Result:=RussianBtn.Checked;
end;
 
function English: Boolean;
begin
 Result:=EnglishBtn.Checked;
end;
 
Функция "English" здесь дана так просто, для виду...Типа если выберешь "Russian", то устанавливаются файлы русификатора, а если нет, то просто ставятся основные файлы. Короче, разобирётесь.
 
Добавлено:
 
Да, вместо wpSelectComponents можно написать любую страницу и поверх её создастся страница с выбором языка.

Всего записей: 153 | Зарегистр. 17-09-2006 | Отправлено: 19:42 05-01-2007 | Исправлено: AtotIK, 19:50 05-01-2007
Chanka

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

Цитата:
А какой и для чего пропатченный инсталлятор?  

 
Эта версия 5.1.9. и в нее встроены функции фоновая картинка в формате jpg, а также слайд-шоу также в формате jpg. Причём в скрипте никакого кода писать не надо просто кладёте рядом с вашим инсталлом папку Res и кладёте туда картинки, а также список файлов для слайд-шоу. У кого есть игрушки от 1с меня поймут.

Всего записей: 208 | Зарегистр. 24-08-2006 | Отправлено: 20:28 05-01-2007
NightW0lf



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

Цитата:
Эта версия 5.1.9. и в нее встроены функции фоновая картинка в формате jpg, а также слайд-шоу также в формате jpg. Причём в скрипте никакого кода писать не надо просто кладёте рядом с вашим инсталлом папку Res и кладёте туда картинки, а также список файлов для слайд-шоу. У кого есть игрушки от 1с меня поймут.

Круто! все время хотел, чтобы такая фишка была по умолчанию в Inno Setup!
Сможешь залить?
 
БУДУ ОЧЕНЬ ПРИЗНАТЕЛЕН!

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 20:51 05-01-2007
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Раз уж речь зашла о возможности бэкапа...
Мне задавали вопрос по поводу перемещения папок (не копирования) средствами Inno Setup. Как перемещать средствами Inno не знаю, но средствами самой операционки можно.
Здесь можно взять скрипт, сохранить его в файл и этот файл включить в свой проект (директивой #include "SHFileOperation.iss").
После этого появится возможность использовать 4 функции:
function CopyDir(const fromDir, toDir: string): Boolean;
function MoveDir(const fromDir, toDir: string): Boolean;
function DelDir(dir: string; toRecycle: Boolean): Boolean;
function RenameDir(const fromDir, toDir: string): Boolean;
 
В скрипте есть краткое описание, но хочу обратить внимание, что в функциях CopyDir и MoveDir есть зависимость от того, указана ли fromDir со слешем или без. В первом случае в toDir будет скопировано/перемещено только содержимое fromDir со всеми файлами у подпапками; во втором, в toDir будет скопирована/перемещена сама fromDir со всеми файлами и подпапками.
 
DelDir может удалять совсем или в корзину (в зависимости от флага toRecycle).
 
В случае, если кто-то удалит папку Windows, претензии не принимаются.  
 
 
Добавлено:
Небольшой пример использования SHFileOperation.iss для бекапа:
Код:
 
#include "SHFileOperation.iss"
 
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes
 
[Files]
Source: Files\*.*; DestDir: {app}; Flags: ignoreversion recursesubdirs
 
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
    begin
      CopyDir(ExpandConstant('{app}\'),ExpandConstant('{app}\Backup'));
    end;
end;
 
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usPostUninstall then
    begin
      CopyDir(ExpandConstant('{app}\Backup\'),ExpandConstant('{app}'));
    end;
end;  

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



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

Цитата:
Эта версия 5.1.9. и в нее встроены функции фоновая картинка в формате jpg, а также слайд-шоу также в формате jpg.

А я то думал, как 1С-овцы так делают, вроде соответствующего кода в CompiledСode.bin не обнаружил. Я так полагаю, что эта "фирменная" фишка 1С. В принципе оно мне не нужно, но хотелось бы иметь сам патч в отдельности.
 
Добавлено:
Genri
А бекап возможен при сохранении резервных копий с подпапками, наподобие технологии PatchWise?

Всего записей: 3000 | Зарегистр. 04-08-2005 | Отправлено: 14:03 06-01-2007
Genri

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

Цитата:
А бекап возможен при сохранении резервных копий с подпапками
-- Не уверен, что правильно понял вопрос, но функции CopyDir и MoveDir копируют/перемещают все содержимое, включая файлы и подпапки.
 
omals

Цитата:
но при компиляции получим обшибку, шо нет реального файла для выполнения  
-- не совсем понятно, почему надо именно в секции [Run], а не, например, в процедуре CurStepChanged. Но если очень надо, можно использовать следующий прием:
Код:
 
[Run]
Filename: file.nil; StatusMsg: Open URL...; Flags: skipifdoesntexist; Check: NeedRun(); BeforeInstall: BefRun()
 
[Code]
function NeedRun(): Boolean;
begin
 MsgBox('Hello Check', mbInformation, MB_OK);
 Result:= True;
end;
 
procedure BefRun();
begin
  MsgBox('Hello Before', mbInformation, MB_OK);
end;
 

 

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 14:24 06-01-2007
maxdddca123

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

Цитата:
maxdddca123 -- ты используешь FindWindowByClassName.  
("А ты вот этот плакатик внимательно читал?" (С)Жиглов):
Цитата:function FindWindowByClassName(const ClassName: String): HWND;  
Описание:  
Находит заголовок для верхнеуровневого окна, имя класса которого указано в заданной строке. Эта функция не ищет дочерние окна и не выполняет чувствительный к регистру (case-sensitive) поиск. Возвращает 0, если ни одного окна не найдено.


Цитата:
Получается вообще нельзя закрыть доченрее окно средствами Inno?

 
Вот наша недавняя беседа, но Вы так и не ответили на мой вопрос... Повторяю

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 14:33 06-01-2007
NightW0lf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ОГРОМНОЕ СПАСИБО ВСЕМ, КТО МНЕ ПОМОГАЛ В СОЗДАНИИ "БЕКАПОВ"!
Все работает, НО еще один маленький вопросик Вам:
Проблема заключается в том, что после удаления - файлы из папки "Install_Rus\Backup" перемещаются обратно это ВСЕ правильно, НО так же после удаления ОСТАЮТСЯ эти папки "Install_Rus\Backup" при том еще в папке "Backup" остается оригинальный файл, а мне бы хотелось, чтобы этих папок НЕ было (Install_Rus\Backup\Some_name.exe) после удаления.
 
Заранее благодарю!

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 16:43 06-01-2007
JKSerGEAnt



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NightW0lf
DeleteFile(ExpandConstant('{app}')+'\Install_Rus\Backup\Some_name.exe')
RemoveDir(ExpandConstant('{app}')+'\Install_Rus\Backup')
RemoveDir(ExpandConstant('{app}')+'\Install_Rus)
 
p.s. молодец, склонировал до последней капли - хоть бы что-нибудь свое придумал
 
Добавлено:
Genri
Еще раз спасибо за SHFileOperation.iss - теперь инсталл стал выглядеть просто идеально

Всего записей: 601 | Зарегистр. 13-06-2003 | Отправлено: 17:10 06-01-2007
NightW0lf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JKSerGEAnt
СПИСОБО!

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 17:23 06-01-2007
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maxdddca123
Цитата:
Получается вообще нельзя закрыть доченрее окно средствами Inno?
-- Мне такие средства Inno не известны.
 
NightW0lf
Цитата:
НО так же после удаления ОСТАЮТСЯ эти папки "Install_Rus\Backup" при том еще в папке "Backup" остается оригинальный файл
-- А в чем проблема? Помимо функции в SHFileOperation.iss, Inno имеет несколько встроенных функций для удаления папок. Например:
Код:
 
#include "SHFileOperation.iss"
 
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes
 
[Files]
Source: Files\*.*; DestDir: {app}; Flags: ignoreversion recursesubdirs
 
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
    begin
      CopyDir(ExpandConstant('{app}\'),ExpandConstant('{app}\Backup'));
      // или
      // MoveDir(ExpandConstant('{app}\'),ExpandConstant('{app}\Backup'));
    end;
end;
 
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usPostUninstall then
    begin
      MoveDir(ExpandConstant('{app}\Backup\'),ExpandConstant('{app}'));
      // RemoveDir удалит только, если папка пустая
      RemoveDir(ExpandConstant('{app}\Backup'));
      // DelTree использовать не рекомендуется,
      // так как будут удалены все вложенные папки!
      // DelTree(ExpandConstant('{app}\Backup'), True, True, True);
    end;
end;  

 
JKSerGEAnt

Цитата:
спасибо за SHFileOperation.iss
-- Да вобщем-то не за что. Я ведь сам ничего не придумал (так же как и NightW0lf). Все взято из хелпов (Inno, Delphi, WinAPI), из форумов, из новостных конференций. Моего там ничего нет.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 18:24 06-01-2007
   

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru