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

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

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

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

   

Widok



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

Это мощное средство для создания установочных пакетов (дистрибутивов) программ. Поддерживается шифрование, установка пароля, различные задачи по завершении установки. Можно легко самим создавать диалоги, используя спец. дизайнер. И всё это абсолютно бесплатно! По сравнению с NullSoft (основной конкурент на бесплатной ниве) мне albel понравилась более интуитивно-понятная структура скрипта, простота в настройке.  
 
Последний релиз: 5.2.0 [19 сентября 2007 года]
История версий | скачать || скачать Preprocessor
 
Русификатор от NightW0lf для версии 5.2.0
Скачать | зеркало
 
Английская справка для Inno Setup Preprocessor (ISPP) 5.0.xx
Скачать
 
Русская справка к версиям 5.0.xx
Скачать | зеркало || cкачать в .chm формате
И снова BagIra на высоте
 
Руководство по расширенным возможностям Inno Setup 5 (не для чайников) от Kindly
[3 версия]  
Скачать | зеркало
[4 версия]  
Скачать | зеркало
[5 версия]  
Скачать | зеркало
[5.1 версия]  
Скачать | зеркало
 
Inno Setup Extensions Knowledge Base  
Скачать | зеркало
 
Corona Skin & Check System Requirements от Victor_Dobrov
Скачать | Скриншот | Справка
Кроме визуального стиля Corona(WMP9) в инсталлятор по выбору пользователя добавляется: Проверка системы/минимальных требований. Шифрование. Деинсталляция неучтённых файлов. Подсчёт времени установки. Расширенный прогрессбар. Экран скриншота/справки. Screensaver, BMP или AVI-файл в фоновом окне. Проигрывание музыки в фоне и многое другое...
 
Примечание: начиная с версии 5.1.10 в Inno Setup при использовании в инсталляторе фонового изображения формата BMP стало глючить возможность растягивания картинки на весь экран - чтобы это исправить добавьте этот код.
Если вы захотите использовать метод проверки внешнего файла через сумму MD5 (который описан в 5 версии руководства по программированию в Inno Setup) для запуска инсталлятора то вам понадобится калькулятор хеша MD5, калькулятор сумм MD5, SHA-256, CRC32. Если вы хотите узнать какие ключи в реестр вносит та или иная программа (или игра) то Вам понадобится RegShot.



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



 
Последний релиз: 5.2.0 [21 сентября 2007 года]
Скачать | зеркало  
(как сказано в описании изменений, добавлена поддержка новых директив 5.2.0)
 
Русификатор
Скачать | зеркало


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


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

Последний релиз: 1.0.2.11 [7 Августа 2007 года]
Скачать | обновление | Изменения
Примечание: обновление ставится только на Inno Setup Quickstartpack 5.1.13.
 
Примечание для всех участников
 
Длинные куски кода помещайте под тегом [more], дабы дать возможность знатокам Inno Setup прочитать сам вопрос, а не пролистывать бесконечно длинные листинги скриптов в посте.

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 18:01 23-04-2007 | Исправлено: Nekt, 00:33 25-09-2007
NightW0lf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZavadS
Попробуй вариант предложенный мною.

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 11:56 25-05-2007
ZavadS



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NightW0lf Но мне желательно не по классу окна определять запущенную программу.
 

Всего записей: 71 | Зарегистр. 04-01-2007 | Отправлено: 12:12 25-05-2007
Sero



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди!
как сделать WizardForm - "Always on top"

Всего записей: 309 | Зарегистр. 29-10-2006 | Отправлено: 13:12 25-05-2007
Genri

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

Цитата:
Запускаю удаление русификатора, выскакивает вот такая ошибка
...................
Runtime Error (at 27:66):  
 
Could not call proc.  

 
Потому что не найдена длл-ка при деинсталляции. Надо примерно так:

Код:
 
[Setup]
AppName=My Program
AppVerName=My Program ver.1.5
DefaultDirName={pf}\My Program
 
[Files]
Source: "ISTask.dll"; DestDir: "{app}"
 
 
[Code]
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload setuponly';
 
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload setuponly';
 
