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

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



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

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

 
innounp setup.exe -x -m -f(pass.txt) Pass узнаем выдирая плагином compiledcode.bin.
Хотя твой инсталл не качал пока. Нет меня дома.

Цитата:
Это противоречит не только всем законам криптографии, но и просто здравому смыслу (какой смысл прятать информацию в сейф, а ключ от него, положить даже не под коврик, а просто повесить рядом с замком).  
В принципе ты прав, но раньше нельзя было распаковать при использовании нестандартных символов. Еще есть вариант - юзать в секции [Setup] SetupLdr=no, тогда плагин "отлетает". В инсталле то что криптуется - это файло в {app}, {win} и т.д. временные файлы и картинки, в том числе м compiledcode.bin не криптуются, поскольку юзаются сразу. Но автору распаковщика не составит проблем реализовать выдирание некриптованных файлов отдельно в следующей версии - у меня есть мысль как раз ему об этом написать.
 
 

Всего записей: 3000 | Зарегистр. 04-08-2005 | Отправлено: 13:06 22-12-2006
Genri

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

Цитата:
Pass узнаем выдирая плагином compiledcode.bin.
-- Ну не вижу я пароля в compiledcode.bin! Строковые переменные вижу, хеш командной строки вижу, а пароля нет! Наверно к старости зрение подводит.
Все-таки хотелось бы знать, насколько безопасно использовать криптование. Поэтому пока выкладывать пароль и параметр командной строки не буду. Подожду результатов твоего эксперимента. Попробуешь - сообщи.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 13:29 22-12-2006
omals

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

Цитата:
Может кто знает, можно ли в Inno определить что инсталлятор запущен на Amd64? Надо мне для этой платформы драйвер другой устанавливать. В документации сходу ничего не нашел  

не заметил ответил ли хто на этот вопрос
посему попробую ответить  
есть такая функция  
function IsWin64: Boolean;
и еще
function GetWindowsVersion: Cardinal;
именно с этой парой я и определяю какие драйвера ставить.
 
 
 
Добавлено:
2 maxdddca123

Цитата:
Как сделать, что бы программа отображалась в установке\удалении программ ?

 
см. в хелпе
[Setup]: CreateUninstallRegKey
но поумолачанию там yes
то должна быть автоматом
 
или я неверно понял вопрос...

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 13:36 22-12-2006
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
omals
Да всё разобрался. Спасибо Вам.
 
To all please help !
если путь установки программы не определён (пусто), то при выборе каталога к пути добавляется \Новая папка .Как это убрать ?

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 15:03 22-12-2006 | Исправлено: maxdddca123, 15:31 22-12-2006
omals

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

