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

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

Автор: JKSerGEAnt
Дата сообщения: 12.02.2006 00:56
oldruss

Цитата:
Можна как-то переименовать ключ реестра?

Указываем имя нужного ключа и его новое значение - что сложного-то...
Автор: oldruss
Дата сообщения: 12.02.2006 15:51
JKSerGEAnt
а название функции? пишу в коде RegRenameKey (....) (в справке к инносетап такой функции нет) - при компиляции - ошибка.
Подскажи, пожалуйста, как это делается.... Нужно переименовать, например, ключ реестра по адресу: HKLM\SYSTEM\CurrentControlSet\Services\'ключ1'.... в "ключ2".

var
NewName: string;
.
.
NewName:= 'ключ2'
.
begin
RegRenameKey(HKLM, 'CurrentControlSet\Services\ключ1', NewName);

примерно так?

Автор: Elfant
Дата сообщения: 14.02.2006 23:07
Kindly

Цитата:
В скрипт не вникал, но он явно неправилен. Не гарантирую правильного ответа, но функцию проигрывания нужно определять в самом верху. А извлечь звуковой файл можно и при инициализации, а уже перед инсталляцией вызвать функцию для проигрывания, чтобы небыло задержки.


Всё равно не разобратся =(

Кто-нить выложите пример любого скрипта, чтобы в секции [Code] было реализовано проигрывание музыки в wav и фоновое изображение bmp.

Очень надеюсь на скорую помощь
Автор: Kindly
Дата сообщения: 15.02.2006 09:01
prostouser, это ошибка врядли из-за вставки трекерной музыки. Скорее всего это ошибка компилятора, часом не Windows 2000? Или скрипт составлен не совсем верно.
oldruss, зачем переименовывать, если можно записать новый ключ - какая разница?
Elfant, проигрывание Wavе и вставка фонового изображения описаны в моем руководстве, см. шапку, сложного в слиянии функций нету, важно соблюдать порядок действий.
Автор: Elfant
Дата сообщения: 15.02.2006 11:47
Kindly
Да я твоим руковдством и пользуюсь, но почему-то не получается?

Код: [Code]
function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer;
external 'sndPlaySoundA@winmm.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('sound.wav'));
sndPlaySound(ExpandConstant('{tmp}\sound.wav'), $0001 or $0008);
end;

function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
bitmap:TBitmap;
begin
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
width:=GetSystemMetrics(61);
height:=GetSystemMetrics(62);
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
ExtractTemporaryFile('imagetc.bmp');
s:=ExpandConstant('{tmp}')+'\imagetc.bmp ';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
end;// В этой строке вылетает ошибка =(
Автор: prostouser
Дата сообщения: 15.02.2006 19:08
Kindly

Цитата:
это ошибка врядли из-за вставки трекерной музыки. Скорее всего это ошибка компилятора, часом не Windows 2000? Или скрипт составлен не совсем верно.


нет Виндоус ХР с сервис паком 2. да и скрипт слишком прост чтоб быть некоректным
да и без хм-а работает без сбоев - может ли быть в таком случае конфликт системы и библиотеки проигрывающей хм файл ? Вообщем буду тестировать на других системах.
Спасибо за помощь.
Автор: PiterKey
Дата сообщения: 16.02.2006 17:11
Привет всем.
Вопрос такой, нужно после установки запустить Sentaniel-ий установщик с параметрами Parameters: /v"/qb ADDLOCAL=USB_Driver"
на такой строке
Parameters: "/v"/qb ADDLOCAL=USB_Driver""
Inno спотыкается, говорит лишние кавычки... как можно вставить параметр с кавычками?

Добавлено:
Отбой!
Добавив кавычек добился корректного параметра...
Parameters: "/v""/qb ADDLOCAL=USB_Driver"""
в командной строке как /v"/qb ADDLOCAL=USB_Driver"
Автор: Doc_Evil
Дата сообщения: 16.02.2006 23:56
Кто подскажет, есть ли в Inno Setup возможность ограничить запуск созданного дистриба на запуск по системной дате?
Автор: kevinkf
Дата сообщения: 17.02.2006 10:34
Помогите начинающему.
Может и глуппый вопрос.
В Inno есть возможность сделать инсталятор на русском языке?
Автор: JKSerGEAnt
Дата сообщения: 17.02.2006 10:45
kevinkf
в папке и самим inno зайди в папку Languages и перенеси файл Russian.isl в корневую папку inno, переименовав его в Default.isl
Автор: Kindly
Дата сообщения: 17.02.2006 10:57
Elfant
Правильно так:

[Files]
Source: "C:\sound.wav"; DestDir: "{tmp}"; Flags: dontcopy
Source: "C:\background.bmp"; DestDir: "{tmp}"; Flags: dontcopy

[Code]
function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer;
external 'sndPlaySoundA@winmm.dll stdcall';

function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
bitmap:TBitmap;
begin
ExtractTemporaryFile('background.bmp');
ExtractTemporaryFile('sound.wav');
sndPlaySound(ExpandConstant('{tmp}\sound.wav'), $0001 or $0008);
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
width:=GetSystemMetrics(61);
height:=GetSystemMetrics(62);
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
s:=ExpandConstant('{tmp}')+'\background.bmp';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
end;

prostouser
У меня такая же операционная система. Скрипт может быть и прост, но я бы взглянул на него. Возможно, xm-файл некорректно проигрывается библиотекой, хотя ошибка об этом не свидетельствует, попробуй другой xm-файл, а может компилятор выделывается.
Автор: Doc_Evil
Дата сообщения: 17.02.2006 11:24
Перефразирую вопрос:
Можно ли сделать на дистриб что-то типа trial ограничения? т.е. до определённой даты можно запустить инсталяцию, а после уже нет. Я в каком-то инсталляторе это встречал, только непомню в каком... то ли в Inno то ли NSIS, а может в каком нидь другом...
Кто подскажет? А то, очень срочно нужно для дела.
Автор: JKSerGEAnt
Дата сообщения: 17.02.2006 11:36
Doc_Evil
Есть функция GetDateTimeString() - вот ее вызываем в initializesetup и проверяем что там тебе надо.
Автор: Doc_Evil
Дата сообщения: 17.02.2006 17:20
JKSerGEAnt
Я так понял, всё это пишется в секции [Code],
к сожалению я не знаю Pascal
Может есть какие-нибудь примеры\шаблоны, чтоб по подобию делать?
Автор: JKSerGEAnt
Дата сообщения: 17.02.2006 20:28
Doc_Evil
Хм. Inno Setup - это инсталлятор, в котором все сложные вещи необходимо делать ручками. Если ты не знаешь паскаль, то могу посоветовать только сменить его на что-нибудь более простое.
Автор: Elfant
Дата сообщения: 17.02.2006 21:43
Kindly
Который раз уже выручаешь, нет слов

Автор: chum2000
Дата сообщения: 18.02.2006 18:41
а как можно установить значение переменной перед началом установки. идея такая: нужно посмотреть значение в реестре и в случае наличия нужного значения присвоить {app} значение из реестра.

Полазил по скриптам и нашёл функцию ExpandConstant, но она возвращает значение переменной, а какая функция её устанавливает???
Автор: Elfant
Дата сообщения: 19.02.2006 16:46
А можно файлы не пихать в инсталлер или в архивы, а оставить в папках (например если диск создать), чтобы при установке прямо из папок файлы устанавливались, или папки целиком?
Автор: kaliostro_Den
Дата сообщения: 20.02.2006 01:35
Извените у меня появилась одна проблемка:
Как сделать так что бы делалась просто какая-то запись в файле ini, который не состоит из блоков, строк и папраметров, а просто имеет формат обычного текстового файла и нужно чтобы в этот файл была вставлена строчка.
И как это сделать?
Автор: Elfant
Дата сообщения: 26.02.2006 01:34
Так чего в Inno Setup это нельзя реализовать?
Автор: Kindly
Дата сообщения: 26.02.2006 10:01
Elfant
Для всего нужно время. По-моему, нужно указать инсталлятору копируемые из диска папки с файлами как компоненты, вроде функцию свою еще писать для этого надо. Когда появится время попробую реализовать.
Автор: Elfant
Дата сообщения: 26.02.2006 10:54
Kindly
Будем ждать =)
Просто если собирать большие игрушки (для последующей записи на диск), не вижу смысла их запихивать в инсталлер или архивы, т.к. при компресии почти не сжимается, а установка длится очень долго...
Автор: namchik
Дата сообщения: 26.02.2006 11:52
Elfant
если установить compression=none, то, по идее, устанавливаться должно по времени столько же, сколько и просто копироваться
Автор: Elfant
Дата сообщения: 26.02.2006 13:48
namchik
Это может, но всё равно неудобно, к примеру если надо будет патч или русик в образ игры запихать никак уже...
Автор: Kindly
Дата сообщения: 26.02.2006 18:29
Elfant & All, на самом деле все очень просто:

[Files]
Source: "{src}\data\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs external;

В папке data у нас будет находится, например, полностью распакованная игра на DVD. При создании инсталлятора распакованные файлы игры не будут включаться в дистрибутив, что позволит создать инсталлятор очень быстро. Флаг external указывает инсталлятору искать внешние файлы для копирования. В сам же инсталлятор по усмотрению и по желанию можем добавить и установку компонентов подобным образом, а также внесение требуемых и/или желаемых данных в реестр, фоновое изображение, проигрывание музыки и прочее. Если хотите копирование жестко привязать к диску, то используйте константу {drive:{src}}. При использовании данной константы путь будет взят исключительно из того диска, откуда запущен инсталлятор, а при использовании обычной {src} путь будет взят из директории, где находится инсталлятор (то что надо во многих случаях). Такой способ интересен и иногда актуален, когда архивы игры не сжимаются или сжимаются незначительно. Также при должном желании можем установить проверки на присутствие определенных файлов для того, чтобы инсталлятор не позволил копирование при их отсутствии.
Автор: JKSerGEAnt
Дата сообщения: 26.02.2006 20:36
Elfant

Цитата:
а установка длится очень долго...

Ну вообще-то долго она длиться не может. Compression=none, как уже правильно сказал namchik, позволяет запаковывать файлы без компрессии. То есть при установке они практически просто копируются, а не распаковываются.


Цитата:
Это может, но всё равно неудобно, к примеру если надо будет патч или русик в образ игры запихать никак уже...
Читаем шапку про innounp. Скрипт только сохраняем изначальный, т.к. он портится при распаковке.
Автор: Elfant
Дата сообщения: 26.02.2006 21:29
Kindly
Ты как всегда на высоте

JKSerGEAnt

Цитата:
Ну вообще-то долго она длиться не может. Compression=none, как уже правильно сказал namchik, позволяет запаковывать файлы без компрессии. То есть при установке они практически просто копируются, а не распаковываются.

Ну вообще-то я сначала написал вот это:

Цитата:
....а установка длится очень долго...

А уже затем выход предложил namchik, а не наоборот...

Цитата:
Читаем шапку про innounp. Скрипт только сохраняем изначальный, т.к. он портится при распаковке.

Мне нужен был это способ, чтобы можно было модифицировать со временем образ с игрой. А сохрянять скрипт, чтобы каждый раз заново собирать игрушку на 4 гига (из-за нескольких файлов), думаю согласишься не совсем удобно. Проще 1 раз собрать всё красиво, а затем просто отредактировать образ в UltraISO, "n"-ое колличество раз, если понадобится...
Автор: JKSerGEAnt
Дата сообщения: 02.03.2006 07:50
Elfant
Ну если тебе так нравится, то пожалуйста. Но на кой вообще дистрибы пересобирать, не совсем понимаю... Уж патчики-то можно и так положить, все так делают.
Автор: Elfant
Дата сообщения: 02.03.2006 08:24
JKSerGEAnt
Ну к примеру взять ONIMUSHA 3, помимо того что на лицо не аккуратная сборка, так ещё и язык японцкий. А я к примеру соберу свой дистриб, сделаю картинку музыку. Я думаю в любом случае хуже чем есть не получится. Или к примеру Guilty Gear Isuka, я пихаю в него ConfigEng + какие-нить дополнительные материалы (мануалы, описалово оригинальное) и получаем на выходе целиком английскую, а не японцкую версию.
Да в любом случае дополнительные знания лишними не бывают, темболее языков программирования никаких не знаю, и сам врят ли бы до этого дадумался =)
Автор: PENDEJO
Дата сообщения: 02.03.2006 21:07
Не программист. Есть некая прога - в тупую копируются файлы на винт и всё. Устанавливается на двух одинаковых объектах. Разница в том, что файлы из папки Dir1 надо копировать на первый объект, а файлы из папки Dir2 надо копировать на второй объект. Все файлы лежат в общем инсталляторе. Как сделать так, чтобы галочкой выбрать наименование объекта (Объект 1 или Объект 2), и файлы скопировались в нужные директории. Спасибо

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

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


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