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

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

Автор: maxdddca123
Дата сообщения: 19.12.2006 14:16
Genri

Цитата:
Попробуйте эту

Работает, тока размер у неё какой то огромный... Нельзя ли как нить уменьшить, а то я создал пустой инсталлятор с одним этим файлом получилось 400 кб... Многовато для пустого инсталлятора...

Автор: Genri
Дата сообщения: 19.12.2006 14:20
maxdddca123 -- потому и огромный, что отключил опцию <Build with runtime packages>.
Автор: maxdddca123
Дата сообщения: 19.12.2006 14:23
Genri
Мне GRom V присылал такого же размера как и у тебя, тока с ней всё работало, на ХР... Жаловался что на 2000 не работает правда.


Добавлено:
Кстати на счёт размера.... ПОсчитал, сам инсталлятор примерно 250 кб занимает... Не много ли ? Сколько интересно у других, может тока у меня так много ?
Автор: Genri
Дата сообщения: 19.12.2006 14:47
maxdddca123

Цитата:
сам инсталлятор примерно 250 кб занимает... Не много ли ?
-- это говорит человек, который искал способ добавить около 70 папок с 4000 файлами в них

По поводу размера - будет время, попробую разобраться. Пока так как есть. Или кто-то из програмеров подскажет.

Разобрался. После моих экспериментов в uses осталось лишнее включение FileCtrl.
Размер уменьшился до 65кб.
Надо подумать, что туда еще можно добавить, что может пригодиться в Inno Setup.
Автор: maxdddca123
Дата сообщения: 19.12.2006 15:13
Genri
Как доведёшь до ума и уменьшишь свою ISTask.dll выкладывай пожалуйста. А про размер я говорю вобщем, если например создаю инсталлятор с 1 килобайтным файлом, то что то очень много получается. А 70 папок с 4000 файлами в них у меня занимают 1.5 мега, а с инно 1.8. Мне конечно чем меньше тем лучше !

Добавлено:
Как мне сделать так, что бы на странице окончания установки добавить галочки типа Запустить установленное приложение ?
Автор: NightW0lf
Дата сообщения: 19.12.2006 15:39
maxdddca123

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


Код:
[Run]
Filename: "{app}\имя.exe"; Description: "Надпись перед флажком (Запустить ...)"; WorkingDir: "{app}"; Flags: nowait postinstall skipifsilent
Автор: maxdddca123
Дата сообщения: 19.12.2006 16:20
NightW0lf
Благодарю. Следующая задача. У меня есть ини файл с параметрами. Причём он уже существует на диске в той папке, куда я его устанавливаю, и содержится в инсталляторе (обновлённый). Мне нужно, что бы в зависимости от выбора компоненты перед установкой (с флагом exclusive) в этот ини файл прописывался определённой параметр (конкретно например секция [Edit], параметр AllowEdit=0 или 1 в зависимости от выбора пользователя). И что бы это происходило уже после распаковки файла, который в инсталляторе. Пожалуйста помогите.
Автор: NightW0lf
Дата сообщения: 19.12.2006 16:47
maxdddca123
Приведи пример кода, который содержит эти элементы (компоненты, *.ini (2шт), и какие варианты параметров должен выбирать пользователь).
Автор: JKSerGEAnt
Дата сообщения: 19.12.2006 17:20
Genri

Цитата:
но для этого надо знать пароль

который легко просматривается тем же распаковщиком... правда у меня ни разу ничего распаковать так и не получилось - wrong pass и все тут

Добавлено:
maxdddca123
есть же секция [ini] - пиши туда все параметры, ну и распредели их по соответствующим components
Автор: Genri
Дата сообщения: 19.12.2006 18:30
JKSerGEAnt

Цитата:
который легко просматривается тем же распаковщиком
-- ну все-таки не совсем так. Я далеко не програмер, но беглый взгляд по исходникам распаковщика, показал, что работа идет не с паролем, а с MD5 хешем пароля. Конечно, имея исходники, можно в функции TestPassword возвращать True без запроса ввода пароля. Но это мало что даст, так как этот же хеш используется при распаковке. И если хеш левый, то получим SourceIsCorrupted.
Все вышесказанное безусловно ИМХО.
Автор: maxdddca123
Дата сообщения: 19.12.2006 22:41
JKSerGEAnt
Спасибо, сделал при помощи компонент.
А как написать информацию в нижнем левом углу (как в инсталляторах с ZoneOgGames), и внизу на линии, которая отделяет основное окно от кнопок Назад Далее Отмена
Автор: feandy
Дата сообщения: 19.12.2006 23:01
maxdddca123