Цитата:
To all please help !  
если путь установки программы не определён (пусто), то при выборе каталога к пути добавляется \Новая папка .Как это убрать ?  

 
может просто
DefaultDirName={pf}

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 16:28 22-12-2006
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И ещё трудный вопрос: как мне распаковать файлы в несколько директорий одновременно ? Список дирректорий хранится в реестре, надо чот бы пользователь не выбирал 1 дирректорию как обычно, а что бы этот список считывался, вставал в компоненты и пользователь отмечал галками, в какие ему надо установить, а в какие нет. Очень жду помощи !
 
 
Добавлено:
Как мне увидеть результат выполнения этой функции ? (Конкретно это окошко:    MsgBox('Список имен разделов:'#13#10#13#10 + S, mbInformation, MB_OK); )
 
function RegGetValueNames(const RootKey: Integer; const SubKeyName: String; var Names: TArrayOfString): Boolean;var
 
  I: Integer;
  S: String;
begin
  if RegGetValueNames(HKEY_CURRENT_USER, 'Control Panel', Names) then
 
  begin
    S := '';
    for I := 0 to GetArrayLength(Names)-1 do
      S := S + Names[I] + #13#10;
    MsgBox('Список имен разделов:'#13#10#13#10 + S, mbInformation, MB_OK);
  end else
  begin
  MsgBox('ошибка', mbInformation, MB_OK);
 
  end;
end;
 
Прописал в Code но ничего не происходит. Хелп плиз !

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 19:23 22-12-2006 | Исправлено: maxdddca123, 00:09 23-12-2006
omals

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maxdddca123
если задать  
DefaultDirName="{pf}"
то будет  
С:\Program Files
 
 
Добавлено:
maxdddca123
 

Цитата:
function RegGetValueNames(const RootKey: Integer; const SubKeyName: String; var Names: TArrayOfString): Boolean;var  
 
  I: Integer;  
  S: String;  
begin  
  if RegGetValueNames

 
не понял тут, что переопределение стандартной  функции RegGetValueNames?
 
да еще и с вызовом ее же из себя - рекурсия?
 
может просто нужно имя свое задать
function MYRegGetValueNames( а дальше все как есть?

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 11:37 23-12-2006
maxdddca123

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

Цитата:
если задать  
DefaultDirName="{pf}"  
то будет  
С:\Program Files

нет, дело было в ключе AppendDefaultDirName=true
 

Цитата:
не понял тут, что переопределение стандартной  функции RegGetValueNames?

Разобрался....
 
Добавлено:
Вот такая ф-ция считывает  имена параметров в указанный строковый массив Names.  
 
procedure InitializeWizard();
 
 var   Names: TArrayOfString;
 
 
  I: Integer;
  S: String;
begin
  if RegGetValueNames(HKEY_CURRENT_USER, 'Software\1C\1Cv7\7.7\Titles', Names) then
 
  begin
    S := '';
    for I := 0 to GetArrayLength(Names)-1 do
      S := S + Names[I] + #13#10;
    MsgBox('Список имен разделов:'#13#10#13#10 + S, mbInformation, MB_OK);
  end else
  begin
  MsgBox('ошибка', mbInformation, MB_OK);
 
  end;
end;
 
А как сделать, что бы считывались ещё и значения этих параметров ? Стандартной ф-ции к сожалению нет.

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 12:40 23-12-2006 | Исправлено: maxdddca123, 13:07 23-12-2006
omals

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2 maxdddca123
for I := 0 to GetArrayLength(Names)-1 do  
      S := S + Names[I] + #13#10;  
    MsgBox('Список имен разделов:'#13#10#13#10 + S, mbInformation, MB_OK);  
RegQueryStringValue(HKCU,  'Software\1C\1Cv7\7.7\Titles', Names[I], Value);
    MsgBox(Value, MB_OK);  
  end
 
но если там не String значения то используеш вместо
RegQueryStringValue
другие
function RegQueryStringValue(const RootKey: Integer; const SubKeyName, ValueName: String; var ResultStr: String): Boolean;
function RegQueryMultiStringValue(const RootKey: Integer; const SubKeyName, ValueName: String; var ResultStr: String): Boolean;
function RegQueryDWordValue(const RootKey: Integer; const SubKeyName, ValueName: String; var ResultDWord: Cardinal): Boolean;
function RegQueryBinaryValue(const RootKey: Integer; const SubKeyName, ValueName: String; var ResultStr: String): Boolean;
 
все функции описаны в хелпе в разделе
Pascal Scripting: Support Functions Reference

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 13:49 23-12-2006
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
omals
Дак эти эти ф-ции возвращают вроде 1 параметр, а мне тоже нужно массив.

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 15:00 23-12-2006
omals

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в  
var   Value: TArrayOfString;  
 
а потом в for
RegQueryStringValue(HKCU,  'Software\1C\1Cv7\7.7\Titles', Names[I], Value[I]);  

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 15:09 23-12-2006
maxdddca123

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

Цитата:
 MsgBox(Value, MB_OK);  

Это что ??  
 
Добавлено:
Написал вот так
 
procedure InitializeWizard();
 var  Value, Names: TArrayOfString;
 
 
  I: Integer;
  S: String;
begin
  if RegQueryStringValue(HKEY_CURRENT_USER,  'Software\1C\1Cv7\7.7\Titles', Names[I], Value[I]) then
 
  begin
    S := '';
   for I := 0 to GetArrayLength(Names)-1 do
      S := S + Value[I] + #13#10;
    MsgBox('Список имен разделов:'#13#10#13#10 + S, mbInformation, MB_OK);
 
end;
end;
 
Пишет out of range

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 15:14 23-12-2006 | Исправлено: maxdddca123, 15:19 23-12-2006
omals

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
procedure InitializeWizard();  
 
 var   Names: TArrayOfString;  
Value: TArrayOfString;  
 
  I: Integer;  
  S, S1: String;  
begin  
  if RegGetValueNames(HKEY_CURRENT_USER, 'Software\1C\1Cv7\7.7\Titles', Names) then  
 
  begin  
    S := '';  
    for I := 0 to GetArrayLength(Names)-1 do  
S1:='';
      S := S + Names[I] + #13#10;  
    MsgBox('Список имен разделов:'#13#10#13#10 + S, mbInformation, MB_OK);  
RegQueryStringValue(HKCU,  'Software\1C\1Cv7\7.7\Titles', Names[I], Value[I]);  
S1:='Для имени ' + Names[I] + 'значение: '+ Value[I];
    MsgBox(S1, mbInformation, MB_OK);  
  end else  
  begin  
  MsgBox('ошибка', mbInformation, MB_OK);  
 
  end;  
end;  

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 15:24 23-12-2006
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
omals
всёравно пишет при запуске инсталлятора out of range.
Вот содержание ветки:
 
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles]
"C:\\Program Files\\1Cv77\\TaxDB2\\"="Конфигурация 1С:Налогоплательщик 2.0"
"C:\\Program Files\\1Cv77\\DbBase\\"="База рабочая"
"D:\\Program Files\\1Cv77\\AprBase\\"="Информационная база"

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 15:26 23-12-2006 | Исправлено: maxdddca123, 15:28 23-12-2006
omals

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
S := '"'+S + Names[I] +'"';
а
S1:='"'+'Для имени ' + Names[I] + 'значение: '+ Value[I]+'"';  
 

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 15:34 23-12-2006
maxdddca123

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

Цитата:
S := '"'+S + Names[I] +'"';  
а  
S1:='"'+'Для имени ' + Names[I] + 'значение: '+ Value[I]+'"';  

Всё равно out of range
 
Добавлено:
Мне вообще нужна что бы выводилось  
 MsgBox('Список имен разделов:'#13#10#13#10 + S + S1, mbInformation, MB_OK);
где s1 примерно S := S + Value[I];
 
Добавлено:
Т.е. при запуске что бы окошко выглядело так
 
C:\Program Files\1Cv77\TaxDB2\ - Конфигурация 1С:Налогоплательщик 2.0"  
C:\Program Files\1Cv77\DbBase\ - База рабочая"  
D:\Program Files\1Cv77\AprBase\ - Информационная база"
 
Добавлено:
Вот чего удалось добиться:
 
procedure InitializeWizard();
 
var   Names: TArrayOfString;
Value: String;
 
  I: Integer;
  S,S1: String;
begin
  if RegGetValueNames(HKEY_CURRENT_USER, 'Software\1C\1Cv7\7.7\Titles', Names) then
 
  begin
    S := ''; S1:= ''
    for I := 0 to GetArrayLength(Names)-1 do
 
      S := S + Names[I] + #13#10;
 
  for I := 0 to GetArrayLength(Names)-1 do
  RegQueryStringValue(HKEY_CURRENT_USER,  'Software\1C\1Cv7\7.7\Titles', Names[I], Value)
S1 := S1 + Value + #13#10;
 MsgBox('Список имен разделов:'#13#10 + S + S1, mbInformation, MB_OK);
  end;
end;
 
Уже лучше, но там почему то выводится тока название последней базы, а мне надо всех трёх. Народ памагайте же !!! Ну

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 15:47 23-12-2006 | Исправлено: maxdddca123, 15:58 23-12-2006
omals

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
шото я нифига не понял шо нужно
может так  
 
procedure InitializeWizard();  
   
var    Names: TArrayOfString;  
    Value: TArrayOfString;  
   
  I: Integer;  
  S: String;  
begin  
  if RegGetValueNames(HKEY_CURRENT_USER, 'Software\1C\1Cv7\7.7\Titles', Names) then  
   
  begin  
    for I := 0 to GetArrayLength(Names)-1 do  
    RegQueryStringValue(HKCU,  'Software\1C\1Cv7\7.7\Titles', Names[I], Value[I]);  
    S:='"' + Names[I]+ ' - ' + Value[I] + '"';  
    MsgBox(S, mbInformation, MB_OK);  
  end else  
  begin  
  MsgBox('ошибка', mbInformation, MB_OK);  
  end;  
end;  
 
 
в масивах Names и Value у тебя есть имена и соответсвенные им значения
потом делай с ними шо надо ....
для Names[1] будет значение записи Value[I] .....

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 19:29 23-12-2006
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
omals
Ты прально понял, но ты сам проверял этот скрипт ? Он же не работает !!!
 
Добавлено:
Конкретно выдаёт ошибку на этой строчке:
RegQueryStringValue(HKCU,  'Software\1C\1Cv7\7.7\Titles', Names[I], Value[I]);  
Ошибка Runtime Error at (1:259)
Out of range.
Я так понимаю изза того, что сама ф-ция RegQueryStringValue не может работать с массивами !
 
Добавлено:

Цитата:
для Names[1] будет значение записи Value[I] .....

Value[i] или Value[1] ???

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 20:23 23-12-2006 | Исправлено: maxdddca123, 20:27 23-12-2006
Genri

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

Цитата:
Я так понимаю изза того, что сама ф-ция RegQueryStringValue не может работать с массивами !  
-- неправильно понимаешь. Ошибка потому, что не задан размер массива Value

Код:
 
procedure InitializeWizard();
 
var
  Names: TArrayOfString;
  Value: TArrayOfString;
  I: Integer;
  S: String;
begin
  if RegGetValueNames(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Themes', Names) then
    begin
      SetArrayLength(Value,GetArrayLength(Names));
        for I := 0 to GetArrayLength(Names)-1 do
          begin
            RegQueryStringValue(HKEY_CURRENT_USER,  'Software\Microsoft\Windows\CurrentVersion\Themes',  Names[I], Value[I]);
            S:=S + '"' + Names[I]+ ' - ' + Value[I] + '"' + #10#13;
          end;
      MsgBox(S, mbInformation, MB_OK);
    end else
  begin
    MsgBox('ошибка', mbInformation, MB_OK);
  end;
end;
 


Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 21:29 23-12-2006
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Genri
Где ты был раньше ??? Спасибо огромное Правда это только начало.
Теперь этот список надо что бы отображался в этой форме:
 
NewCheckListBox1 := TNewCheckListBox.Create(Page);
with NewCheckListBox1 do
begin
  Parent := Page.Surface;
  Left := ScaleX(0);
  Top := ScaleY(40);
  Width := ScaleX(413);
  Height := ScaleY(181);
  TabOrder := 0;
end;
 
Смысл в том, что пользователь выбирает галочками те пункты списка, в которые ему надо установить обновление. Подскажи как это реализовать ?

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 21:46 23-12-2006
   

Страницы: 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru