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

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

Автор: CapsLosk
Дата сообщения: 29.01.2007 08:29
Кто нить знает как перенести большой reg-файл в Inno setup?
Автор: DroN_S
Дата сообщения: 29.01.2007 09:29
CapsLosk
а тебе его бязательно переносить?
нельзя разве выполнить WinExec ПУТЬ_К_ФАЙЛУ -s ???
все данные из reg-файла "тихо" занесутся в реест...
Автор: Chuvakstepan
Дата сообщения: 29.01.2007 16:43
У меня есть код на котором в процессе инсталляции играет музыка и есть кнопки для управлении ей.
Вопрос: Как эти кнопки украсить картинкой (bmp, ico, любой...)
Автор: Sero
Дата сообщения: 29.01.2007 18:27
У меня вопрос:
Серийный номер который был введен - как сделать чтобы он был записан в реестре.
Например так: 'HKEY_LOCAL_MACHINE\SOFTWARE\Nullsoft\Winamp' 'Serial' '{Серийный номер}'
Автор: Sampron
Дата сообщения: 29.01.2007 20:21
Chuvakstepan

Цитата:
У меня есть код на котором в процессе инсталляции играет музыка и есть кнопки для управлении ей.
Вопрос: Как эти кнопки украсить картинкой (bmp, ico, любой...)

Навряд ли это можно сделать в инно.
Автор: Chanka
Дата сообщения: 29.01.2007 20:53
Chuvakstepan,

Цитата:
У меня есть код на котором в процессе инсталляции играет музыка и есть кнопки для управлении ей.

Можешь код дать?


Автор: Sampron
Дата сообщения: 29.01.2007 21:22
Chanka

Цитата:
Можешь код дать?

http://forum.ru-board.com/topic.cgi?forum=5&topic=4801&start=1440#15
Автор: DroN_S
Дата сообщения: 29.01.2007 21:36
Sero
можешь в Delphi написать маленькую dll'ку а в инно её использовать...
дело пяти минут...
Автор: Sero
Дата сообщения: 29.01.2007 22:13
DroN_S

Цитата:
можешь в Delphi написать маленькую dll'ку а в инно её использовать...


Ты меня не понял, я хочу чтобы инстталятор писал в реестре серийный номер
который был мною введен на странице UserInfoPage
Автор: CapsLosk
Дата сообщения: 30.01.2007 01:45
DroN_S

Цитата:
а тебе его бязательно переносить?
нельзя разве выполнить WinExec ПУТЬ_К_ФАЙЛУ -s ???
все данные из reg-файла "тихо" занесутся в реест...

Просто запустить reg файл не получится, т.к в нем четко описаны пути (например нахождение самой программы) - но ты же не знаешь в какую папку пользователь установит программу!!! а такой вариант как {app} в рег-файле не вкатит!
Автор: Chuvakstepan
Дата сообщения: 30.01.2007 04:39
Народ, постоянные ссылки (пока жив мой сайт) на руководства, справки и т.д здесь



Цитата:
Навряд ли это можно сделать в инно.


И чё никакой бэкгроунд нельзя поставить?
Это же Паскаль, искал на сайтах по Паскалю - итог "0"
Я в Visual Basic работаю - там есть такая функция на button (picture называется)


Цитата:
Кто нить знает как перенести большой reg-файл в Inno setup?