[Messages]
BeveledLabel=Твой тект
Автор: GRom V
Дата сообщения: 20.12.2006 02:20
Genri

Цитата:
Добавлено:
Попробуй извлеки что-нибудь из экзешника, скомпиленного из этого скрипта:

Плагином к Total commander - все извлекается элементарно!!!
Автор: maxdddca123
Дата сообщения: 20.12.2006 06:21
feandy
Сенкс, а на первой странице как добавить в ниж левом углу надпись ?
Автор: GRom V
Дата сообщения: 20.12.2006 06:33

Цитата:
Сенкс, а на первой странице как добавить в ниж левом углу надпись ?





Чтобы внизу слева отображался URL и кнопка, при нажатии которой отображалось нужное сообщение:

[Code]
procedure AboutButtonOnClick(Sender: TObject);
begin
MsgBox('Это демо версия программы.', mbInformation, mb_Ok);
end;

procedure URLLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://www.innosetup.com', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure InitializeWizard();
var
AboutButton, CancelButton: TButton;
URLLabel: TNewStaticText;
BackgroundBitmapImage: TBitmapImage;
BackgroundBitmapText: TNewStaticText;

begin
CancelButton := WizardForm.CancelButton;
AboutButton := TButton.Create(WizardForm);
AboutButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
AboutButton.Top := CancelButton.Top;
AboutButton.Width := CancelButton.Width;
AboutButton.Height := CancelButton.Height;
AboutButton.Caption := '&About...';
AboutButton.OnClick := @AboutButtonOnClick;
AboutButton.Parent := WizardForm;

URLLabel := TNewStaticText.Create(WizardForm);
URLLabel.Caption := 'www.innosetup.com';
URLLabel.Cursor := crHand;
URLLabel.OnClick := @URLLabelOnClick;
URLLabel.Parent := WizardForm;
{ Alter Font *after* setting Parent so the correct defaults are inherited first }
URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
URLLabel.Font.Color := clBlue;
URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;
URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(20);

BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Left := 50;
BackgroundBitmapImage.Top := 100;
BackgroundBitmapImage.AutoSize := True;
BackgroundBitmapImage.Bitmap := WizardForm.WizardBitmapImage.Bitmap;
BackgroundBitmapImage.Parent := MainForm;

BackgroundBitmapText := TNewStaticText.Create(MainForm);
BackgroundBitmapText.Left := BackgroundBitmapImage.Left;
BackgroundBitmapText.Top := BackgroundBitmapImage.Top + BackgroundBitmapImage.Height + ScaleY(8);
BackgroundBitmapText.Caption := 'TBitmapImage';
BackgroundBitmapText.Parent := MainForm;
end;


Добавлено:
[LangOptions]
TitleFontSize=100
TitleFontName=Monotype Corsiva
Кстате, не нашлось ли умника который мог бы вообще убрать этот TitleFont с фона???
Автор: maxdddca123
Дата сообщения: 20.12.2006 08:15
GRom V
Примного благодарен, а как сделать, что бы кнопка и ссылка отображались только на 1-й странице приветствия, а на остальных (после нажатия кнопки Далее), их не было ???

Добавлено:

Цитата:
этот TitleFont с фона

А что это такое ?


Добавлено:
И ещё как мне сделать так, что бы на странице, предшествующей процессу установки(она может быть вобщем то любая), кнопка Далее называлась Установить ?
Автор: NightW0lf
Дата сообщения: 20.12.2006 13:06
Срочно нужна ваша помощь!

Код:
[Registry]
Root: HKU; Subkey: "S-1-5-21-1659004503-2049760794-725345543-1003\Software\Blizzard Entertainment"; Flags: createvalueifdoesntexist uninsdeletekey
Автор: maxdddca123
Дата сообщения: 20.12.2006 13:56
И ещё 1 вопрос: мне нужно, что бы после установки выдавалось окошко с надписью типа вставьте дискету, и после этого с дискеты запускался ехешник, а после выполнения этого экзешника что бы выскакивало ещё 1 окошко с надписью типа Вставьте следующую дискету...
Автор: Denis_Kokyev
Дата сообщения: 20.12.2006 16:07
NightW0lf
Я недавно только рещил эту проблему с помощью тулзы psgetsid.exe, она
возвращает SID юзера (те самые цифирки, из за которых у вас выдается
ошибка - они всегда разные на разных компах). Реализовал как знал, и
как мне удобнее - через скрипт autoit. С помощью psgetsid.exe сохраняю
SID в текстовый файл, потом считываю, компаную как мне надо, вношу в
реестр. Может это Вам поможет.

Вот пример:

[more]FileChangeDir(@ProgramFilesDir & '\Dips')
RunWait ( @Comspec & ' /C GetSID.bat', '', @SW_HIDE )

Sleep (1000)

Global $defaultbrowser, $file, $string1, $string2, $string3, $string4, $string5, $string6, $sid, $line, $sum1, $sum2, $sum3, $sum4, $sum5

$file = FileOpen("sid.cfg", 0)
$string1="HKEY_USERS\"
$string2="\Software\Richter\Desktop Item Position Saver"

If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf

$line= FileReadLine($file, 1)

FileClose($file)

$sid= StringTrimRight($line, 2)

$sum1= $string1 & $sid & $string2

RegWrite($SUM1,'Корзина',"REG_BINARY","1700000002000000")




Файл GetSID.bat:

for /f "usebackq tokens=*" %%a in (`"psgetsid %username% | find "S-""`) do echo %%a > sid.cfg
[/more]

Почему сложно через Bat файл? Не получается в таком виде присвоить SID
сразу какой то переменной - возвращается 1. То ли первая цифра после S
то ли ещё что то. Я не знаю.
Автор: GRom V
Дата сообщения: 21.12.2006 05:42
Люди есть ли у кого нибудь прога определяющая серийник HDD - именно HDD а не тома???

Добавлено:
Genri

Насколько я понимаю в твоей DLL идет проверка серийника тома а не HDD.
Можно ли сделать проверку по серийнику HDD ?

Автор: maxdddca123
Дата сообщения: 21.12.2006 10:37
Есть ли ещё какой нить способ создания ярлыка на интеренет страницу кроме:
Сначала создается файл с именем, например, "website.url", и в него записывается:

[InternetShortcut]
URL=http://web.site.address/

В скрипт добавляется:

[Files]
Source: "website.url"; DestDir: "{app}"

[Icons]
Name: "{group}\Visit My Web Site"; Filename: "{app}\website.url"

Этот неудобный какой то.
Автор: Kindly
Дата сообщения: 21.12.2006 10:40
Genri

Цитата:
-- но для этого надо знать пароль

Это не проблема, как и говорил JKSerGEAnt, в крайнем случае в отладчике все видно. Как вариант может быть не использование setupldr, тогда распаковщиком пароль не подсмотришь, но в этом случае инсталлер получится многотомным и при должном желании пароль ве равно можно узнать.

JKSerGEAnt, распаковывать нужно как обычно, но добавлять параметр -f(pass.txt). В текстовый файл должен быть записан пароль, а сам файл ес-но лежать рядом с распаковщиком.

Меня как-то спрашивали раньше...Всем, кто хочет проигрывать mp3, ogg, etc. через инсталлятор, рекомендую скачать bass.dll c http://un4seen.com/files/bass23.zip и бета скрипт отсюда: http://webfile.ru/1247559

Все недостающие ньюансы в виде флагов или еще чего там влом было использовать, думайте дальше сами. Все будет подробно рассказано в новой версии руководства.
Автор: omals
Дата сообщения: 21.12.2006 11:39

Цитата:
Есть ли ещё какой нить способ создания ярлыка на интеренет страницу кроме:
Сначала создается файл с именем, например, "website.url", и в него записывается:

ну можна не таскать с собой такой файл
а создать в процесе инсталяции
примерно вот так

[INI]
Filename: "{app}\website.url"; Section: "InternetShortcut"; Key: "URL"; String: "http://web.site.address/"

[Icons]
Name: "{group}\{cm:ProgramOnTheWeb,My Website}"; Filename: "{app}\website.url"

[UninstallDelete]
Type: files; Name: "{app}\website.url"
Автор: Genri
Дата сообщения: 21.12.2006 15:16
GRom V -- можно проверять и серийный (заводской) номер самого HDD (не тома). Но знаю способ только для IDE. На SATA не работает. Устроит ?


Добавлено:
GRom V

Цитата:
Плагином к Total commander - все извлекается элементарно!!!

Ну что же, тогда совместим приятное с полезным
Здесь можно скачать архив, который содержит новую ISTask.dll с возможностью получения серийного номера и тома и физического диска. Только в архиве содержится не сама ISTask.dll, а инсталлятор, созданный Inno Setup, который распакует длл-ку в указанное место.
Но кроме длл-ки, инсталятор содержит еще и текстовый файл, но он распаковывается только в случае, если сетап запущен с определенным параметром. Насколько я понимаю, тебе этот параметр знать не надо. Ты и без него сможешь плагином к Total commander распаковать инсталлятор, извлечь файл и запостить сюда строку из него
А я после этого дам сюда требуемый параметр, чтобы все убедились что ты прав

Автор: NightW0lf
Дата сообщения: 21.12.2006 22:05
Denis_Kokyev
Спасибо за совет!
А можно как-нибудь через библиотеку "bass.dll" добавить в левый нижний угол инсталлятора 3 кнопки (play, pause, stop) т.е. чтобы воспроизводить, останавливать и ставить на паузу музыку в формате *.mp3?

P.S. у меня есть пример такой пример от Kindly, НО он только для библиотеки "bassmod.dll" (для трекерной музыки), а вот тоже самое очень хотется и для mp3.
Автор: GRom V
Дата сообщения: 22.12.2006 02:24
Genri
Дас скрипт без проблем, на текстовом виснет!
Сдаюсь ты прав выкладывай!!!
Автор: Genri
Дата сообщения: 22.12.2006 09:01
Чуть позже выложу. Но хотелось бы еще услышать комментарии Kindly и JKSerGEAnt. Я три дня убил на попытку распаковать закриптованный инсталлятор. Не получилось. Теперь хочу знать - у меня знаний не хватает, или мы с уважаемыми Kindly и JKSerGEAnt говорим о разных вещах.




Добавлено:
В конце концов, раз скрипт вытягивается, а в скрипте можно увидеть пароль, то проблем нет - распаковываем с помощью пароля и получаем этот текстовый файл. Но я все еще сомневаюсь, что пароль в инсталляционнике хранится в открытом виде. Это противоречит не только всем законам криптографии, но и просто здравому смыслу (какой смысл прятать информацию в сейф, а ключ от него, положить даже не под коврик, а просто повесить рядом с замком).
Автор: maxdddca123
Дата сообщения: 22.12.2006 10:13
Такой вопрос: инсталяшка создаёт файл деинсталлятора unist000.exe. Как мне изменить имя этого файла ? Например на uninstall.exe
Автор: Genri
Дата сообщения: 22.12.2006 10:27
Ну а для облегчения поставленной задачи, выкладываю исходный скрипт инсталляционника (только пароль пока скрыт звездочками):

Код:
[Setup]
AppName=ISTask
AppVerName=ISTask version 1.2
DefaultDirName={pf}\ISTask
Uninstallable=No
Encryption=Yes
Password=****

[Files]
Source: ISTask.dll; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"; Check: MyProgCheck

[Code]
function MyProgCheck: Boolean;
var
i: integer;
begin
Result:= False;
for i:= ParamCount downto 0 do
begin
if (GetMD5OfString(ParamStr(i)) = '99086a6f4dfb9ebc731bc9b0130525cc') then
Result:= True;
end;

end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;


procedure InitializeWizard();
begin
WizardForm.PasswordEdit.Visible:= False;
WizardForm.PasswordEdit.Text:= '****';
end;
Автор: maxdddca123
Дата сообщения: 22.12.2006 11:08
Такая ситуация: если путь не определился в реестрере, то при выбора каталога к пути добавляется \Новая папка .Как это убрать ?

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

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

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


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