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

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

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

Цитата:
Я не так выразился -  мне нужно сделать backup реестра (нескольких веток)  и сохранить в нужном месте в виде reg-файла ПЕРЕД ИНСТАЛЛЯЦИЕЙ  
Был бы признателен

можно в InitializeSetup запустить .bat file который сделает бекап
пример как такой батник написать кажись есть тут
www.robvanderwoude.com/regedit.html
 
а можно просто писать свою процеду (запускать из того же InitializeSetup)
в ней читать нужное из реестра и затем писать в текстовый файл
правда там нужно будет повозится з форматом строк, но это детали.  
 
или я шото не так понял?

Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 12:46 27-12-2006
Chanka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri,
 
А что с моим вопросом? Неужели за столько время ничего не получилось? Здаётся мне что код, который я тебе дал надо вставлять не в скрипт, а в исходники Inno Setup. Попробуй, пожалуйста. Так как я не программист и с Delphi работать не умею. А ты просто герой форума

Всего записей: 208 | Зарегистр. 24-08-2006 | Отправлено: 12:59 27-12-2006 | Исправлено: Chanka, 13:02 27-12-2006
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maxdddca123 -- попробуй следующее:
Код:
 
[Files]
Source: Files\*; DestDir: {code:CurrentDir|0}; Check: NeedCopy(0)
Source: Files\*; DestDir: {code:CurrentDir|1}; Check: NeedCopy(1)
Source: Files\*; DestDir: {code:CurrentDir|2}; Check: NeedCopy(2)
Source: Files\*; DestDir: {code:CurrentDir|3}; Check: NeedCopy(3)
Source: Files\*; DestDir: {code:CurrentDir|4}; Check: NeedCopy(4)
Source: Files\*; DestDir: {code:CurrentDir|5}; Check: NeedCopy(5)
 
[Code]
var
  Names: TArrayOfString;
  Value: TArrayOfString;
  Page: TInputOptionWizardPage;
 
function NeedCopy(Param: integer): Boolean;
begin
 if (Param < Page.CheckListBox.Items.Count) and
    Page.CheckListBox.Checked[Param] then
   begin
     Result:= True;
   end;
end;
 
function CurrentDir(Param: string): string;
begin
  if Page.CheckListBox.Checked[StrToInt(Param)] then
    Result:= Page.CheckListBox.ItemCaption[StrToInt(Param)]
  else Result:= '';
end;
 
 
procedure InitializeWizard();
var
  I: Integer;
  S: String;
begin
Page := CreateInputOptionPage(wpWelcome,
  'Выберите компоненты', 'Какие компоненты хотите установить?',
  'Выберите необходимые компоненты и нажмите далее.',
  False, True);
 
  if RegGetValueNames(HKEY_CURRENT_USER, 'Software\1C\1Cv7\7.7\Titles', Names) then
    begin
      SetArrayLength(Value,GetArrayLength(Names));
        for I := 0 to GetArrayLength(Names)-1 do
          begin
            RegQueryStringValue(HKEY_CURRENT_USER,  'Software\1C\1Cv7\7.7\Titles',  Names[I], Value[I]);
            Page.CheckListBox.AddCheckBox(Names[I], Value[I], 0, True, True, False, False, nil);
          end;
    end else
  begin
    MsgBox('Ошибка!', mbInformation, MB_OK);
  end;
end;
 

Я исхожу из расчета, что путей для установки не может быть более 6. Если надо больше, в секции [Files] добавляем необходимое кол-во строк.
 
 
Добавлено:
Chanka

Цитата:
я не программист  
-- я тоже не программист.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 13:40 27-12-2006 | Исправлено: Genri, 14:45 27-12-2006
Denis_Kokyev



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
omals
Ну да - можно и так сделать, с помощью bat файла такого содержания
(GRom V это может быть то что нужно):
 
start /wait regedit /ea Save1.reg "HKEY_CURRENT_USER\Software\Programs1"
start /wait regedit /ea Save2.reg "HKEY_CURRENT_USER\Software\Programs2"
start /wait regedit /ea Save3.reg "HKEY_CURRENT_USER\Software\Programs3"
copy Save1.reg+Save2.reg+Save3.reg
 
В файл Save1.reg будут скопированы все остальные файлы, что вроде и требовалось.
 
