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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sampron
 
А я с дуру лепил это:

Код:
RegDeleteKeyIfEmpty(const RootKey: Integer; const SubkeyName: String): Boolean;

К тому же не как не давало скомпилиться, ибо понаписали непонятное. Спасибо!

Всего записей: 3703 | Зарегистр. 29-01-2005 | Отправлено: 04:25 24-07-2008
Victor_Dobrov



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

Цитата:
реализовать имитацию страницы выбора компонентов на подобие инсталлеров NSIS?

Три примера есть в коллекции скриптов из Шапки.

Всего записей: 742 | Зарегистр. 27-09-2005 | Отправлено: 04:29 24-07-2008
boss911



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

Код:
[Registry]
Root: HKLM; SubKey: SOFTWARE\{AppVerName}; ValueType: none

Чтобы реализовать стандартными средствами, а не с помощью Паскаля?

Всего записей: 3703 | Зарегистр. 29-01-2005 | Отправлено: 04:55 24-07-2008 | Исправлено: boss911, 04:57 24-07-2008
Victor_Dobrov



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как известно, деинсталлятор не восстанавливает значения параметров реестра, он может их только удалить или оставить.
Поэтому предлагаю скрипт RegBackup, показывающий, как восстановить прежние значения реестра при удалении программы.
 
Это может пригодится в инсталляторах, которые изменяют настройки системы или других программ.
 
