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

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

Автор: NightW0lf
Дата сообщения: 19.06.2007 11:29

Цитата:
NightW0lf, большое спасибо, у меня опять пропал этот глюк. Так что уже незачем. Хтя я вообще немогу понять в чём дело. Я просто высунул этот код с "проверкой на файл в директории", утром встал, опять решил попробывать, засунул и работает всё прекрасно! Вот трабла... Даже не понятно почему он иногда пропускает...

Все равно скинь посматрю что и как там у тебя.
Автор: Shpunttt
Дата сообщения: 19.06.2007 11:44
Привет!
Подскажите плиз, как можно сделать такую фичу:
при установке инсталлятора зажимаешь, например, клавишу "Shift" и после установки открывается некий cfg-файл?
никак не могу реализовать=((
Автор: Sero
Дата сообщения: 19.06.2007 14:28
boss911

Цитата:
Я теперь понял! Но, что будет, если будет так:

Так тоже можно!


Цитата:
И что это за ветка тут указана:

Это я тестировал!

вместо секции [Registry] внеси свои значения в процедуре RegWrite


Цитата:
Я так понял, что данные в реестр внесутся при уже запущенной проге,


После!
Rage Hunter


Цитата:
Народ подскажите, можно ли сделать что бы инсталятор при установке вносил строки в файл, например txt (дополнял, а не заменял)?


Смотри в хелпе описание функции SaveStringToFile
Автор: Forslay
Дата сообщения: 19.06.2007 14:41
Хотлось бы, что б при каждом запуске играла не одна mp3 музыка, а маленький плейлист к примеру... Тоесть при каждом запуске что mp3 проигрывалось на угад в разброс... было бы очень даже прикольно...=)
Автор: Genri
Дата сообщения: 19.06.2007 15:47
Shpunttt
Цитата:
при установке инсталлятора зажимаешь, например, клавишу "Shift" и после установки открывается некий cfg-файл
-- файл создается если шифт нажат или изначально входит в состав инсталлятора ? В общем случае, используй GetKeyState. Пример :

Код:
[Setup]
AppName=AppName
AppVerName=AppVerName
DefaultDirName={pf}\My Program

[Code]
const
VK_SHIFT = $10;

function GetKeyState(nVirtKey: integer): Shortint;
external 'GetKeyState@user32.dll stdcall';

function InitializeSetup(): Boolean;
begin
Result:= True;

if GetKeyState(VK_SHIFT) < 0 then
MsgBox('Кнопка Shift нажата', mbInformation, MB_OK)
else
MsgBox('Кнопка Shift не нажата', mbInformation, MB_OK);
end;
Автор: Forslay
Дата сообщения: 19.06.2007 16:30
Пожалуйста срочно помогите!

Я хочу что бы было так:

1) Если программа установлена на компьюере, уже, то установка предлагала её деинсталлировать

2) Ну а если всё чисто, то что бы успешно установка продолжалась!

Пожалуйста помогите как это сделать! Лично я в этом немогу ещё разобраться!


Я тут пытался кое что сделать, но не чо не пойму...


Вот код:


Код: begin
Result:=True;
If not RegKeyExists(HKLM, 'Software\Valve\Half-Life\Settings; ValueType: string; ValueName: EngineDLL; ValueData: hw.dll')
then
begin
MsgBox('Программа MY_PROGRAM не установлена или установлена неверно.' #13#13 'Дальнейшая работа мастера невозможна.', mbError, mb_Ok);
Result:=False;
end
else
begin
MsgBox('Программа MY_PROGRAM успешно обнаружена.' #13#13 'Установка полностью автоматическая.', mbInformation, mb_Ok);
begin
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Counter-Strike v6.0.0.0_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox('Программа установки обнаружила уже установленную программу ранней версии.' #13#13 'Вы желаете предварительно удалить ее?', mbInformation, MB_YESNO) = idYes
then
if not Exec(ResultStr, 'hw.dll', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
Автор: Shpunttt
Дата сообщения: 19.06.2007 16:40
Genri
Огромное спасибо!! Все получилось=))))
Автор: NightW0lf
Дата сообщения: 19.06.2007 17:07
Forslay

Цитата:
Пожалуйста срочно помогите!
Я хочу что бы было так:
1) Если программа установлена на компьюере, уже, то установка предлагала её деинсталлировать
2) Ну а если всё чисто, то что бы успешно установка продолжалась!
Пожалуйста помогите как это сделать! Лично я в этом немогу ещё разобраться!
Я тут пытался кое что сделать, но не чо не пойму...

[more=Пробуй так]

Код:
[code]
function InitializeSetup(): Boolean;
var
ResultCode: Integer;
s, ResultStr:string;
begin
Result:=True;
If not RegKeyExists(HKLM, 'Software\Valve\Half-Life\Settings')
then
begin
MsgBox('Программа MY_PROGRAM не установлена или установлена неверно.' #13#13 'Дальнейшая работа мастера невозможна.', mbError, mb_Ok);
Result:=False;
end
else
begin
MsgBox('Программа MY_PROGRAM успешно обнаружена.' #13#13 'Установка полностью автоматическая.', mbInformation, mb_Ok);
begin
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Counter-Strike v6.0.0.0_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox('Программа установки обнаружила уже установленную программу ранней версии.' #13#13 'Вы желаете предварительно удалить ее?', mbInformation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end;
end;
Автор: boss911
Дата сообщения: 19.06.2007 20:31
Sero

Цитата:
вместо секции [Registry] внеси свои значения в процедуре RegWrite

Я так понял, что простым копированием данных из [Registry] в процедыру RegWrite не обойтись, наверно придется перевести чуть в другой формат? У меня этих значений не мало!
Автор: Sero
Дата сообщения: 19.06.2007 22:12

Цитата:
Я так понял, что простым копированием данных из [Registry] в процедыру RegWrite не обойтись


Да,так.
Автор: Rage Hunter
Дата сообщения: 20.06.2007 01:49

Цитата:
Смотри в хелпе описание функции SaveStringToFile


Плиз маленький пример использования SaveStringToFile с рабочим кодом
Автор: boss911
Дата сообщения: 20.06.2007 01:55
Sero

Ок, спасибо!

ALL

Мне нужно сделать так, чтоб при данной команде:

Код: [UninstallDelete]
Name: {app}\*; Type: filesandordirs
Автор: CapsLosk
Дата сообщения: 20.06.2007 06:43
Есть такой скрипт:

[Code]
const
AviFrameWidth = 500; // ширина кадра
AviFrameHeight = 500; // высота кадра

var
CommandString: String;
FileName: String;
AviFrameTop: Integer;
AviFrameLeft: Integer;

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

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

procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('clock.avi'));
FileName:= ExpandConstant('{tmp}\clock.avi');
AviFrameTop:= GetSystemMetrics(17) / 2 - AviFrameHeight / 2;
AviFrameLeft:= GetSystemMetrics(16) / 2 - AviFrameWidth / 2;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then
begin
CommandString:= 'Open ' + FileName + ' type AVIVideo alias AVIFile parent ' + IntToStr(MainForm.Handle) + ' style child';
mciSendString(CommandString, '', 0, 0);

CommandString:= 'put AVIFile window at ' +
IntToStr(AviFrameLeft) + ' ' + IntToStr(AviFrameTop) + ' ' +
IntToStr(AviFrameWidth) + ' ' + IntToStr(AviFrameHeight);
mciSendString(CommandString, '', 0, 0);

//CommandString:= 'Play AVIFile fullscreen'; // полноэкранный режим
CommandString:= 'Play AVIFile repeat';
mciSendString(CommandString, '', 0, 0);
end;
end;

procedure DeinitializeSetup();
begin
CommandString:= 'Close AVIFile'; // закрываем при выходе
mciSendString(CommandString, '', 0, 0);
end;


При установки - звук из avi есть, а сам не проигрывается. Подскажите кто нить есть ли решение
Автор: Sampron
Дата сообщения: 20.06.2007 11:04
CapsLosk
Да есть такой недостаток, дело в том что если кодек не установлен или кодек глючит то в инсталле видео не отображается.
Автор: Sero
Дата сообщения: 20.06.2007 11:58
Rage Hunter

Цитата:
Плиз маленький пример использования SaveStringToFile с рабочим кодом


Вот пример:

Код:
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssPostInstall then
SaveStringToFile('c:\filename.txt','This is sample', True);
end;
Автор: Victor_Dobrov
Дата сообщения: 20.06.2007 14:21
Corona Skin & SysInfo - обложка со встроенной проверкой системных требований. Добавил просмотр скриншотов и автонастройку на приложение. При распаковке проигрывается AVI, взятый из Vista Inspirat Pack.
Автор: Kirgyz
Дата сообщения: 20.06.2007 16:30
Victor_Dobrov
что-то при компиляции ругается

на строку 807 , столбец 42 в Corona.iss

сам не знаю, что там надо исправить

Добавлено:
Слушайте, вот у меня в инсталляторе во время установки идёт распаковка из 7-zip SFX архива. При всём этом,в инсталлере задумано проигрывание фоновой музыки с её контролем. Вот хотелось, чтобы при запуске распаковки воспроизведение музыки автоматически прекращалось (есть такой прикол, что музыка при распаковке тормозит. ну или её нельзя выключить, так как главное окно инсталятора при этом неактивно). Ну а после завершения распаковки, чтобы воспроизведение (по возможности желательно) продолжалось..

и ещё хочу спросить, мой SFX-архив весит около 1,5 может чуть будет больше ГБ. Это нормально вообще, такое использовать ? просто Ультра компрессия ИННо всёже не идеальна. а в самом 7-zip можно выбрать другие функции для увеличения сжатия. А сжатие мне очень очень нужно. У меня была мысль, что какой-либо антивирус, типа Касперского (ну или фаер ВИСТЫ), перед тем, как дать ИННО запустить распаковку будут проверять архив на наличие червей (он же всёт ки в формате EXE), и тем самым установка займёт уйму времени. Очень хочу услышать Ваше мнение, профессионалы.

Человеки помогите, всем зарнее спасибо! =)
Автор: Sampron
Дата сообщения: 20.06.2007 20:04
Kirgyz
В SFX-архиве измени расширение EXE на другое или вообще убери расширение.
Автор: Kirgyz
Дата сообщения: 20.06.2007 20:11
Sampron
В частности вариант поменять расширение, какое будет "этично" %) ?
Автор: Sampron
Дата сообщения: 20.06.2007 20:31
Kirgyz
Любое какое нравится например bin
Автор: Victor_Dobrov
Дата сообщения: 21.06.2007 00:41

Цитата:
что-то при компиляции ругается

Поставь InnoSetup-5.1.12 QuickStart Pack, скопируй папку Corona в папку Inno Setup 5, скачай get_hw_caps.dll (смотри ссылки в этой теме).
Автор: CapsLosk
Дата сообщения: 21.06.2007 01:35
Sampron

Цитата:
Да есть такой недостаток, дело в том что если кодек не установлен или кодек глючит то в инсталле видео не отображается.


На любом проигрывателе идет без проблем. Не идет именно в Inno.
А с DivX.dll можно ченить замутить?

Добавлено:
Victor_Dobrov

Цитата:
Corona Skin & SysInfo - обложка со встроенной проверкой системных требований. Добавил просмотр скриншотов и автонастройку на приложение. При распаковке проигрывается AVI, взятый из Vista Inspirat Pack.


При соглашении, на странице лицензии, как только ставим галочку - сразу происходит переход на следующую страницу без нажатия кнопки далее!
Автор: Kirgyz
Дата сообщения: 21.06.2007 09:02
помогите с этим


Цитата:
Слушайте, вот у меня в инсталляторе во время установки идёт распаковка из 7-zip SFX архива. При всём этом,в инсталлере задумано проигрывание фоновой музыки с её контролем. Вот хотелось, чтобы при запуске распаковки воспроизведение музыки автоматически прекращалось (есть такой прикол, что музыка при распаковке тормозит. ну или её нельзя выключить, так как главное окно инсталятора при этом неактивно). Ну а после завершения распаковки, чтобы воспроизведение (по возможности желательно) продолжалось..
Автор: Snake_60
Дата сообщения: 21.06.2007 14:09
Ребяты, опять я к вам с вопросом... Тема такая, надо в реестр офигенный кусок занести, файл в формате бла-бла-бла.reg есть, все значения прописывать в Inno не представляется возможным из-за размера, сами понимаете... Так вот, как можно организовать запуск этого файлика в фоновом режиме, чтобы без всяких лишних вопросов... Спс.
Автор: Kirgyz
Дата сообщения: 21.06.2007 14:14
Snake_60
Используй Inno Script Generator (ссылка в шапке). Там можно значения из REG файла в скрипт быстро импортировать

Добавлено:
2All

плиз, сори, я вас уже завалил этими вопросами про SFX-архив.

Но не моглди бы ещё мне подсказать (САМОЕ ВАЖНОЕ ДЛЯ МНУ), как сделать так, чтобы архив как только установился и сразу начал распаковываться, а не дожидался конца установки ???? а после извлечения удалялся, так же не дожидаясь конца установки

Срочно плиз ((
Автор: Snake_60
Дата сообщения: 21.06.2007 14:42
Kirgyz

Цитата:
Используй Inno Script Generator (ссылка в шапке). Там можно значения из REG файла в скрипт быстро импортировать

Спасибо... попробую.
Автор: Victor_Dobrov
Дата сообщения: 21.06.2007 15:50

Цитата:
При соглашении, на странице лицензии, как только ставим галочку - сразу происходит переход на следующую страницу без нажатия кнопки далее!

Так и задумано. Если не нравится, убери из процедуры LicenceAcceptedRadioOnClick команду WizardForm.NextButton.OnClick(WizardForm.NextButton).

Вопрос: как нарисовать линию на WizardForm?
Автор: Sampron
Дата сообщения: 21.06.2007 16:06
Victor_Dobrov
[Code]
procedure InitializeWizard();
var
Line: TBevel;
begin
Line:=TBevel.Create(WizardForm)
Line.Left:=20
Line.Top:=340
Line.Width:=200
Line.Height:=2
Line.Shape:=bsTopLine
Line.Parent:=WizardForm
end;
Автор: iTASmania_Inc
Дата сообщения: 21.06.2007 17:13
Victor_Dobrov
Хочу уменьшить в твоём скрипте количество состояний кнопки до двух (нажата -не нажата). Это получается надо только в UpdateButtons исправлять?
Автор: Kirgyz
Дата сообщения: 21.06.2007 17:42

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


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