GRom V
Вот и я не в курю - я первый раз привел процедуру сохранения ветки
реестра средствами InnoSetup, второй - как что запускать до выполнения
скрипта. Сопоставить религия не позволяет?


----------
Можно ответить на любой вопрос, если вопрос задан правильно.
Платон

Всего записей: 1074 | Зарегистр. 24-02-2003 | Отправлено: 14:25 27-12-2006 | Исправлено: Denis_Kokyev, 14:44 27-12-2006
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Genri
Спасибо, на счёт кол-ва путей тут конечно некрасиво. Оно же равно GetArrayLength(Names) я так понимаю. Сколько путей отметили, столько и папок будет в итоге.... Это можно как то всё реализовать через массив исключительно ? ПРосто у меня есть клиент, у которого 150 путей......

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

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

Цитата:
есть клиент, у которого 150 путей
-- т.е. он работает со 150 базами? Оригинально. К сожалению, способа решить проблему другим стандартным способом, я не знаю. Можно, конечно, организовать копирование полностью через код. Но тогда придется прописывать весь интерфейс (ход установки, прогрес-бар и т.д.).
 
Но в конце концов, добавь 200 строк и поэкпериментируй. В дистрибутиве файлы все равно по умолчанию хранятся в одном экземпляре. Так что на размер это не повлияет.

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

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Genri
Хм, ландно попробую. Ещё такой ньюанс: например на странице готовности пишется, что папка распаковки C:\windows... Тут можно сделать, что бы писались те папки, которые выбраны ?

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2 Genri  maxdddca123
 
думаю, можно решить следующим способом
каждую базу со всеми каталогами архивируем например с 7z
будет в результате  
archiv1.7z .... archiv10.7z ... archivN.7z
7zip тащим с собой в инсталке
в инсталке разархивируем в темп
а потом тупо через  
xcopy /Y /R "шо копировать" "куда копировать"
копируем все содержимое  
 
если у клиента много компов на которые надо ставить базы и все пути там разные, то
для каждого компа пишеться свой текстовый файл с этими путями  
и передается инсталке как параметр
инсталка его парсит и ставит шо кому надо.
кстати инно позволяет инсталить и на удаленные машины
тоесть админ с одной тачки простым запуском батника может проинсталить прогу на все компы в сети (зная их айпишки(имена) конечно же). нужно только нормально прописать батник.

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

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

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

Здесь смотри
omals

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

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

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

Цитата:
каждую базу со всеми каталогами архивируем например с 7z

Дак обновление надо распаковать в базы, зачем их куда то копировать...
 
 
Добавлено:
Genri

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

Честно - не понял причём тут изменение старницы готовности к установке и данная Вами ссылка. Вы меня не так наверно поняли. Меня интересует страница ГОТОВНОСТИ, а не страница дирректории. Я её вообще отключил. А на странице готовности пишется, что путь установки C:\Windows, а нужно, что бы выводились те пути, которые выбрал юзер галочками.

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

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

Цитата:
Вы меня не так наверно поняли.
-- действительно. не так понял. Тогда так:
Код:
 
procedure CurPageChanged(CurPageID: Integer);
var
  i: integer;
begin
with WizardForm.ReadyMemo.Lines do
  begin
    if CurPageID = wpReady then
      begin
        Clear;
        Add('Destination location:');
        for i:= 0 to Page.CheckListBox.Items.Count - 1 do
          begin
            if Page.CheckListBox.Checked[i] then
              Add(#9 + Page.CheckListBox.ItemCaption[i]);
          end;
      end;
  end;
end;
 

 
 
Добавлено:

Цитата:
на счёт кол-ва путей тут конечно некрасиво. Оно же равно GetArrayLength(Names) я так понимаю. Сколько путей отметили, столько и папок будет в итоге.... Это можно как то всё реализовать через массив исключительно ?
-- как я уже говорил, если все прописывать в коде, то придется полностью перекрывать интерфейс отображения. Я бы все-таки рекомендовал использовать тот вариант, который я предлагал выше (по крайней мере, пока кто-нибудь не предложит более изящное решение). А если тебе влом прописывать 150 строк - это не проблема. Можешь в секции [Files] использовать следующую конструкцию:
Код:
 
[Files]
#define MaxTarget 200
#define i
 
#sub AddFile
Source: Files\*; DestDir: {code:CurrentDir|{#i}}; Check: NeedCopy(ExpandConstant('{#i}'))
#endsub
 
#for {i = 0; i < MaxTarget; i++} AddFile
 

Здесь MaxTarget я задал = 200. Т.е. препроцессор сам за тебя пропишет 200 строк Значение можешь менять по своему усмотрению (если завтра у тебя будет клиент с 500 базами - ставь с запасом = 1000)
 
 
Добавлено:
Сорри, маленькая неточность с большими последствиями
Чтобы было понятней, здесь окончательный скрипт для тебя.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 03:35 28-12-2006
GRom V

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Извеняюсь не увидел 53 страници форума......в уголочке сц..ко

Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 05:06 28-12-2006 | Исправлено: GRom V, 09:14 28-12-2006
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Genri
Вы просто генний, спасибо Вам огромное !!!!!!!!
Ещё такой вопросик: надо что бы при нажатии на кн далее на этой странице
Page := CreateInputOptionPage проверялось, выбран ли хоть 1 чекбокс. Если не выбран, выдавать сообщение, что для установки надо выбрать хотя бы 1 базу, и главное что бы в таком случае после нажатия кн далее инсталлятор не переходил на следующую страницу. Смысл в том, что бы инсталлятор не давал пользователю нажать далее, если ни 1 база не выбрана (что вполне логично вобщем то )

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 06:50 28-12-2006 | Исправлено: maxdddca123, 06:57 28-12-2006
feandy



Пиво тоже компонента
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maxdddca123
Используй стандартную функцию
function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;
  if CurPageID = Page.ID then
  begin
     if твоя проверка ложь then
        Result := False //запрет перехода на след страницу
     else Result := True; //разрешаем переход на след страницу
  end;
 
end;

Всего записей: 5200 | Зарегистр. 15-02-2002 | Отправлено: 08:22 28-12-2006
GRom V

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

Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 09:44 28-12-2006
Genri

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

Цитата:
что бы инсталлятор не давал пользователю нажать далее, если ни 1 база не выбрана  

Код:
 
procedure OnClickCheck(Sender: TObject);
var
  i: integer;
begin
WizardForm.NextButton.Enabled:= False;
  for i:= 0 to Page.CheckListBox.Items.Count - 1 do
    begin
      if Page.CheckListBox.Checked[i] then
        begin
          WizardForm.NextButton.Enabled:= True;
          Break;
        end;
    end;
end;  

... а в процедуре InitializeWizard после CreateInputOptionPage добавить строку:
Page.CheckListBox.OnClickCheck:= @OnClickCheck;

Цитата:
генний
-- попахивает генной инженерией

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

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2 feandy
thx
 
2 Genri
Пробую
 
Млин не работает... Я тебе весь скрипт в личку скинул.... Посмотри пожалуйста где грабли ..

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



Пиво тоже компонента
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maxdddca123
если количество чекбоксов неизменно проверяй на конкретный индекс,
если оно переменное то по заголовку.
Типа такого
 
if (Page.CheckListBox.ItemCaption[i]='Моя база') and  
  (Page.CheckListBox.Checked[i]) then
begin
  Result := True;
  Break;
end
else
  Result := False;
 
Добавлено:
Вот более корректный код
 
function NextButtonClick(CurPageID: Integer): Boolean;  
begin  
  if CurPageID = Page.ID then  
  begin  
    Result := False;
    for i:= 0 to Page.CheckListBox.Items.Count - 1 do  
    if (Page.CheckListBox.ItemCaption[i]='Моя база') and  
       (Page.CheckListBox.Checked[i]) then  
    begin  
      Result := True;  
      Break;  
    end
  end
  else
      Result := True;  
end;

Всего записей: 5200 | Зарегистр. 15-02-2002 | Отправлено: 10:51 28-12-2006 | Исправлено: feandy, 11:05 28-12-2006
GRom V

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
У меня в ват-файле такая строка:  
regedit /s backup.reg
В этом случае если (backup.reg) отсуствует - выдается ошибка (WIN 2000)
Какой параметр вместо /s нужно поставить чтоб ошибка импорта не выскакивала внезависимости есть ли backup.reg или нет???

Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 11:04 28-12-2006
maxdddca123

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

Цитата:
если количество чекбоксов неизменно  

изменно Может быть любое

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 11:06 28-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru