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

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

Автор: iTASmania_Inc
Дата сообщения: 02.02.2008 01:33
KurtWagner
Подобный пример есть в руководстве от Kindly. Думаю, провести аналогию не сложно. Ну, и разумеется, пример от Genri.
Автор: GRom V
Дата сообщения: 02.02.2008 09:53
Может кто инть сказать как извлеч во временную папку в ,секции [code], не один файл а целую папку типа..
ExtractTemporaryFile('папка\*');
и реально ли это???
былбы благодарен
Автор: Dimbay
Дата сообщения: 02.02.2008 10:47
Victor_Dobrov
Годится! , спасибо!
Автор: Chuvakstepan
Дата сообщения: 02.02.2008 11:06
Подскажите как реализовать то чтобы при использовании mp3 (Bass) было несколько треков и они бы врубались вначале в случайном порядке, и по окончании одной играла другая
Автор: PSKOVMAIL
Дата сообщения: 02.02.2008 11:42
Ребята, подскажите такую штуку:
Нужно сделать фоновую установку Mirosoft Visual C++ 2005 Redistributable, при условии что устанавливаться будет только та, которая соответствует битности ОС, т.е. если Windows 64-bit то устанавливается vcredist_x64.exe, если Windows 32-bit - то vcredist_x86.exe???

Filename: {src}\vc80_redist\vcredist_x64.exe; Parameters: /q; StatusMsg: Установка Mirosoft Visual C++ 2005 Redistributable подождите ...; Flags: waituntilterminated 64bit; WorkingDir: {src}\vc80_redist
Filename: {src}\vc80_redist\vcredist_x86.exe; Parameters: /q; StatusMsg: Установка Mirosoft Visual C++ 2005 Redistributable подождите ...; Flags: waituntilterminated 32bit; WorkingDir: {src}\vc80_redist

если оставить всё как есть, то при установке на 32-bit инсталятор ругается что мол у вас нет поддержки 64-bit, а если на 64-bit-ную то лишний пакет устанавливается!!!

Sempron,NightWolf откликнитесь!!!
Автор: GRom V
Дата сообщения: 02.02.2008 12:24
PSKOVMAIL
if IsWin64 then
begin
ShellExec('', ExpandConstant('{src}\support\C++\vcredist_x64\vcredist.msi'),'/qn/i', '', SW_SHOW, ewWaitUntilTerminated, iErrorCode);
Result:= True;
end
else
begin
ShellExec('', ExpandConstant('{src}\support\C++\vcredist_x86\vcredist.msi'),'/qn/i', '', SW_SHOW, ewWaitUntilTerminated, iErrorCode);
Result:=True;
end;

Добавлено:
Вопрос в силе.....как извлеч во временную папку в ,секции [code], не один файл а целую папку типа..
ExtractTemporaryFile('папка\*');
и реально ли это???

и второй
мне нужно разбить инсталлятор на 2 диска. Размер получается 3285002901 П

Добавлено:
Вопрос остается в силе....
как извлеч во временную папку в ,секции [code], не один файл а целую папку типа..
ExtractTemporaryFile('папка\*');

и второй мне нужно разбить инсталлятор на 2 диска. Размер каждого получается 3285002901 но почемуто InnoSetup не поддерживает такой размер при разбитее. Как быть?
Автор: PSKOVMAIL
Дата сообщения: 02.02.2008 12:37

Цитата:
PSKOVMAIL
if IsWin64 then
begin
ShellExec('', ExpandConstant('{src}\support\C++\vcredist_x64\vcredist.msi'),'/qn/i', '', SW_SHOW, ewWaitUntilTerminated, iErrorCode);
Result:= True;
end
else
begin
ShellExec('', ExpandConstant('{src}\support\C++\vcredist_x86\vcredist.msi'),'/qn/i', '', SW_SHOW, ewWaitUntilTerminated, iErrorCode);
Result:=True;
end;


это в какую процедуру вставить???

Добавлено:

Цитата:
и второй мне нужно разбить инсталлятор на 2 диска. Размер каждого получается 3285002901 но почемуто InnoSetup не поддерживает такой размер при разбитее. Как быть?



DiskSpanning=true
DiskSliceSize=2000000000 - размер в байтах больше сделать по моему нельзя, могу ошибаться!!!
Автор: Kutsenko
Дата сообщения: 02.02.2008 12:57

Цитата:
DiskSliceSize=2000000000 - размер в байтах больше сделать по моему нельзя, могу ошибаться!!!

Можна сделать немного больше, только на чуть-чуть, максимальный размер бин файла 2 гига а 2000000000 это не 2 гига а немного меньше.
Автор: PSKOVMAIL
Дата сообщения: 02.02.2008 13:01

Цитата:
Можна сделать немного больше, только на чуть-чуть, максимальный размер бин файла 2 гига а 2000000000 это не 2 гига а немного меньше


именно так!!! я так понимаю это связано с файловой системой!!! FAT

Добавлено:

Цитата:
PSKOVMAIL
if IsWin64 then
begin
ShellExec('', ExpandConstant('{src}\support\C++\vcredist_x64\vcredist.msi'),'/qn/i', '', SW_SHOW, ewWaitUntilTerminated, iErrorCode);
Result:= True;
end
else
begin
ShellExec('', ExpandConstant('{src}\support\C++\vcredist_x86\vcredist.msi'),'/qn/i', '', SW_SHOW, ewWaitUntilTerminated, iErrorCode);
Result:=True;
end;


чего-то я ваще не понял куда и чего, говорит нет такого "iErrorCode", в какую процедуру это вписать!!!
Автор: serg_aka_lain
Дата сообщения: 02.02.2008 15:56
PSKOVMAIL

А так проще будет
Setup
ArchitecturesAllowed=x86 x64
ArchitecturesInstallIn64BitMode=x64

Files
Source: "vcredistx86\*"; DestDir: "{tmp}\x86"; Check: not Is64BitInstallMode;
Source: "vcredistx64\*"; DestDir: "{tmp}\x64"; Check: Is64BitInstallMode;

Run
Filename: "msiexec.exe"; Parameters: "-i ""{tmp}\x86\vcredist.msi"" -qn"; WorkingDir: "{tmp}\x86"; Check: not Is64BitInstallMode; Flags: runhidden waituntilterminated;
Filename: "msiexec.exe"; Parameters: "-i ""{tmp}\x64\vcredist.msi"" -qn"; WorkingDir: "{tmp}\x64"; Check: Is64BitInstallMode; Flags: runhidden waituntilterminated;

Если Widows 32 ,будет запущен Redist_x86, если Windows 64 ,будет запущен Redist_x64

p.s.
К примеру инсталлятор "Crysis" на WindowsVista x64 устанавливает оба пакета Redistributable
Автор: iTASmania_Inc
Дата сообщения: 02.02.2008 16:18
Chuvakstepan
Ну, я бы сделал так.
Автор: VinogradOFF
Дата сообщения: 02.02.2008 16:54
Здраствуйте, у меня к вам вопросик)) подскажите как с помощью инно сделать следующий замут -->
Происходит действие Унинсталл) Необходимо открыть Урл в браузере (неважно каком). Но не просто открыть, а сделать так чтобы код, который идёт после вызова УРЛ начинал исполнятся только после закрытия странички юзером. Буду рад любым советам.
Я пробовал с помощью функции ShellExec:

ShellExec('open',UnUnstallURL,'','', SW_Shownormal,ewWaitUntilterminated,ErrorCode);
Автор: PSKOVMAIL
Дата сообщения: 02.02.2008 17:19
serg_aka_lain

Спасибо помогло, респект табе!!!
Автор: Raf_SE
Дата сообщения: 03.02.2008 00:10
Возможно ли сделать так чтобы инсталлятор создавал ключ в реестре формата Binary обозначающий {app} (т.е. папку в которую установится прога) ?
Автор: serg_aka_lain
Дата сообщения: 03.02.2008 01:06
Raf_SE

Вот так можно

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
RegWriteBinaryValue(HKLM, 'Software\Program, 'InstallPath', ExpandConstant('{app}'));
end
end;
Автор: GRom V
Дата сообщения: 03.02.2008 01:10
PSKOVMAIL

Цитата:
чего-то я ваще не понял куда и чего, говорит нет такого "iErrorCode", в какую процедуру это вписать!!!

Например так function InitializeSetup(): Boolean;
var
iErrorCode: Integer;

begin
if IsWin64 then
begin
ShellExec('', ExpandConstant('{src}\support\C++\vcredist_x64\vcredist.msi'),'/qn/i', '', SW_SHOW, ewWaitUntilTerminated, iErrorCode);
Result:= True;
end
else
begin
ShellExec('', ExpandConstant('{src}\support\C++\vcredist_x86\vcredist.msi'),'/qn/i', '', SW_SHOW, ewWaitUntilTerminated, iErrorCode);
Result:=True;
end;
Автор: Victor_Dobrov
Дата сообщения: 03.02.2008 01:13
Corona Skin & Check System Requirements (454 Кб в архиве) - исправление серьёзной ошибки!

Исправлено: без файла лицензии инсталлятор вылетал с сообщением об отсутствии компонента LicenseMemo.
Добавлен ещё один вариант выбора на странице деинсталляции. В Corona.iss на первой странице теперь описание.
Автор: GRom V
Дата сообщения: 03.02.2008 01:15

Цитата:
DiskSpanning=true
DiskSliceSize=2000000000 - размер в байтах больше сделать по моему нельзя, могу ошибаться!!!

Тогда на одном диске будет не один, а к примеру 2 бен-файла и при смене второго диска будет предложено вставить не 2-ой диск а третий. Можно ли изменить сообщение при вставке нового диска?
Автор: PSKOVMAIL
Дата сообщения: 03.02.2008 02:14
GRom V
Спасибо это тоже помогло и работает!!!
Автор: serg_aka_lain
Дата сообщения: 03.02.2008 02:56
GRom V


Цитата:
Можно ли изменить сообщение при вставке нового диска?


такой вариант подойдет
В секции Messages

ChangeDiskTitle=Необходим следующий диск.
SelectDiskLabel2=Вставьте следующий диск и нажмите «OK».
Автор: GRom V
Дата сообщения: 03.02.2008 04:27
serg_aka_lain

Цитата:
такой вариант подойдет
В секции Messages

ChangeDiskTitle=Необходим следующий диск.
SelectDiskLabel2=Вставьте следующий диск и нажмите «OK».

То что надо.....спасибки
Автор: Chuvakstepan
Дата сообщения: 03.02.2008 06:43
iTASmania_Inc
Спасибо! Отдельно вроде работает
*блин, опять весь скрипт перебирать*
Автор: Igrock2007
Дата сообщения: 03.02.2008 08:09
Всем привет!!!
- - - -SAMPRON!!! - - -

А как с помощью manialogo.exe запустить более 1-го изображения?
Сколько пробовал - ничего не выходит. :0(
(На дисках были такие инсталляторы - сначала запускается logo1.bmp, затем logo2.bmp, ну а далее окно inno setup)
Может нужно с параметром запускать manialogo.exe???
Есть ли другие способы запуска Splash-заставки с использованием alfa-канала???
Заранее благодарю за любую помощь!!! :0)
Автор: iTASmania_Inc
Дата сообщения: 03.02.2008 15:13
Igrock2007
Попробуйте [more=так]
[Setup]
AppName=Program
AppVerName=Program [Version]
DefaultDirName={pf}\Program

[Files]
Source: manialogo.exe; DestDir: {tmp}; Flags: dontcopy
Source: LOGO.bmp; DestDir: {tmp}; Flags: dontcopy
Source: LOGO1.bmp; DestDir: {tmp}; Flags: dontcopy

[Code]
function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
begin
ExtractTemporaryFile('LOGO.bmp');
ExtractTemporaryFile('LOGO1.bmp');
ExtractTemporaryFile('manialogo.exe');

Exec(ExpandConstant('{tmp}\manialogo.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode);
DeleteFile(ExpandConstant('{tmp}\LOGO.bmp'));
RenameFile(ExpandConstant('{tmp}\LOGO1.bmp'), ExpandConstant('{tmp}\LOGO.bmp'));
Exec(ExpandConstant('{tmp}\manialogo.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode);
Result := True;
end;
[/more].

Добавлено:

Цитата:
Есть ли другие способы запуска Splash-заставки с использованием alfa-канала???

Можно запускать splash-заставку через NSIS-овские плагины, к сожалению, там нельзя использовать альфа-канал, но можно делать прозрачным указанный Вами цвет. Подробнее - в руководстве Kindly.
Автор: Raf_SE
Дата сообщения: 03.02.2008 15:49
serg_aka_lain
Проверь почту, у меня пару вопросов насчет твоих скриптов.
Автор: RRRRR
Дата сообщения: 03.02.2008 20:22
Нужна помощь, надо копировать файл по такому пути:

C:\Documents and Settings\All Users (или папка пользователя)\Шаблоны

Как это можно прописать в скрипте, чтобы системный диск сам определялся?
Автор: serg_aka_lain
Дата сообщения: 03.02.2008 20:34
Raf_SE

Ответил в личку там ссылка на пример скрипта.
Автор: iTASmania_Inc
Дата сообщения: 03.02.2008 20:43
RRRRR
{%userprofile}\Шаблоны - для текущего пользователя
{%allusersprofile}\Шаблоны - для всех пользователей
Автор: Sig666
Дата сообщения: 03.02.2008 21:29
Возможно ли список задач перенести на страницу выбора директории, а саму страницу выбора задач отключить?

Автор: alftair
Дата сообщения: 03.02.2008 22:31
Установил InnoSetup Upgrade от Victor_Dobrov. Возник вопрос. Как убрать страницу "Проверка минимальных системных требований" ??

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Поиск в WinDjView


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