boss911 - используй препроцессор, который работает перед компиляцией: {#SetupSetting("AppVerName")}

Всего записей: 742 | Зарегистр. 27-09-2005 | Отправлено: 11:54 24-07-2008 | Исправлено: Victor_Dobrov, 11:55 24-07-2008
0bject

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую всех. Проблема следущая:
Создаю текстовый файл при помощи функции SaveStringToFile. Созданный файл имеет кодировку ANSI, а мне необходимо Unicode.
Существуют ли какие-либо стандартные методы решения данной задачи?
 
Пробовал делать так, но результат не изменился:
Создал функцию для конвертации строки
function WinToDos( s: string ): string;
var
  str: string;
begin
  str := s;
  CharToOemBuff( str );
  Result := str;
end;
 
В момент записи в файл конвертировал строку  
SaveStringToFile( FilePath, WinToDos( 'text1' ) + #13#10, False );
SaveStringToFile( FilePath, WinToDos( 'text2' ) , True );
 

Всего записей: 10 | Зарегистр. 02-02-2006 | Отправлено: 15:11 24-07-2008 | Исправлено: 0bject, 15:38 24-07-2008
Unc1e

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
0bject, я ведь совсем недавно спрашивал. Переделай скрипт под себя.

Всего записей: 434 | Зарегистр. 11-06-2007 | Отправлено: 17:25 24-07-2008
boss911



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

Цитата:
используй препроцессор, который работает перед компиляцией: {#SetupSetting("AppVerName")}

Ой, я не понимать, дай, плиз, полный пример, как сделать подобное:

Код:
[Registry]
Root: HKLM; SubKey: SOFTWARE\{AppVerName}; ValueType: none

Чтобы подставлялось значение из секции [Setup] - AppVerName=значение.

Всего записей: 3703 | Зарегистр. 29-01-2005 | Отправлено: 18:07 24-07-2008
Genri

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

Цитата:
я ведь совсем недавно спрашивал
-- где спрашивал? Видно я как-то пропустил этот вопрос.
Дело в том, что указанный тобой пример, конвертит не совсем в юникод. С другой стороны, судя по наличию в примере объявления функции MultiByteToWideChar, ход мысли очевидно был правильный Кстати, а почему не стал делать через MultiByteToWideChar?  
 
0bject

Цитата:
файл имеет кодировку ANSI, а мне необходимо Unicode
...............
Создал функцию для конвертации строки  
function WinToDos
-- так все-таки, сконвертировать надо в юникод или в дос? Если первое, то смотри пример Правда, пример весьма условный (без проверок и пр.). Но принцип, думаю понятен.

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri, вот тут спрашивал.
Цитата:
а почему не стал делать через MultiByteToWideChar?
Потому что в Паскале еле-еле разбираюсь
Цитата:
Видно я как-то пропустил этот вопрос.
Да уж, Вы что-то редко к нам заглядываете Вот с этим не поможете?

Всего записей: 434 | Зарегистр. 11-06-2007 | Отправлено: 20:24 24-07-2008 | Исправлено: Unc1e, 20:25 24-07-2008
Genri

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

Цитата:
Вот с этим не поможете?
-- замени везде
AddApplicationToExceptionListW на
AddApplicationToExceptionListA
а так же
RemoveApplicationFromExceptionListW на
RemoveApplicationFromExceptionListA
 
hint! W - это не от Windows а от WideString; А - от AnsiString
В принципе можно и сконвертировать (см.выше). Но раз есть готовая, то особого смысла нет.  
 

Цитата:
в Паскале еле-еле разбираюсь
-- я тоже

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 22:31 24-07-2008 | Исправлено: Genri, 22:44 24-07-2008
boss911



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

Код:
[Registry]
Root: HKLM; SubKey: "SOFTWARE\{#SetupSetting("AppVerName")}"; ValueType: none; Check: not IsTaskSelected('TASK')

- не компилится.

Код:
if RegKeyExists(HKLM, 'SOFTWARE\{#SetupSetting("AppVerName")}') then

- ключ в реестре присутствует, но инсталлятор его не определяет.
 
Препроцессор установлен, что не так?

Всего записей: 3703 | Зарегистр. 29-01-2005 | Отправлено: 22:53 24-07-2008 | Исправлено: boss911, 22:57 24-07-2008
Unc1e

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri, как все просто оказалось... В очередной раз благодарю!

Всего записей: 434 | Зарегистр. 11-06-2007 | Отправлено: 23:02 24-07-2008
0bject

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо всем. Вышел из ситуации быстренько сделав библиотеку с необходимым функционалом. Подробнее...
 
Теперь проблема в другом:
Слишком долго выполняется процедура из этой DLL.
Попробую предложенный Вами пример.
 
________
Добавлено несколько минут спустя:
Вот функцию сделал (так удобнее)
 
function AnsiToUnicode( str: string ): string;
var
  res: integer;
  wstr: string;
begin
  res := MultiByteToWideChar( 0, 0,  str, (-1),  wstr,  0 );
  wstr := StringOfChar( #0, res*2 - 2 );
  res := MultiByteToWideChar( 0, 0,  str, (-1),  wstr,  res );
  Result := Chr( $FF ) + Chr( $FE ) + wstr;
end;
 
Работает также медленно как и моя DLL,
единственный плюс в отсутствии необходимости иметь самописную DLL.
 
Подскажите как в момент выполнения "долгой" функции/процедуры отобразить "живой" ProgressBar. Иными словами: возможно ли выполнение чего-либо в отдельном потоке? Ели возможно, то пример где посмотреть?
 
 
 
 
Добавлено:
Многие из здесь присутствующих наверняка знают что такое 'msconfig', а кроме 'cd..', 'dir', 'ping' знают еще несколько магических слов из черного окна.
Поэтому поздравляю всех с днем системного администратора.
 
Желаю счастья, здоровья, семейного тепла и уюта!

Всего записей: 10 | Зарегистр. 02-02-2006 | Отправлено: 07:51 25-07-2008 | Исправлено: 0bject, 09:21 25-07-2008
Genri

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

Цитата:
долго выполняется процедура из этой DLL
.....
Работает также медленно как и моя DLL
-- уверен, что проблема именно в этой части? Может, время занимает подготовка данных для конвертации? Попробуй проверить, примерно так:
  MsgBox('ps: ' + ps, mbInformation, MB_OK);
  wps:= AnsiToUnicode(ps);
  MsgBox('Converted!', mbInformation, MB_OK);
  SaveStringToFile('C:\TEMP\unicode2.txt', wps, False);
  MsgBox('Saved!', mbInformation, MB_OK);
 

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 10:42 25-07-2008
antifire

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Столкнулся с следующим - в секции [Setup] я прописал DefaultDirName={pf}\my_prog , но по каким то причинам на некторых компах, куда уже устанавливали прогу не в Program Files, по умолчанию устанавливает не в C:\Program Files\my_prog а куданибудь еще например D:\Новая папка\my_prog. Я так понял, где то в кеше остаеться информация, откуда инсталятор её берет. Как более жестко прописать в [Setup] путь по устаноке? Что нибудь вроде %SysDrive%\Program Files\my_prog?

Всего записей: 32 | Зарегистр. 27-05-2008 | Отправлено: 14:32 25-07-2008
elapse



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
antifire, может, лучше использовать директиву UsePreviousAppDir=no в секции [Setup]?

Всего записей: 95 | Зарегистр. 23-02-2008 | Отправлено: 14:37 25-07-2008
antifire

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
elapse
Ага, спасибо, помогло. =)
 
Добавлено:
Еще вопрос.
Мой установщик содержит в себе файл prog.ini (который отвечает за настройки программы, которую устанавливают) Содержимое prog.ini в начале:  
[Directories]
Structures=C:\Program Files\my_prog\
Bodies=C:\Program Files\my_prog\
Возможно ли сделать так, чтобы эти пути менялись в зависимости от того, какой путь  выбирают для установки  программы? То есть если захочется установить на D:\program\my_prog\  то в этой папке файл prog.ini будет содержать  
[Directories]
Structures=D:\program\my_prog\
Bodies=D:\program\my_prog\
 

Всего записей: 32 | Зарегистр. 27-05-2008 | Отправлено: 14:52 25-07-2008
laskeev2

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. Скажите, можно ли сделать имя файла, который должен включаться в проект, переменной? У меня не получается именно имена файлов сделать переменными.
 
Т.е. вместо readme_fr.txt использовать переменную (или самим innosetup-ом или через code):
Source: readme_fr.txt; DestName: {code:MyReadmeFile}; DestDir: "{app}"; Flags: isreadme
 
2. Так и не разобрался, как работать с юникодом - надо, чтобы присутствовали юникодовские символы в названии программы:
Name: {group}\Здесь надо, чтобы было название с юникодовыми символами; Filename: {app}\file.exe; WorkingDir: {app}
 
Как это сделать?

Всего записей: 5 | Зарегистр. 17-12-2005 | Отправлено: 15:33 25-07-2008 | Исправлено: laskeev2, 16:18 25-07-2008
0bject

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

Цитата:
Попробуй проверить ...  

Genri, ты прав. Спасибо.
Стал смотреть и действительно, подвисание появлялось раньше и юникод здесь не причем.
 
А проблема была в долгом выполнении функции EXEC.
Если просто выставить параметр Wait=ewNoWait (не ждать завершения процесса), то не исключена ситуация когда инсталляция закончится быстрее чем вышеупомянутый Exec и автоматически запуск устанавливаемой программы приведет к ошибке.
 
с IS знаком всего пару дней, поэтому пока так вышел из ситуации:
во избежании подвисаний запускаю Exec с параметром ewNoWait, но следом делаю пустой цикл, в котором "двигаю" ProgressBar.

Код:
 
...
...
ExecResult := Exec( RestoreCmdPath, '', '', SW_HIDE , ewNoWait, ResultCode);
  ProgressPage := CreateOutputProgressPage('Установка...', 'Развертывание базы данных');
  ProgressPage.SetText('Копируется информация...', '');
  ProgressPage.SetProgress(0, 0);
  ProgressPage.Show;
  try
    for i := 0 to 50 do begin
      ProgressPage.SetProgress(i, 50);
      Sleep(100);
    end;
  finally
    ProgressPage.Hide;
  end;
...
...
...
 

 

Всего записей: 10 | Зарегистр. 02-02-2006 | Отправлено: 16:22 25-07-2008
Diawer

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

Цитата:
Для Обзора папок  
function DirBrowseButtonClick(CurPageID: Integer): Boolean;  
begin  
  sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);  
  Result := True;  
end;  
 
Для пуска  
function GroupBrowseButtonClick(CurPageID: Integer): Boolean;  
begin  
  sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);  
  Result := True;  
end;  

я пробовал, но почему-то с остальным вместе не катит
 

Всего записей: 180 | Зарегистр. 08-05-2007 | Отправлено: 17:36 25-07-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