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

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

Автор: ProkVS
Дата сообщения: 22.06.2006 18:04
Подскажите пожалуйста, начинающему программисту , для примера, что написать в файле сценария для того чтобы скопировать папку с файлами с диска C:\ на диск D:\ ?
Все справки, которые я нашел, рассчитаны на уже продвинутых программистов, а как же быть абсолютно нулёвым? Может кто-нибудь даст ссылку на букварь? Существует ли перечень простейших команд или примеров инсталляций? На англоязычных сайтах, включая оффсайт данной программы есть масса информации, но она вся на английском, а я на английском слабо понимаю...
Заранее благодарен за любую информацию!

Автор: VitaliM
Дата сообщения: 22.06.2006 19:43
AJIEKSEu

Цитата:
Ну так напиши как правильно - болтать то все могут.

Э! Друг, повежливей! Я не болтаю, а советую.
По делу:
надо вызвать функцию FindFirstFile( lpFindFile, lpFindFileData),
в структуре lpFindFileData в поле cAlternativeFileName будет содержаться короткое имя
файла/папки в формате 8.3, которое винда содаст в соответствие длинному имени.
Вот собственно и все. Ну и естественно файл/папка с динным именем должна существовать.

ProkVS

Почитай шапку топика, тамь есть ссылки на русский хелп InnoSetup и два кратких мануала тоже на русском, написанными и переведенными уважаемыми BagIra и Kindly.
Автор: PA3BED4UK
Дата сообщения: 22.06.2006 20:37

Цитата:
PA3BED4UK   Короче помучал я твой примерчик и вот что получилось:

Спасибо большое, AJIEKSEu. Всё работает правдо есть 1 но.
Я только вчера заметил, что для моего дистриутива надо, что бы конечная папка именовалась EARTH 2160. Может кто подскажет как это форсировать
[quote="VitaliM"] надо вызвать функцию FindFirstFile( lpFindFile, lpFindFileData),   в структуре lpFindFileData в поле cAlternativeFileName будет содержаться короткое имя   файла/папки в формате 8.3, которое винда содаст в соответствие длинному имени.[/quote]
Не мог бы ты по - подробней , а то я в паскале , как уже писал выше дуб-дубом
Автор: AJIEKSEu
Дата сообщения: 22.06.2006 23:48
VitaliM
Ну дык яж шучу...
Кстати похоже что то что надо... Только задача усложнилась...

PA3BED4UK

DefaultDirName={pf} просто так оставь в секции [Setup], а на всех файлах и папках в секции [Files] ставь {app}\Earth2160

[Files]
Source: files.exe; DestDir: {app}\earth2160

Скрипт перепишешь малость - уберешь вычисление длины стринга и обрезание, а в нем допишешь полностью что тебе нужно:
Result := S + 'Earth21~1/>''

Отпиши че получилось...
Автор: KrMike
Дата сообщения: 26.06.2006 17:04
>KrMike

>Цитата:
>кажите, а есть возможность мизменения блеклых серых страниц Wizard'а на свои >собственные? там кнопочки свои вставить, вид самих этих страниц поменять?
>
>Можно, но сложно. Читай >http://rapidshare.de/files/12438629/InnoSetupScripting_v3_final.zip.html

не совсем то, что надо, хотя уже кое-что. я вообще хотел как-то вместо этих блеклых страниц повставлять свои картинки, но похоже это нельзя сделать, либо очень сложно. жаль.
Автор: JKSerGEAnt
Дата сообщения: 27.06.2006 08:56
KrMike
Там это все описывается. Если не веришь, то скачай файлик и посмотри сам.
Автор: VitaliM
Дата сообщения: 27.06.2006 18:01
JKSerGEAnt
Интересно, а ты какой файлик имел ввиду? По твоей ссылке что-то из другой оперы.
Поясни, пожалуйста.
Автор: Kindly
Дата сообщения: 29.06.2006 09:22
А ну-ка, уважаемые знатоки Паскаля, подсобите. Не могу справится со следующей задачей:

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
res: Integer;
begin
case CurUninstallStep of
usPostUninstall:
begin
If DirExists(ExpandConstant('{app}')+'')
then
if MsgBox('В папке "'+ExpandConstant('{app}')+'" после удаления остались файлы.' #13#13 'Да - безвозвратное удаление всей папки с незадействованными файлами.' #13#13 'Нет - открыть папку в проводнике.', mbInformation, MB_YESNO)=IDYES
then
begin
DelTree(ExpandConstant('{app}'), True, True, True);
end
else
begin
ShellExec('open', ExpandConstant('{app}')+'', '', '', SW_SHOWMAXIMIZED, ewNoWait, res)
end;
end;
end;
end;

Этот код выполняется после процесса деинсталляции. В нем проверяется, осталась ли после удаления папка, и если осталась, выводится сообщение с возможностью выполнения указанных действий. У меня все правильно, но хотелось бы вывести сообщение с третьей кнопкой "Отмена", при нажатии которой не выполнялось действий с полным удалением и открытием папки, т.е. "ничего не делать". Но вот беда - я не могу присвоить каждой кнопке в отдельности выполняемое действие. С этим примером понятно, но вот если кнопка MB_YESNOCANCEL, то как назначить действие каждой кнопке по отдельности? Т.е. в данной случае нужно сообщение MB_YESNOCANCEL, чтобы при IDYES полностью удалялась папка, при IDNO открывалась папка в проводнике, и при IDCANCEL эти действия не выполнялись.
Автор: PA3BED4UK
Дата сообщения: 29.06.2006 11:27
[quote="VitaliM"]JKSerGEAnt Интересно, а ты какой файлик имел ввиду? По твоей ссылке что-то из другой оперы. Поясни, пожалуйста.[/quote]
Русификация от Russian Bloodline (9 МБ) или обновление (420 КБ) Я так понял он имел в виду распаковать 1 из этих файлов и смотреть скрипт
Автор: VitaliM
Дата сообщения: 29.06.2006 12:07
Kindly

Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
res: Integer;
begin
case CurUninstallStep of
usPostUninstall:
begin
If DirExists(ExpandConstant('{app}')+'') then
case MsgBox('В папке "'+ExpandConstant('{app}')+'" после удаления остались файлы.'+
#13#13 'Да - безвозвратное удаление всей папки с незадействованными файлами.'+
#13#13 'Нет - открыть папку в проводнике.', mbInformation, MB_YESNOCANCEL) of
IDYES:
begin
DelTree(ExpandConstant('{app}'), True, True, True);
end
IDNO:
begin
ShellExec('open', ExpandConstant('{app}')+'', '', '', SW_SHOWMAXIMIZED, ewNoWait, res)
end;
IDCANCEL:
begin
// нет никаких действий или все что угодно
end;
end;
end;
end;
end

Автор: JKSerGEAnt
Дата сообщения: 29.06.2006 15:07
VitaliM

Цитата:
Интересно, а ты какой файлик имел ввиду? По твоей ссылке что-то из другой оперы.
Скачай тот, что много весит (где-то 8-9 метров) и посмотри, что на Inno МОЖНО сделать красивый инсталлер.
PA3BED4UK
Распаковать его не получится, ибо секция [Code] при компиляции превращается в бинарник. На мои неоднократные просьбы прислать скрипт никто оттуда так и не ответил.
Автор: boss911
Дата сообщения: 29.06.2006 19:16

Цитата:
Руководство по расширенным возможностям Inno Setup 5 (не для чайников), забираем здесь

Так вот нехочет играть mid , а с wav'ом проблем нету, скажите пожалуйста, что я делаю не так или может в коде что-то нето:

Код:
Для проигрывания MIDI делаем так:
[Files]
Source: "C:\sound.mid"; DestDir: "{tmp}"; Flags: dontcopy

[Code]
function mciSendString(lpstrCommand: string; lpstrReturnString: string; uReturnLength:integer; hwndCallback:integer):integer;
external 'mciSendStringA@winmm.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('sound.mid'));
mciSendString(ExpandConstant('play {tmp}\sound.mid'),'NULL',0,0);
end;
Автор: feandy
Дата сообщения: 29.06.2006 22:41
JKSerGEAnt

Цитата:
На мои неоднократные просьбы...

И вряд ли пришлют.
Допустим чел рылся 3-4 дня, или больще, в этом самом коде, и что, он обязан тебе прислать готовое решение?
Я сам порой матерюсь, ругаюсь... Но в итоге почти всегда сам достукиваюсь...

Декомпил бинарников существует. Но код получается шибко не привычный для взгляда.

Голова есть решишь вопрос. Нет увы. Если решил, то уже тут тебе самому решать дать на публик или нет.

Автор: PA3BED4UK
Дата сообщения: 29.06.2006 22:54

Цитата:
Декомпил бинарников существует.

Тогд, дай пожалуйста ссылку на него
Автор: feandy
Дата сообщения: 29.06.2006 22:59
PA3BED4UK
К примеру вот
__http://heanet.dl.sourceforge.net/sourceforge/innounp/ifps3_disasm.rar

Добавлено:
Kindly
А попробуй засунуть свой мессадж в констукцию case

типа такого

case MsgBox(...) of
idYes:
idNo:
idCancel:
else...
end;
Сам я не пробовал, но надеюсь поможет. Тут можно поэксперементировать
Автор: JKSerGEAnt
Дата сообщения: 30.06.2006 07:54
feandy
Я в общем-то и сам бы такой скрипт написал, только вот времени жало... Все, что я хотел от Inno (кроме custom pages в uninstall), я получил.
Автор: Kindly
Дата сообщения: 30.06.2006 08:47
VitaliM спасибо, думаю, все будет работать.
Насчет "красивостей" - ну так ли это важно? Установка запускается, чтобы проинсталлировать программу, важна функциональность сборки.
feandy
И вряд ли пришлют.

Цитата:
Допустим чел рылся 3-4 дня, или больще, в этом самом коде, и что, он обязан тебе прислать готовое решение?
Я сам порой матерюсь, ругаюсь... Но в итоге почти всегда сам достукиваюсь...

А что, челу заподло уже исходник выслать, я сам просил у них, меня там в принципе реализация второго прогресс-бара инстересовала. В итоге плюнул и начал хелп изучать. Все там компоненты можно покрасить, убрать, изменить расположение и размер, цвет и размер шрифта и т.п., вот только это долго и нудно.
Автор: PA3BED4UK
Дата сообщения: 30.06.2006 09:28
М МЯу, у меня вопрос:
Подскажите, пожалуйста как сделать постоянно меняющийся фон инсталера, как в оригинальном инсталлере Квэйк 4.
Спасибо.
Автор: VitaliM
Дата сообщения: 30.06.2006 09:33
Kindly

Цитата:
Насчет "красивостей" - ну так ли это важно?

Да это больше для себя, привычка. Очень много приходится работать с чужим кодом. Пока не причешешь, не возможно разобраться.

PA3BED4UK

Цитата:
К примеру вот
__http://heanet.dl.sourceforge.net/sourceforge/innounp/ifps3_disasm.rar

По этой ссылке скачанный disasm работать не стал, а после перекомпиляции (там исходник оказался) заработал. Сгененрированный скрипт действительно трудно читаемый.
Автор: PA3BED4UK
Дата сообщения: 30.06.2006 10:22

Цитата:
По этой ссылке скачанный disasm работать не стал, а после перекомпиляции (там исходник оказался) заработал. Сгененрированный скрипт действительно трудно читаемый.

МОжешь, тогда выложишь нам , перекомпиллированный дизассемблер
Автор: VitaliM
Дата сообщения: 30.06.2006 10:50
PA3BED4UK

Цитата:
перекомпиллированный дизассемблер

Здесь.
Автор: Vensdale
Дата сообщения: 07.07.2006 10:31
Как сделать так, чтобы к пути, который инсталлятор ищет в реестре, прибавить еще название нужной папки?
Скажем:
DefaultDirName={reg:HKLM\Software\VST,VSTPluginsPath|{pf}\Vmd}
инсталлятор нашел путь и указал при установке: C:\VstPlugs
как прибавить название папки, чтобы автоматически получилось C:\VstPlugs\Vmd

Спасибо.
Автор: PA3BED4UK
Дата сообщения: 07.07.2006 15:04
DefaultDirName={reg:HKLM\Software\VST, VSTPluginsPath\Vmd |{pf}\Vmd}
Не уверен, что сработает, но попробуй
Автор: Vensdale
Дата сообщения: 08.07.2006 11:46
Спасибо за ответ, но данный способ не работает. Может еще есть варианты?
Автор: VitaliM
Дата сообщения: 09.07.2006 00:14
Vensdale
А почему нельзя написать функцию, возвращающую строку. В функции получить путь из реестра и приклеить к нему то что надо и вернуть как результат.
Тогда наверное можно будет написать:

DefaultDirName={code:FunctionRegPath|{pf}\Vmd}

где FunctionRegPath - это имя функции, возвращающей то что надо.

Как вариант, попробуй.
Автор: Diamond_YDTS
Дата сообщения: 21.07.2006 15:02
Помогите plz со скриптом. Нужно чтобы инсталлер при запуске проверял определённые ключи в реестре, и если например ключ равен 1, убирались или наборот выставлялись галочки в секции Components или Task. Очень надеюсь на помощь.
Автор: Diamond_YDTS
Дата сообщения: 21.07.2006 21:07
И ещё, как можно сделать так, чтоб инсталлер добавлял строку текста в .txt файл?
Автор: andrefx
Дата сообщения: 25.07.2006 13:03
Всем привет.

Может кто знает, как сделать так чтобы нельзя было распоковать инсталлер программой innounp, а то херня получается, хто хош тот и ковыряйся в твоем инсталляторе, доставай и распаковывай что тебе нужно, нахрена тогда серийный номер в инсталляторе, смысл теряется.
А так все хорошо начиналось, придется наверно в сторону NSIS посмотреть.
Решение должно быть, посмотрите на Inno Setup инсталлятор программы http://www.skype.com вот его хер распакуешь, как-то же сделали.
Автор: VitaliM
Дата сообщения: 25.07.2006 13:42
andrefx
А такой параметр секции [Setup] как Encryption тебе ни о чем не говорит. Посмотри в справке и все станет ясно.
Автор: stvneron
Дата сообщения: 26.07.2006 12:57
Помогите разобраться плиз!!!
Прочитал всю тему, хелпы, но ответа не увидел...

Есть ключ в реестре с путем для установки. Значение читаю в переменную path.
Инсталл без выбора папки для установки.

При попытке ввести в секцию [Files] строки вида
Source: "D:\SOURCE\*"; DestDir: path; Flags: ignoreversion recursesubdirs createallsubdirs
- установка происходит в Windows\System32\path

В переменной находится правильное значение пути.

Как можно в коде указать путь для установки через переменную без выбора папки установки??

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

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


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