Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: Genri
Дата сообщения: 24.01.2007 16:23
Zabo4ka
Цитата:
запускаю его из секции Run да и всё.
А хотелось-бы чтобы он сам в процессе установке запускался,распаковывался куда надо и удалялся.

Отработка секции Run - это тоже процесс инсталляции. Укажи более точно:
1. в каком порядке что должно происходить (сначала копирование всех файлов, потом распаковка архива, или наоборот, или распаковка сразу при запуске инсталлятора, или после выбора директории установки, или после выбора компонентов и т.д.) Не видя скрипта я не могу знать, привязана ли установка архива к компонентам, жестко ли задана директория установки и т.д.
2. По поводу "распаковать куда надо" - а куда надо? Туда где программа? Значит копировать его туда не обязательно? Главное чтоб он распаковался в ту папку. Так?
3. По поводу "и удалялся" - если по п.2. его не копировать в папку с программой, а копировать в tmp, то он удалится при выходе из сетапа. В противном случае, надо предусматривать процедуру удаления.
4. По поводу "запускаю и все" - запускаешь с параметрами или без? Какие-нибудь флаги выставлены (nowait, postinstall и т.д.)?
5. Формат архива? RAR, ZIP? От этого зависит, какие параметры он поддерживает.


Добавлено:
Xom9I4oK -- смотри в хелпе описание процедуры Sleep.
Но пожелание действительно странное

Добавлено:
а можешь использовать следующий прием:
Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
#define MaxTarget 300
#define i

#sub AddFile
Source: "MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
#endsub

#for {i = 0; i < MaxTarget; i++} AddFile
Автор: Zabo4ka
Дата сообщения: 24.01.2007 17:45
Genri
Genri
Директория установки программы по выбору пользователя.
К компонентам распаковка не привязана, всё идёт одним куском (т.е. без разделения на компоненты)
Архив может распаковываться в любое время после нажатия на кнопку "установить", т.е. когда устанавливаются все прочие файлы программы, без разницы когда конкретно.
Содержимое архива должно валиться в директорию устанавливаемой программы.Копировать его туда разумеется, НЕОБЯЗАТЕЛЬНО.Можно и в tmp, я думал об этом.
Запускаю c флагами nowait skipifsilent, без postinstall архив запускается когда можно, но появляется окно типа "самораспаковывающийся архив..." чего хотелось-бы избежать (использовать RAR?)
Формат архива SFX, но RAR тож пойдёт.

Скрипт
[Files]
Source: "C:\prog\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\test.exe"; DestDir: "{app}"; Flags: nocompression

[Run]
Filename: "{app}\test.exe" ; Flags: nowait skipifsilent
Автор: Genri
Дата сообщения: 24.01.2007 18:07
Zabo4ka -- ок. теперь ясно.

hint! SFX (SelF-eXtracting) архивы могут изготавливать различные архиваторы (например WinZip или WinRar). Соответственно формат архива тоже разный (например zip или rar)
Автор: Zabo4ka
Дата сообщения: 24.01.2007 18:34
Genri

Архив создан RARом.
Автор: Genri
Дата сообщения: 24.01.2007 18:51
Возможно пойдет так:

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "archive.exe"; DestDir: "{tmp}"; Flags: ignoreversion

[Run]
Filename: "{tmp}\archive.exe"; Parameters: "-y -o""{app}"""; Flags: waituntilterminated


Добавлено:
виноват. для rar будет так:
[Run]
Filename: "{tmp}\archive.exe"; Parameters: " -s -d""{app}"""; Flags: waituntilterminated
Автор: Zabo4ka
Дата сообщения: 24.01.2007 19:57
Genri
Если так,
Цитата:
[Run]
Filename: "{tmp}\archive.exe"; Parameters: "-y -o""{app}"""; Flags: waituntiltermina

то после инсталла открывается диалоговое окно SFXа,
а если так
Цитата:
[Run]
Filename: "{tmp}\archive.exe"; Parameters: " -s -d""{app}"""; Flags: waituntilterminated

то файлы из архива не попадают в папку программы ((
Автор: Xom9I4oK
Дата сообщения: 24.01.2007 20:15
Genri

Цитата:
Чтобы окончательно закрыть вопрос по поводу патченных исходников, выкладываю полный комплект (Chanka можешь не беспокоится - твоего там ничего нет).
Скачать можно здесь(3,5 Мб). В архиве исходники с изменениями, откомпиленные файлы и пример по использованию (JPG_Progress.iss). Те, кто не дружит с делфями, могут взять два файла из папки EXE и скопировать их в папку куда установлена Inno Setup.

Добавлены две процедуры:

procedure ProgressChanged(percent: Integer); -- вызывается каждый раз, когда апдейтится прогресс-бар. percent содержит текущее значение прогресс-бара в процентах

MainForm.SetBackImage(str: String); -- позволяет задать в качестве фона *.jpg. Если str содержит пустое значение, картинка убирается.

Спасибо, но после этого у меня перестает работать препроцессинг ((.

Цитата:
а можешь использовать следующий прием:
...
[Files]
#define MaxTarget 300
#define i
#sub AddFile
Source: "MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
#endsub
#for {i = 0; i < MaxTarget; i++} AddFile

Автор: Genri
Дата сообщения: 25.01.2007 00:09
Zabo4ka -- сейчас проверил. Параметр -d поддерживает WinRAR 3.70 beta 2, но похоже не поддерживает WinRAR 3.62. Варианты решения:
1. использовать вер.3.70
2. использовать другой архиватор (напр. 7-Zip)
3. найти поддерживаемые параметры в той версии, которую используешь. Я с WinRAR не работаю - подсказать не могу.

Еще раз:
Filename: "{tmp}\archive.exe"; Parameters: " -s -d""{app}"""; Flags: waituntilterminated
...нормально работает с WinRAR 3.70 beta 2

Xom9I4oK
Цитата:
после этого у меня перестает работать препроцессинг
-- после чего конкретно? После замены файлов? После использования в коде новых процедур? После пересборки исходников? И как это проявляется? И какая версия препроцессора у тебя стоит?
Автор: Zabo4ka
Дата сообщения: 25.01.2007 07:20
Genri
Действительно, обновился до 3.70 beta и заработало.Спасибо!
Автор: Xom9I4oK
Дата сообщения: 25.01.2007 11:09
Genri

Цитата:
-- после чего конкретно? После замены файлов? После использования в коде новых процедур? После пересборки исходников? И как это проявляется? И какая версия препроцессора у тебя стоит?

Да после замены 2-х скомпиленных тобой файлов: одной длл-ки и файла setup.32. Да после искользования новых процедур. Версия препроцессора та что идет с последней версией Quick Starter Pack. Вот скрин с ошибкой http://img208.imageshack.us/img208/5373/inn07ww.jpg.
Автор: Genri
Дата сообщения: 25.01.2007 15:49
Xom9I4oK -- ты прав. в исходниках, которые я пересобирал, не все файлы последней версии. могу посоветовать не использовать пересобранные файлы, либо не использовать препроцессор.
Автор: Xom9I4oK
Дата сообщения: 25.01.2007 17:59
Genri

Цитата:
Xom9I4oK -- ты прав. в исходниках, которые я пересобирал, не все файлы последней версии. могу посоветовать не использовать пересобранные файлы, либо не использовать препроцессор.

Это понятно - я остановился на 2-м варианте тк препроцессор мне понадобился только для того что я просил на прошлой странице )). А профиксить сможешь?
Автор: Genri
Дата сообщения: 25.01.2007 18:58
Xom9I4oK
Цитата:
профиксить сможешь?
-- нет. я не люблю своими кривыми руками править стройный код разработчика Это был разовый случай для разрешения конфликтной ситуации.
Автор: CapsLosk
Дата сообщения: 26.01.2007 05:42
Genri

Здравствуй, и снова нужна помощь - глянь в личку! Пожалуйсто!


Добавлено:
Кто нибудь знает такой глюк: при переносе файла.reg в Istool, в разделе реестр, структура перенесенного файла.reg нарушается! Можно как нить бороться с этим???

Добавлено:
Или подскажите - Как можно файл.reg перенести в Inno Setup (Критично если файл большой.)
Автор: Sampron
Дата сообщения: 26.01.2007 10:15
Sampron


Добавлено:
Sampron
Автор: AtotIK
Дата сообщения: 26.01.2007 11:53
2 CapsLosk

Не понял вопроса...Тебе, что-ли надо добавить из этого файла информацию в реестр при установке или просто включить его в инсталл?
Автор: Xom9I4oK
Дата сообщения: 26.01.2007 12:20
Кстати, а как можно забэкапить ключ в реестре, чтобы после удаления программы он восстанавливался автоматически.
Автор: CapsLosk
Дата сообщения: 27.01.2007 04:45
AtotIK

Цитата:
Не понял вопроса...Тебе, что-ли надо добавить из этого файла информацию в реестр при установке или просто включить его в инсталл?


У меня есть файл.reg и мне нужно добавить всю эту информацию в реестр, но он очень большой!
При переносе его в ISTool его структура несколько деформируется. короче если я запускаю его руками - все работает, переношу в Istool - нет!
Автор: maxdddca123
Дата сообщения: 27.01.2007 09:31
Здрасьте, такой вопрос: мне нужно при инсталяции прописывать в ини файл настройки. Проблема в том, что структура ини файла должна быть такова, что постоянно повторяется одна одна и та же секция. Пример:

[Firm]
INN=7604033745
IMNSCode=7601
Name=ООО Макс Булкин
FullName=ООО000000000 Макс Булкин
AbonentCode=7601555

[Firm]
INN=7604033746
IMNSCode=7602
Name=ООО Макс Булкин 2
FullName=ООО Макс Булкин
AbonentCode=7601556

Вот я и не знаю, как сделать в инно так, что бы прописывалось как мне надо. Если делать штатными средствами, то после инсталяции получается тока 1 секция с 1 набором параметров, а не так как мне надо !
Автор: Jeff_Trust
Дата сообщения: 27.01.2007 11:14
Не подскажите кто-то как сделать чтбы картинка та что сбоку ( WizModernImage ) была на все окно инсталятора. т.е. чтобы не было белого фона на котором надписи, а вместо него была картинка. Можно сказать чтоб вместо формы была моя картинка под размер всей формы. Скрин вот здесь

http://taverna.ifolder.ru/975021
Автор: DroN_S
Дата сообщения: 27.01.2007 11:28
maxdddca123
INIFiles тебе здесь и не поможет, потому как по правилам программирования и сруктуре INI файла, то секции не должы повторятся... в принципе INI файл это тотже самый простой текстовой файл, так что можно в принципе создать простой текстовой файл, в него записать информацию через witeln и сохранить как INIFiles (*.ini)
Автор: Sero
Дата сообщения: 27.01.2007 17:08
Jeff_Trust

Цитата:
Не подскажите кто-то как сделать чтбы картинка та что сбоку ( WizModernImage ) была на все окно инсталятора. т.е. чтобы не было белого фона на котором надписи, а вместо него была картинка. Можно сказать чтоб вместо формы была моя картинка под размер всей формы. Скрин вот здесь



Код:
[Code]
procedure InitializeWizard();
begin
WizardForm.WelcomeLabel1.Visible:=False;
WizardForm.WelcomeLabel2.Visible:=False;
WizardForm.WizardBitmapImage.Width:=WizardForm.ClientWidth;
WizardForm.WizardBitmapImage.Height:=WizardForm.ClientHeight;
WizardForm.WizardBitmapImage2.Width:=WizardForm.ClientWidth;
//и по желанию
//WizardForm.OuterNotebook.Height:=WizardForm.ClientHeight;
//WizardForm.WizardBitmapImage2.Width:=WizardForm.ClientWidth;
//WizardForm.NextButton.BringToFront;
//WizardForm.CancelButton.BringToFront;
//WizardForm.BackButton.BringToFront;
end;
Автор: Sampron
Дата сообщения: 27.01.2007 18:20
Сделал 5 скинов в стиле installshield через секцию Code забираем здесь:
http://data.cod.ru/456228298
Автор: Jeff_Trust
Дата сообщения: 27.01.2007 22:42
Sero

Ух ты спасибо большое за помощь, я вообще Паскаль учил немного но мои познания недотягивали до того чтобы сделать такой инсталл. А нельзя ли сделать чтобы рисунок отображался и дальше по ходу инсталлятора? Там где идет выбор пути, создание ярлыков и т.д. и там где ход установки?

Также было бы просто супер если можно было бы сделать вот так

http://taverna.ifolder.ru/980543

PS Не подскажешь где можно взять описание всех этих констант и Паскалевских функций которые используются в Inno Setup?
Автор: Sero
Дата сообщения: 28.01.2007 01:04
Jeff_Trust

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

Все что я могу, так:

Код:
[Setup]
WizardImageFile=my_image.bmp
WizardSmallImageFile=my_image2.bmp

[Code]
procedure InitializeWizard();
begin
WizardForm.InnerPage.Visible:=False;
WizardForm.WelcomeLabel1.Visible:=False;
WizardForm.WelcomeLabel2.Visible:=False;
WizardForm.WizardSmallBitmapImage.left:=0;
WizardForm.WizardSmallBitmapImage.Width:=WizardForm.Width;
WizardForm.WizardSmallBitmapImage.Height:=WizardForm.Height;
WizardForm.PageNameLabel.Visible:=False;
WizardForm.PageDescriptionLabel.Visible:=False;
WizardForm.WizardBitmapImage.Width:=WizardForm.ClientWidth;
WizardForm.WizardBitmapImage.Height:=WizardForm.ClientHeight;
WizardForm.WizardBitmapImage2.Width:=WizardForm.ClientWidth;
WizardForm.OuterNotebook.Height:=WizardForm.ClientHeight;
WizardForm.InnerNotebook.Height:=WizardForm.ClientHeight;
WizardForm.WizardBitmapImage2.Width:=WizardForm.ClientWidth;
WizardForm.NextButton.BringToFront;
WizardForm.CancelButton.BringToFront;
WizardForm.BackButton.BringToFront;
end;
Автор: Dust112
Дата сообщения: 28.01.2007 16:17
Прошу помощи. Нужно переписать следующий восстановленный [more=код.][TYPES]
Type [0]: Pointer
Type [1]: U32
Type [2]: Variant
Type [3]: Unknown 14
Type [4]: Unknown 24
Type [5]: Extended
Type [6]: Double
Type [7]: Single
Type [8]: String
Type [9]: U32
Type [10]: S32
Type [11]: S16
Type [12]: U16
Type [13]: S8
Type [14]: Char
Type [15]: U32
Type [16]: U8 Export: BOOLEAN
Type [17]: U8
Type [18]: U8
[VARS]
[PROCS]
Proc [0] Export: !MAIN -1
[0] RET
Proc [1] Export: ISX64 16
[0] PUSHTYPE 18(U8) // 1
[5] PUSHVAR Base[1] // 2
[11] CALL 2
[16] POP // 1
[17] COMPARE into Base[-1]: Base[1] = [2]
[35] POP // 0
[36] RET
Proc [2]: External Decl: \01 PROCESSORARCHITECTURE
Proc [3] Export: ISIA64 16
[0] PUSHTYPE 18(U8) // 1
[5] PUSHVAR Base[1] // 2
[11] CALL 2
[16] POP // 1
[17] COMPARE into Base[-1]: Base[1] = [3]
[35] POP // 0
[36] RET
Proc [4] Export: ISWIN2K 16
[0] PUSHTYPE 9(U32) // 1
[5] PUSHVAR Base[1] // 2
[11] CALL 5
[16] POP // 1
[17] CALC Base[1] SHR [24]
[33] COMPARE into Base[-1]: Base[1] >= [5]
[54] POP // 0
[55] RET
Proc [5]: External Decl: \01 GETWINDOWSVERSION
Proc [6] Export: ISOTHERARCH 16
[0] PUSHVAR Base[-1] // 1
[6] CALL 1
[11] POP // 0
[12] BNOT Base[-1]
[18] COND_NOT_GOTO currpos + 36 Base[-1] [64]
[28] PUSHTYPE 16(U8) // 1
[33] PUSHVAR Base[1] // 2
[39] CALL 3
[44] POP // 1
[45] BNOT Base[1]
[51] CALC Base[-1] AND Base[1]
[63] POP // 0
[64] COND_NOT_GOTO currpos + 30 Base[-1] [104]
[74] PUSHTYPE 16(U8) // 1
[79] PUSHVAR Base[1] // 2
[85] CALL 4
[90] POP // 1
[91] CALC Base[-1] AND Base[1]
[103] POP // 0
[104] RET
Proc [7] Export: NOTX64 16
[0] PUSHVAR Base[-1] // 1
[6] CALL 1
[11] POP // 0
[12] BNOT Base[-1]
[18] COND_NOT_GOTO currpos + 36 Base[-1] [64]
[28] PUSHTYPE 16(U8) // 1
[33] PUSHVAR Base[1] // 2
[39] CALL 3
[44] POP // 1
[45] BNOT Base[1]
[51] CALC Base[-1] AND Base[1]
[63] POP // 0
[64] RET
Proc [8]: External Decl: \01\00 DIREXISTS
[/more] в более компактный код. Я сам в паскале не силён. Зарание благодарен.
Автор: DroN_S
Дата сообщения: 28.01.2007 17:33
Dust112
слушай, а ты уверен что это на Pascal написано?
либо я язык забыл либо я ничего не понимаю...
Автор: Ipse San
Дата сообщения: 28.01.2007 18:16
DroN_S
Это RemObjects Pascal Script by Carlo Kok
http://www.remobjects.com/page.asp?id={9A30A672-62C8-4131-BA89-EEBBE7E302E6}
Автор: Dust112
Дата сообщения: 28.01.2007 18:17
DroN_S
это получилось после использования ROPS 3.0.3.53 disassembler
Автор: DroN_S
Дата сообщения: 28.01.2007 21:18

Цитата:
это получилось после использования ROPS 3.0.3.53 disassembler

и чё ты хочешь чтобы из этого мусора сделали что то похожее на работающий код...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.