У меня с Istool проблем не было, как могла нарушится структура reg файла? Незнаю. Но если в этом файле написаны пути (типа "С:\Програм Филез\Винамп\") то их переписывать все прийдется на {app}


Добавлено:

Цитата:
Ты меня не понял, я хочу чтобы инстталятор писал в реестре серийный номер
который был мною введен на странице UserInfoPage


Идея хорошая - безусловно.В справке есть функции реестра по Паскалю RegGetSubkeyNames RegGetValueNames RegWriteStringValue RegWriteMultiStringValue. Но как их реализовывать - не понимаю, может Гуру подскажут?
Автор: DroN_S
Дата сообщения: 30.01.2007 07:39

Цитата:
В справке есть функции реестра по Паскалю RegGetSubkeyNames RegGetValueNames RegWriteStringValue RegWriteMultiStringValue. Но как их реализовывать - не понимаю

это API-функции по работе с реестром...
объявляются так

Код:
function RegWriteStringValue(const RootKey: Integer; const SubKeyName, ValueName, Data: String): Boolean;
function RegGetSubkeyNames(const RootKey: Integer; const SubKeyName: String; var Names: TArrayOfString): Boolean;
function RegGetValueNames(const RootKey: Integer; const SubKeyName: String; var Names: TArrayOfString): Boolean;
function RegWriteMultiStringValue(const RootKey: Integer; const SubKeyName, ValueName, Data: String): Boolean;
Автор: CapsLosk
Дата сообщения: 30.01.2007 08:38
Chuvakstepan

Цитата:
У меня с Istool проблем не было, как могла нарушится структура reg файла? Незнаю. Но если в этом файле написаны пути (типа "С:\Програм Филез\Винамп\") то их переписывать все прийдется на {app}


Поповоду {app} это и так ясно, что касается глюков - пример:
запуская просто рег файл - все зашибись, а через ISTool нихрена. Позже сравнивая файлы после установки инсталлятора - разница очевидна! в основном это лишние \\ или ///


Добавлено:
Кто нить подскажите как сделать такую вещь:
Есть две папки с различним дистрибутивом - как сделать в одном инсталляторе их установку по выбору??? (т.е если выбрать первый, то установиться первый, если второй - то второй если оба - то оба)? Если не затруднит покажите на примере!?
Автор: Jeff_Trust
Дата сообщения: 30.01.2007 21:56
Sero

Спасибо тебе за помощь, все в принципе норм, но WizSmallImage не отображается корректно, помоги пожалуйста это исправить. Вот как получается смотри здесь

http://kolmax.ifolder.ru/1004692

PS Не подскажешь где потянуть список всех значений WizardForm, как например вот это

WizardForm.WelcomeLabel1.Visible:=False;
Автор: Sampron
Дата сообщения: 30.01.2007 22:14
Jeff_Trust

Цитата:
Спасибо тебе за помощь, все в принципе норм, но WizSmallImage не отображается корректно, помоги пожалуйста это исправить.

[Code]
procedure InitializeWizard();
begin
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Top:=0;
WizardForm.WizardSmallBitmapImage.Width:=497;
WizardForm.WizardSmallBitmapImage.Height:=58;
WizardForm.PageDescriptionLabel.Visible:=False;
WizardForm.PageNameLabel.Visible:=False;
end;
использован рисунок размером 497х58
Автор: CapsLosk
Дата сообщения: 31.01.2007 01:16
Люди....
Кто нить подскажите как сделать такую вещь:
Есть две папки с различним дистрибутивом - как сделать в одном инсталляторе их установку по выбору??? (т.е если выбрать первый, то установиться первый, если второй - то второй если оба - то оба)? Если не затруднит покажите на примере!?
Автор: YurikWiz
Дата сообщения: 31.01.2007 04:16
CapsLosk

Цитата:
Секция [Types]
Эта секция необязательна. Она определяет типы установки, которые инсталятор покажет на странице Выбор компонентов.При компиляции, если вы укажете компоненты в секции [Components], но не укажите к каким типам установки они относятся, типы будут созданы автоматически (по умолчанию).
Секция [Components]
Эта секция не обязятельна. Она определяет компоненты, которые инсталятор отобразит на странице Выбор компонентов для выборочной установки
Параметры секции [Components]
Описание:
Список имен компонентов, разделенных пробелами, в котором компилятору указывается, к какому из компонентов относится параметр. Параметр будет запущен, если пользователь выберет компонент, в который он включен (например файл инсталируется).
Параметр без Components будет запущен всегда, не учитывая случаев с параметром Tasks (см. ниже)
Components игнорируется, если секция [Components] пустая.
Например:
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; Components: main
Source: "MYPROG.HLP"; DestDir: "{app}"; Components: help
Source: "README.TXT"; DestDir: "{app}"

Я так делал инсталляторы игр с вариантом выбора Русская/Английская версия.
Автор: Chuvakstepan
Дата сообщения: 31.01.2007 06:27
Sero

Долго думал над твоей задачкой и вот оно - решение записи в реестр серийного номера, введенного в UserInfoSerial:
(должно быть userinfopage=true

Цитата:

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall
then
begin
RegWriteStringValue( HKLM, 'SOFTWARE\Nullsoft\Winamp', 'Serial', ExpandConstant('{userinfoserial}'));
end;
end;




CapsLock

Попробуй так:

Цитата:

[Components]
Name: module1; Description: Модуль BAS; Types: full
Name: module2; Description: Модуль isxbb; Types: full
[Files]
Source: C:\Program Files\Inno Setup\bass.dll; DestDir: {app}; Flags: ignoreversion; Components: module1
Source: C:\Program Files\Inno Setup\isxbb.dll; DestDir: {app}; Flags: ignoreversion; Components: module2
[Types]
Name: full; Description: Все компоненты; Flags: iscustom



И еще моя проблема:

Есть код на восстановление файлов через Бэкап

Я думаю он не работает из-за последовательности, т.к. он сначала копирует обновленный файл в папку с игрой а потом этот же файл перемещает в папку Бэкап и при удалении файл остаётся таким-же:

Цитата:


#include "SHFileOperation.iss"

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
Compression=lzma
SolidCompression=yes

[Tasks]
Name: src; Description: "Создать резервную копию оригинальных файлов"



[Files]
Source: "C:\Игры\SCell4\Media\SCDALauncher.exe"; DestDir: {app}; BeforeInstall: CreateBackup; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion nocompression

[Code]
function MoveFile(const srcFile, destFile: PChar): Integer;
external 'MoveFileA@kernel32.dll stdcall';

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
MoveDir(ExpandConstant('{app}\Install_Rus\Backup\'), ExpandConstant('{app}'));
RemoveDir(ExpandConstant('{app}\Install_Rus\Backup\'));
RemoveDir(ExpandConstant('{app}\Install_Rus\'));
end;
end;



procedure CreateBackup;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
if IsTaskSelected('src') then
begin
basePath := ExpandConstant('{app}');
srcFile := ExpandConstant(CurrentFileName);
shortPath := srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile := ExpandConstant('{app}\Install_Rus\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;
end;





Автор: Sero
Дата сообщения: 31.01.2007 13:29
Chuvakstepan

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

Спасибо тебе, помог!

Добавлено:
Jeff_Trust

Цитата:
Спасибо тебе за помощь, все в принципе норм, но WizSmallImage не отображается корректно, помоги пожалуйста это исправить. Вот как получается смотри здесь


Нужно удалить эту строку:
WizardForm.WizardSmallBitmapImage.Height:=WizardForm.Height;

и добавь эти
WizardForm.FinishedHeadingLabel.Visible:=False;
WizardForm.FinishedLabel.Visible:=False;


Цитата:
Не подскажешь где потянуть список всех значений WizardForm

Открой Setup.e32 в Resource Hacker, в разделе RCData\TWIZARDFORM, там разберись.
Автор: CapsLosk
Дата сообщения: 01.02.2007 01:09
Chuvakstepan

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


Сценькью!
Автор: maxdddca123
Дата сообщения: 01.02.2007 14:13
Мне нужно написать функцию, которая проверят, выбран ли
[Tasks]
Name: A; Description: Настроить 1С; Flags: unchecked
Как это сделать ?
Автор: Chuvakstepan
Дата сообщения: 02.02.2007 07:32

Цитата:
Мне нужно написать функцию, которая проверят, выбран ли
[Tasks]


Непонятно, надо сделать так чтобы он был выбран? Тогда просто убери unchecked
Автор: maxdddca123
Дата сообщения: 02.02.2007 08:36
Chuvakstepan
Нет, надо сделать проверку, поставил ли пользователь галку при установке программы.
Автор: Genri
Дата сообщения: 02.02.2007 10:35
function IsTaskSelected(const Tasks: String): Boolean;

Description:
Returns True if the specified task is selected. Multiple tasks may be specified in the same manner as in a Tasks parameter.

Example:
begin
if IsTaskSelected('desktopicon') then
// the 'desktopicon' task is selected
end;

RTFM!
Автор: maxdddca123
Дата сообщения: 02.02.2007 13:35
Genri
А не могли бы Вы посмотреть личку, я Вам там письмо написал с просьбой о помощи ! Пожалуйста!
Автор: DenVl
Дата сообщения: 02.02.2007 15:17
Здраствуйте господа знатоки
Я в этом топике первый раз...поэтому не знаю, мож Вы уже где и выкладывали то, о чем я сейчас Вас попрошу...Так как я тока пару дней пользуюсь этой прогой (юзаю Inno Setup 5.1.9) и в Паскале не разбираюсь, а хочется то написать красивый код, а использовать Мастера...но с ним красивого не создашь...
Но вот собственно то, о чем я Вас хотел поросить: у меня на винте установлена одна игра, как мне создать инсталлятор к ней, чтоб мона ее было потом записать на диск и после запуска собственно инсталлятора происходил нормальный процесс ее установки..Заранее спасибо
З.Ы. А русик к Inno Setup 5.1.9 есть?
Автор: DroN_S
Дата сообщения: 02.02.2007 18:20
DenVl
какие настроки во время установки требует игра: может создать какие то файлы конфигураций, или сделат какие то записи в реест или ещё что то? или надо просто собрать дистрибутив, который бы просто устанавливал игру?
русификатор есть... поищи в инете, ссылок просто валом..
Автор: NightW0lf
Дата сообщения: 02.02.2007 18:23
DenVl

Цитата:
А русик к Inno Setup 5.1.9 есть?

Да забирай!.
Автор: Sanyk36
Дата сообщения: 02.02.2007 19:12
Ктонить поможет по этому вопросу : http://forum.ru-board.com/topic.cgi?forum=5&topic=4801&start=1460#5 ?
Автор: DenVl
Дата сообщения: 02.02.2007 20:03
Спасиб NightW0lf

DroN_S

Цитата:
..или надо просто собрать дистрибутив, который бы просто устанавливал игру?

сначала я так и думал, но после..

Цитата:
..может создать какие то файлы конфигураций, или сделат какие то записи в реестр или ещё что то?

я задумался и путем некоторых манипуляций с поиском в реестре (другого способа я пока не вижу, если тока перед установкой игры надо было запустить какого-нидь кей-логгера, но это не в этот топик)..так вот нашел три записи в реестре: одна запись: HKEY_LOCAL_MACHINE\SOFTWARE\Game\1.00 другая запись:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Game.exe и в ней находятся пару строковых параметров и третья запись: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Unistall\{...} c кучкой параметров. Вот собственно и все.., что посоветуете или предложите?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

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


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