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

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

Автор: DeKaNszn
Дата сообщения: 18.03.2009 19:24
nOobCrafter у меня не выкидывает ошибок
у тебя случаем не расширенная версия компилятора?
Автор: kombat 77
Дата сообщения: 18.03.2009 20:41
Artem_Butenko

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

Если так хочется, вот простой [more=способ]


[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.

[Files]
Source: "music.wav"; DestDir: "{app}"; Flags: ignoreversion;

[Code]

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

function InitializeUninstall(): Boolean;
begin
FileCopy(ExpandConstant('{app}\music.wav'), ExpandConstant('{tmp}\music.wav'), True);
Result := True;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
sndPlaySound(ExpandConstant('{tmp}\music.wav'), $0001);
end;

[/more]

Автор: DmitryKz
Дата сообщения: 19.03.2009 00:29
Ребята, может ли кто-нибудь посоветовать по такой теме:
хочу установщик своего софта сделать на сабже, сейчас он сделан на InstallShield. Ситуация двоякая: на компьютерах пользователей программа уже установлена. Сейчас выпускаю обновление, которое и хотел бы сделать на Inno Setup. Второй момент: полный инсталлятор тоже на Inno Setup, но и его могут использовать как обновление. Разница между обновлением и полным инсталлятором довольно значительна (3-4 и 35 мегабайт соответственно). Вот и вопрос возник (возможно, конечно, из области фантастики, но все ж задам): реально ли написать такой скрипт, который во 2-м случае (с полным инсталлятором) аккуратно деинсталлирует Шилдовскую установку, затем новая версия ставится с Инно. А в первом случае (обновление) возможно ли хоть через какую хитрозакрученную ж... заменить Шилдовскую установку? Обновление касается только нескольких библиотек и экзешника программы, плюс еще несколько новых файлов, которые не ставил Шилд; кроме них есть еще БД с сопутствующими файлами (именно они занимают главный объем), но она в обновлении не участвует. Я понимаю, что проще предложить пользователям штатно деинсталлировать первую установку. Но не все могут позволить себе скачать 35 мегабайт нового инсталлятора.
Надеюсь, из изложенного понятна проблематика, буду благодарен за любые советы, подсказки.
Автор: EagleSH
Дата сообщения: 19.03.2009 00:33

Цитата:
Я понимаю, что проще предложить пользователям штатно деинсталлировать первую установку. Но не все могут позволить себе скачать 35 мегабайт нового инсталлятора.

ничего личного, но неужто есть люди, живущие ПОД северным полюсом, для которых 35MB - это роскошь?
Автор: DmitryKz
Дата сообщения: 19.03.2009 00:57
EagleSH
Это не ответ, а рассуждение Неужто Вам даже здесь, на Ру-Борде, не встречались заявления, не могу скачать из-за объема, дорогой трафик и т.п.? Может, для Вас это будет открытием, но увы - 21 век не у всех на дворе. Ладно, это оффтоп, лучше по делу что-то скажите.
Автор: msatmb
Дата сообщения: 19.03.2009 01:35
Нет, что-то у меня явно с руками Попробовал скрипт что выкладывал WinstAn70, в котором сдвигается второй прогрессбар.... не работает. Т.е. извлечение идет из архивов, а полосочки не бегут. Для частоты эксперимента вставлял свой ехе в скрипт WinstAn70 и не заработало
Также не понял как общаться с этим rep Настроек там не много, но судя по всему влияют они на очень многие характеристики. Может уже кто-то имеет опыт общения с этой штукой Мне вообще эта штука нужна для того чтобы пожать игру В тылу врага. Там используются zip архивы переименованные в pak Так вот, хочется максимально сильно ужать без распаковки самих архивов (ибо очень долго будут распаковываться 15000 файлов ) Или подскажите как ужать без rep&precomp....
Автор: serg566
Дата сообщения: 19.03.2009 03:55
Подскажите какой Flags поставить в секции RUN чтоб программа запускалась после окончания установки и нажатия кнопки "Завершить"
[more]Filename: {app}\MyProg.exe; WorkingDir: {app}; Tasks: prog; Flags: ?????[/more]
Автор: skeptik_vdm
Дата сообщения: 19.03.2009 05:01
msatmb
А если использовать архиватор FreeArc для сжатия???

Добавлено:
serg566
Flags:postinstall
Автор: serg566
Дата сообщения: 19.03.2009 05:16
skeptik_vdm
После этого флага появляется в конце

можно его както убрать
Автор: skeptik_vdm
Дата сообщения: 19.03.2009 06:29
Тебе надо чтобы после нажатия кнопки Завершить запускалось приложение без всяких чекбоксов????
Автор: WinstAn70
Дата сообщения: 19.03.2009 09:02
msatmb
Вся беда в том что тот скрипт что выложил выше не как с архивами 7z там движение прогрессбара происходит по мере извлечения архива (извелякся продвинулся!). И нужно использовать минимум 2 архива!
с Rep я сам еще толком не юзал! Просто покопался малость в нем вытащил параметры что нашел и все!
serg566
Можно убрать! Всего вроде флаг поменять и снести часть строки Description: "{cm:LaunchProgram,Моя программа}";
Автор: nOobCrafter
Дата сообщения: 19.03.2009 09:50
DeKaNszn
у меня ошибка не при компиляции а при установке, когда я запускаю экзешник, оно в процессе инсталла ругается (!), последовательность такая:
доходим до установки файлов, происходит бэкап, происходит замены нескольких файлов, потом вылетает ошибка, ее закрываем и все продолжается дальше...как бы ничего плохого она не делает, но то что сама по себе вылетает это уже нехорошо.
P.S. елси ограничить список файлов даже до одного то ошибка всеравно имеет место, стало быть к списку файлов отношения не имеет.
Пользуюсь ScriptMaker 5.1.6.9

2 serg566 вроде так:

Код: [Run]
Filename: {app}\Converter\Converter.exe; Description: {cm:LaunchProgram,Конвертер баз}
Автор: DeKaNszn
Дата сообщения: 19.03.2009 11:03
nOobCrafter попробуй переименовать checking в check_updFunc (саму функцию и в секции [files])
Автор: nOobCrafter
Дата сообщения: 19.03.2009 11:15
соответственно название функции тоже переименовать? О_о

Код: Source: C:\paradox\*; DestDir: {app}\Paradox; Flags: ignoreversion recursesubdirs createallsubdirs; Components: Paradox; Check: check_updFunc()
.........
function check_updFunc():boolean;
begin
.......
Автор: serg566
Дата сообщения: 19.03.2009 14:12
skeptik_vdm
[more] [/more]
и при выборе "запустить после установки" программа должна запускатся после нажатия "Завершить" и в конце установки не было "Запустить MyProg.exe" это реализуемо?
Автор: DeKaNszn
Дата сообщения: 19.03.2009 15:40
nOobCrafter
скинь в лс ссылку на архив, в котором все, что у тебя используется для компиляции(файлы программы замени пустышками, скрипт - в том состоянии, в котором компилируешь)
если у меня опять не выскочит при запуске инсталла ошибка - значит проблема у тебя в inno
Автор: Sampron
Дата сообщения: 19.03.2009 15:41
serg566
Примерно [more=Так]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
OutputDir=.

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}

[Tasks]
Name: mytask; Description: MyDescription

[_Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
begin
if CurStep = ssDone then
if WizardForm.TasksList.Checked[0] then
Exec(ExpandConstant('{app}\MyProg.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
end;

[/more]
Автор: 4dmax
Дата сообщения: 19.03.2009 17:26
Народ, подскажите плиз! Весь хелп Inno перерыл нашел все что нужно и не нужно, а вот как сделать чтобы перед началом установки старая версия удалялась, не нашел. AppId этого приложения известно, поверх мне ставить не надо, а надо именно удалить старую версию и поставить новую. Или только через запуск uninst???.exe из каталога проги?
Автор: WinstAn70
Дата сообщения: 19.03.2009 18:29
4dmax
Допустим делаю в своих RePAck'ax так!
[more=Читать дальше..]function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr:string;
begin
Result:=True;
begin
//***** путь в реестре к индефикационному коду справки *****
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mass Effect_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
//***** отоброжаемая информация при обноружении индефикационного кода справки *****
if MsgBox('Программа установки обнаружила уже установленную программу ранней версии.' #13#13 'Вы хотите удалить существующую копию перед продолжением?', mbConfirmation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '/silent', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
then
//***** отоброжаемая информация при ошибки удаления *****
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end; [/more]
Автор: Krec13
Дата сообщения: 19.03.2009 20:24
У кого-нибудь есть файл unpack.exe? Знаю, cdman его использует в своих репаках.
Автор: serg566
Дата сообщения: 19.03.2009 21:21
Sampron
Спасиб все работает
Автор: chelobey
Дата сообщения: 19.03.2009 22:39
подскажите, можно ли убрать или скрать заголовок окна инсталятора... там, где setup, а далее название приложения из appname?
Автор: EagleSH
Дата сообщения: 19.03.2009 23:09
chelobey

Цитата:
подскажите, можно ли убрать или скрать заголовок окна инсталятора... там, где setup, а далее название приложения из appname?

WizardForm.Caption := '';
Автор: DeKaNszn
Дата сообщения: 19.03.2009 23:10
nOobCrafter
у меня не вылетело ошибки, как я не играл с параметрами
ссылка в лс
Автор: nOobCrafter
Дата сообщения: 20.03.2009 14:23
DeKaNszn
ммм... это может магия или как?.. у меня скомпиленная тобой инсталяшка дает ошибку, сразу говорю что я тестирую только режим обновления, то есть раз ставишь софт, а потом уже ставишь обновление и только его, все отстальные опции отключаешь.. ошибку выдает.
Автор: chelobey
Дата сообщения: 20.03.2009 16:12
помогите создать на основе [more=этого кода...]
Код: [Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
WindowVisible=yes
WindowShowCaption=no

[no][Code][/no]
var
FormRegion : tHandle;
InnerRegion : tHandle;

const
RGN_DIFF = 4;
radius = 1000;

function CreateRoundRectRgn(p1, p2, p3, p4, p5, p6: Integer): THandle;
external 'CreateRoundRectRgn@gdi32 stdcall';

function CombineRgn(p1, p2, p3: THandle; p4: Integer): Integer;
external 'CombineRgn@gdi32 stdcall';

function SetWindowRgn(hWnd: HWND; hRgn: THandle; bRedraw: Boolean): Integer;
external 'SetWindowRgn@user32 stdcall';

procedure ShapeForm(aForm : TForm; edgeSize : integer);
begin
FormRegion := CreateRoundRectRgn(0,0, aForm.width, aForm.height, edgeSize,
edgeSize);
CombineRgn(FormRegion, FormRegion, InnerRegion, RGN_DIFF);
SetWindowRgn(aForm.Handle, FormRegion, True);
end;

procedure InitializeWizard();
begin
ShapeForm(MainForm, radius);
end;
Автор: Rover 2000
Дата сообщения: 20.03.2009 16:54
Всем день добрый,хотел бы узнать,как засунуть архив в установку(игры),чтоб во время установки он автоматически их разархивировал?
И чем лучше всего сжимать?
Автор: clemenco
Дата сообщения: 20.03.2009 17:02
Поможет кто с этим ?
Автор: msatmb
Дата сообщения: 20.03.2009 17:33

Цитата:
А если использовать архиватор FreeArc для сжатия???

И какие параметры архивирования использовать? Я делаю просто -max, но сжимается не так уж и сильно. Может есть какие-то уловки при работе с архивами?


Цитата:
Вся беда в том что тот скрипт что выложил выше не как с архивами 7z там движение прогрессбара происходит по мере извлечения архива (извелякся продвинулся!). И нужно использовать минимум 2 архива!

Да это я уже понял, когда разместил два архива А жаль что не получается как с 7z....
Автор: DeKaNszn
Дата сообщения: 20.03.2009 17:58

Цитата:
Поможет кто с этим?


clemenco
S:=ExpandConstant('{app}');

S - будет содержать путь

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: в очередной раз босудим антивиры?


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