function KillTaskA(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
 
function RunTaskA(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
 
 
function InitializeSetup(): Boolean;
begin
If RunTask('calc.exe', false) then
begin
  if MsgBox('Программа установки русификатора обнаружила, что программа'#13'для которой установится русификатор запушена в данный момент. '#13#13' Закрыть программу?'#13#13 +
    '"Да" - закроет и не сохранит измененные настройки в программе.' #13#13 +
    '"Нет" - продолжит установку без закрытия. (Настоятельно рекомендуется нажать Да)', mbError, mb_YesNo) = idYes then
begin
  KillTask('calc.exe');
  Result := True;
  end else
  Exit;
  end;
  Result := True;
begin
If RunTask('notepad.exe', false) then
begin
  KillTask('notepad.exe');
  Result := True;
  end else
  Exit;
 end;
end;
 
function InitializeUninstall(): Boolean;
begin
If RunTaskA('calc.exe', false) then
begin
  if MsgBox('Программа установки русификатора обнаружила, что программа'#13'для которой установится русификатор запушена в данный момент. '#13#13' Закрыть программу?'#13#13 +
    '"Да" - закроет и не сохранит измененные настройки в программе.' #13#13 +
    '"Нет" - продолжит установку без закрытия. (Настоятельно рекомендуется нажать Да)', mbError, mb_YesNo) = idYes then
begin
  KillTaskA('calc.exe');
  Result := True;
  end else
  Exit;
  end;
  Result := True;
begin
If RunTaskA('notepad.exe', false) then
begin
  KillTaskA('notepad.exe');
  Result := True;
  end else
  Exit;
 end;
end;
 

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

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Genri
Подскажи плиз: у меня есть 2 ини файла: 1 на дискете и 1 на компе. Значит мне надо перенести параметр из файла на дискете (в файле на дискете только 1 секция [User_1]) в файл на компе, в котором может быть сколь угодно много однотипных секций с названиями Box_x, где х просто номер абонента.
Вот пример содержания файла на дискете
 
[User_1]
EMail=********************
FName=Test_7699
IMNS_1=7699
IMNSCount=1
INN=7699999999
Key=NiVbpm
KeyID=TEST2007
KPP=769901001
Login=7699999
Monitor=******************
Password=*************
SName=Test_7699
 
Вот пример файла на компе:
 
[Box_1]
SMTPPort=25
SMTPPassword=
SMTPLogin=
SMTPEnabled=1
SMTPAuth=0
SMTPAddr=хххххх
POP3Port=110
POP3Password=ххххххх
POP3Login=ххххххх
POP3Enabled=1
POP3Addr=хххххх
OperatorsCount=1
Operator_1_KeyID=ххххххххх
Operator_1_Addr=хххххххххххххххх
OnlineURL=
Name=Тестовый абонент
KeyID=TEST2007
INN=7699999999
IFNSCount=2
IFNS_2_KeyID=A6ZA7699
IFNS_2_Addr=хххххххххххххх
IFNS_1_KeyID=A6ZA7699
IFNS_1_Addr=ххххххххххх
EMail=7699999@nalog.kamisever.ru
Dialup=
CryptoType=0
BoxName=7699999
 
[Box_2]
SMTPPort=25
SMTPPassword=
SMTPLogin=
SMTPEnabled=1
SMTPAuth=0
SMTPAddr=ххххххххххх
POP3Port=110
POP3Password=хххххххххххххх
POP3Login=7699999
POP3Enabled=1
POP3Addr=****************
OperatorsCount=1
Operator_1_KeyID=MONITOR6
Operator_1_Addr=*********************
OnlineURL=
Name=Тестовый абонент
KeyID=TEST2007
INN=767777777
IFNSCount=2
IFNS_2_KeyID=A6ZA7699
IFNS_2_Addr=************
IFNS_1_KeyID=A6ZA7699
IFNS_1_Addr=***************
EMail=7699999@nalog.kamisever.ru
Dialup=
CryptoType=0
BoxName=7699998
 
Вопрос: как мне перенести из файла на дискете например параметр KeyID именно в ту секцию [Box_х] файла на компе, с которой совпадает параметрам BoxName на компе и Login на дискете.... Другими словами алгоритм таков: читается Login с файла на дискете, ищется в файле на компе в каждой секции параметр BoxName, и при совпадении Login и BoxName, KeyID с дискеты перетаскивается в KeyID на компе именно в ту секцию, где найдено совпадение !!!.
 
Вот скрипт, который необходимо доработать: (работает только для 1 секции)
procedure Boxname();
var
region:string;
begin
if FileExists('A:\Asetup.ini') then begin
region := GetIniString('User_1', 'KeyID', '', 'A:\Asetup.ini');
SetIniString('Box_1', 'KeyID', region, ExpandConstant('{app}\') + 'Referent_setup.ini');
end else MsgBox('Вставлена неверная дискета', mbError, MB_OK);
end;

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 13:28 25-05-2007 | Исправлено: maxdddca123, 15:22 25-05-2007
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZavadS -- В том варианте, который указан выше, после деинсталляции остается папка программы, так как из нее не удалена длл-ка. Можно, конечно, удаление папки прописать отдельно, но это достаточно опасно, так как теоретически, пользователь может проинсталить программу в папку Windows со всеми вытекающими
 
Лучше использовать такой вариант

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 13:37 25-05-2007
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Genri
Упрощу задачу, спрошу короче: я нашёл параметр, как мне определить, к какой секции он относится ? Или можеть есть какая нить ф-ция GetSectionName ???

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 15:39 25-05-2007 | Исправлено: maxdddca123, 15:40 25-05-2007
ZavadS



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

Цитата:
Можно, конечно, удаление папки прописать отдельно, но это достаточно опасно, так как теоретически, пользователь может проинсталить программу в папку Windows со всеми вытекающими  

Я ISTask.dll прописываю в папку  Install_Rus а в процедуре на удаление меняю  
 

Цитата:
  MoveDir(ExpandConstant('{app}\Install_Rus\Backup\'), ExpandConstant('{app}'));
  RemoveDir(ExpandConstant('{app}\Install_Rus\Backup\'));
  RemoveDir(ExpandConstant('{app}\Install_Rus\'));
end;
end;

на
Цитата:
  MoveDir(ExpandConstant('{app}\Install_Rus\Backup\'), ExpandConstant('{app}'));
  RemoveDir(ExpandConstant('{app}\Install_Rus\Backup\'));
  DelTree(ExpandConstant('{app}\Install_Rus'), True, True, True);
end;
end;

но все равно папка Install_Rus с ISTask.dll не удаляется.  
 
 
 

Всего записей: 71 | Зарегистр. 04-01-2007 | Отправлено: 16:05 25-05-2007
Sero



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

Цитата:
как сделать WizardForm - "Always on top"

Никто не знает?

Всего записей: 309 | Зарегистр. 29-10-2006 | Отправлено: 16:57 25-05-2007
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maxdddca123 -- к сожалению, аналога ReadSections в инно нет. Приходится прописывать самому.

Код:
 
var
  SectionNames: TArrayOfString;
  Asetup, Referent: string;
   
procedure GetSectionNames(const filename: string; var SectNames: TArrayOfString);
var
  i, SectionCount: integer;
  IniStrings: TArrayOfString;
begin
  LoadStringsFromFile(filename, IniStrings);
  for i:= 0 to GetArrayLength(IniStrings)-1 do
    begin
      if IniStrings[i][1] = '[' then
        begin
          SectionCount:= SectionCount + 1;
          SetArrayLength(SectNames, SectionCount);
          Delete(IniStrings[i], 1, 1);
          Delete(IniStrings[i], Length(IniStrings[i])-1, 2);
          SectNames[SectionCount - 1]:= IniStrings[i];
         end;
    end;
end;
 
procedure SetKeyID();
var
  login, KeyID: string;
  i: integer;
begin
  login:= GetIniString('User_1', 'Login', '', Asetup);
  KeyID:= GetIniString('User_1', 'KeyID', '', Asetup);
  GetSectionNames(Referent, SectionNames);
 
  for i:= 0 to GetArrayLength(SectionNames)-1 do
    begin
      if GetIniString(SectionNames[i], 'BoxName', '', Referent) = login then
        begin
          SetIniString(SectionNames[i], 'KeyID', KeyID, Referent);
        end;
    end;
end;
 
procedure Boxname();
begin
  Referent:= ExpandConstant('{app}\Referent_setup.ini');
  Asetup:= 'A:\Asetup.ini';
  GetSectionNames(Referent, SectionNames);
  SetKeyID();
end;  
Процедуру Boxname() вызывай когда тебе надо.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 19:16 25-05-2007
boss911



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

Цитата:
В данном случае, я думаю тебе, тебе без разницы - указывать билд или нет  

Ок, а если я укажу билд, тогда на что это повлияет и, чему помешает? Просто так толком и не вьехал, почему необязателен билд!

Всего записей: 3778 | Зарегистр. 29-01-2005 | Отправлено: 19:17 25-05-2007
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911
Цитата:
так толком и не вьехал, почему необязателен билд
-- если укажешь, инсталлятор будет проверять номер билда, не укажешь - не будет. Но так как сомневаюсь что тебе попадется Windows XP SP2 билда отличного от 2600 - билд можно не указывать.
 
Почитай хелп, поэкспериментируй.

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 20:58 25-05-2007
boss911



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

Цитата:
Почитай хелп, поэкспериментируй.

Так где эксперементировать то, у всех XP SP2.

Всего записей: 3778 | Зарегистр. 29-01-2005 | Отправлено: 23:19 25-05-2007
GloThin



Тобольский шашлычник
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
boss911
01:19 26-05-2007
Цитата:
Genri  
 
Цитата:Почитай хелп, поэкспериментируй.  
 
Так где экспериментировать то, у всех XP SP2.
 
 

мона  с ключами реестра эксперементировать...
Сохрани нормальное состояние для ХП СП2....
А потом подкоректируй...;)
Кличи реестра в энтом топике давно уж, и не раз проявилися...;)

----------
Все принципиальное-просто,а все простое-принципиально!
На каждого мудреца достаточно простоты!
Не изменишь существующее,не изменив себя!!

Всего записей: 709 | Зарегистр. 28-04-2004 | Отправлено: 23:49 25-05-2007 | Исправлено: GloThin, 23:52 25-05-2007
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sero
Цитата:
как сделать WizardForm - "Always on top"
-- а ты уверен, что этого хочешь ? Ну попробуй:

Код:
 
[Setup]
AppName=My Program
AppVerName=My Program ver.1.5
DefaultDirName={pf}\My Program
 
[Code]
Const
  HWND_TOP = 0;
  HWND_TOPMOST = -1;
  HWND_NOTOPMOST = -2;
  SWP_NOSIZE = $1;
  SWP_NOMOVE = $2;
  SWP_NOZORDER = $4;
  SWP_NOREDRAW = $8;
  SWP_NOACTIVATE = $10;
  SWP_FRAMECHANGED = $20;
  SWP_SHOWWINDOW = $40;
  SWP_HIDEWINDOW = $80;
  SWP_NOCOPYBITS = $100;
  SWP_NOOWNERZORDER = $200;
  SWP_DRAWFRAME = SWP_FRAMECHANGED;
  SWP_NOREPOSITION = SWP_NOOWNERZORDER;
 
function SetWindowPos(hWnd, hWndInsertAfter,
               X, Y, cx, cy, wFlags: Longint):Boolean;
 external 'SetWindowPos@user32.dll stdcall';
 
procedure InitializeWizard;
begin
  SetWindowPos(WizardForm.Handle, HWND_TOPMOST, 0, 0, 0, 0,
       SWP_NOSIZE or SWP_NOMOVE or SWP_SHOWWINDOW);
end;  


Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 02:41 26-05-2007
Genri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZavadS
Цитата:
Как лучше можно удалить этот файл?
-- А попробуй такой вариант

Всего записей: 872 | Зарегистр. 06-09-2003 | Отправлено: 10:17 26-05-2007
Sero



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Genri
Спасибо,работает,НО есть проблема:
Например если нажать на Отмена!
Можно исправить это?

Всего записей: 309 | Зарегистр. 29-10-2006 | Отправлено: 11:03 26-05-2007
NightW0lf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Такой вопрос - возможноли сделать так т.е. чтобы картинка была во всех окнах [и на всех страницах кроме привествия и завершения] инсталлятора, а то просто у меня пример как сделать только для страницы привествия и завершения.

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 11:45 26-05-2007
jedi81

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А возможно создать пакет инсталяции с кодом вопрос и ответ? То есть при инсталяции на один ПК программа выдает код вопрос, вводим код ответ. Но если запустить на другом ПК код вопрос будет другой и код ответ соотвественно тоже.

Всего записей: 186 | Зарегистр. 18-02-2006 | Отправлено: 13:15 26-05-2007
Yalos



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
соори если уже было...
ситуевина:
 
[Files]
Source: "D:\Docum\*"; DestDir: "{app}"; Flags: ignoreversion
 
в исходном каталоге (D:\Docum) лежит чуть меньше тысячи *.html , все они с атрибутами HIDEN и SYSTEM , и только один файл, главный без этих арибутов.  
(это сделано для того, чтобы пользователи пользовались икнкой на рабочем столе, а в случае, если забредут в папку где это все лежит, чтобы поднимали не что попало, а индекс).
при создании инсталлятора добавляется только главный файл, остальные игнорирутся...
создавать дополнительный файл, содержащий их не хочется, т.к. они регулярно меняются. как быть?

Всего записей: 5 | Зарегистр. 25-05-2007 | Отправлено: 16:03 26-05-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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru