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

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

Автор: Qarma
Дата сообщения: 17.04.2009 17:50
Почему у меня извлекает только из 3 архивов?
Хотя прописано 6 штук
[more]procedure CurStepChanged(CurStep: TSetupStep); ///Ðåãèñòðàöèÿ â GameExplorer
var
Binary, MainExe: String;
ResultCode:Integer;
begin
if CurStep = ssInstall then //Ïåðåä óñòàíîâêîé
begin
GenerateGUID(GUID);
ExtractTemporaryFile('arc.exe'); //Èçâëå÷åíèå Arc.exe â Temp
begin
WizardForm.StatusLabel.Caption:='Ðàñïàêîâêà ôàéëîâ...';//Èçâëå÷åíèå èç 1-ãî àðõèâà
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-a.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}\nativePC\ZZPack1')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

WizardForm.StatusLabel.Caption:='Ðàñïàêîâêà ôàéëîâ...'; //Èçâëå÷åíèå èç 2-ãî àðõèâà
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-b.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}\nativePC\ZZPack1')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+2

WizardForm.StatusLabel.Caption:='Ðàñïàêîâêà ôàéëîâ...'; //Èçâëå÷åíèå èç 3-ãî àðõèâà

Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-c.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}\nativePC\ZZPack1')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

WizardForm.StatusLabel.Caption:='Ðàñïàêîâêà ôàéëîâ...'; //Èçâëå÷åíèå èç 4-ãî àðõèâà

Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-d.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}\nativePC\ZZPack2')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

WizardForm.StatusLabel.Caption:='Ðàñïàêîâêà ôàéëîâ...'; //Èçâëå÷åíèå èç 5-ãî àðõèâà

Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-e.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}\nativePC\ZZPack2')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

WizardForm.StatusLabel.Caption:='Ðàñïàêîâêà ôàéëîâ...'; //Èçâëå÷åíèå èç 6-ãî àðõèâà
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-f.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}\nativePC\ZZPack2')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+2



end;
end;
end;[/more]
Автор: Yoldosh
Дата сообщения: 17.04.2009 18:25
как закрасить маленькую полоску отмеченное красним
Автор: spider91
Дата сообщения: 17.04.2009 18:48
Qarma


вроде все правильно.

архивы лежат рядом с инсталом или некоторые на 2ом диске?


doombuster


спасибо. щас буду разбиратся
Автор: Qarma
Дата сообщения: 17.04.2009 18:52

Цитата:
архивы лежат рядом с инсталом или некоторые на 2ом диске?

Нет...там неправильные имена архивов были
А можно сделать чтобы половину из них на 2-й диск ложить было
Автор: spider91
Дата сообщения: 17.04.2009 18:58
можно. тебе ведь недавно давали код для того что б инсталл останавливался и просил 2ой диск. примени его здесь и все
Автор: doombuster
Дата сообщения: 17.04.2009 19:01
spider91
В руководстве по расширенным возможностям Inno Setup от Kindly, в папке \Scripts\SourceScript есть полный скрипт инсталла руководства) Там очень хороший пример, как скинить форму и кнопки

Я по нему сделал этот инсталл:
http://s51.radikal.ru/i133/0904/79/1addfaf635ff.jpg
Автор: Qarma
Дата сообщения: 17.04.2009 19:01
Точно, спс.
Автор: spider91
Дата сообщения: 17.04.2009 19:03
doombuster

ок. щас посмотрю. спасибо

Добавлено:
ураааа!!! наконецто запчасти для компа привезли. все, бросаю скрипты и иду собирать комп и ставить винду
Автор: chelobey
Дата сообщения: 17.04.2009 20:40
В [more=коде...]
Код: [Setup]
AppName=Application
AppVerName=Application [Version]
DefaultDirName={pf}\Application

[Files]
Source: button.bmp; DestDir: {tmp}; Flags: dontcopy nocompression
Source: flash.bmp; DestDir: {tmp}; Flags: dontcopy nocompression

[no][Code][/no]

const
ButtonWidth = 80;
ButtonHeight = 23;

bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;

Var
ButtonPanel: array [0..4] of TPanel;
ButtonImage: array [0..4] of TBitmapImage;
ButtonLabel: array [0..4] of TLabel;

WizardImage, FlashImage: TBitmapImage;
FlashButton: Tpanel;
FlashLabel: TLabel;

procedure ButtonLabelClick(Sender: TObject);
var
Button: TButton;
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
case TLabel(Sender).Tag of
bidBack: Button:=WizardForm.BackButton
bidNext: Button:=WizardForm.NextButton
bidCancel: Button:=WizardForm.CancelButton
bidDirBrowse: Button:=WizardForm.DirBrowseButton
bidGroupBrowse: Button:=WizardForm.GroupBrowseButton
else
Exit
end
Button.OnClick(Button)
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then
ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth

FlashImage.Left:=-29 // анимация объекта
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
FlashImage.Left:=0 // анимация объекта
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
Image: TBitmapImage;
Panel: TPanel;
Labl: TLabel;

begin
Panel:=TPanel.Create(WizardForm)
Panel.Left:=AButton.Left
Panel.Top:=AButton.Top
Panel.Width:=AButton.Width
Panel.Height:=AButton.Height
Panel.Tag:=AButtonIndex
Panel.Parent:=AButton.Parent
ButtonPanel[AButtonIndex]:=Panel

Image:=TBitmapImage.Create(WizardForm)
Image.Width:=160
Image.Height:=23
Image.Enabled:=False
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'))
Image.Parent:=Panel
ButtonImage[AButtonIndex]:=Image

with TLabel.Create(WizardForm) do begin
Tag:=AButtonIndex
Parent:=Panel
Width:=Panel.Width
Height:=Panel.Height
Transparent:=True
OnClick:=@ButtonLabelClick
OnDblClick:=@ButtonLabelClick
OnMouseDown:=@ButtonLabelMouseDown
OnMouseUp:=@ButtonLabelMouseUp
end

Labl:=TLabel.Create(WizardForm)
Labl.Left:=7
Labl.Top:=2
Labl.Autosize:=True
Labl.Alignment:=taCenter
Labl.Tag:=AButtonIndex
Labl.Transparent:=True
Labl.Font.Color:=clWhite
Labl.Font.Name:='Tahoma'
Labl.Font.Size:=10
Labl.Caption:=AButton.Caption
Labl.OnClick:=@ButtonLabelClick
Labl.OnDblClick:=@ButtonLabelClick
Labl.OnMouseDown:=@ButtonLabelMouseDown
Labl.OnMouseUp:=@ButtonLabelMouseUp
Labl.Parent:=Panel
ButtonLabel[AButtonIndex]:=Labl
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
ButtonLabel[AButtonIndex].Caption:=AButton.Caption
ButtonPanel[AButtonIndex].Visible:=AButton.Visible
ButtonLabel[AButtonIndex].Enabled:=Abutton.Enabled
end;

procedure InitializeWizard;
begin

ExtractTemporaryFile('button.bmp')
ExtractTemporaryFile('flash.bmp')

FlashButton := TPanel.Create(WizardForm); // создание объекта
FlashButton.Left := 10;
FlashButton.Top := 325;
FlashButton.Width := 29;
FlashButton.Height := 27;
FlashButton.Parent := WizardForm;

FlashImage:=TBitmapImage.Create(WizardForm)
FlashImage.Left:=0;
FlashImage.Top:=0;
FlashImage.Width:=58;
FlashImage.Height:=27;
FlashImage.Enabled:=False;
FlashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\flash.bmp'));
FlashImage.Parent:=FlashButton;

FlashLabel := TLabel.Create(WizardForm);
FlashLabel.Width := 29;
FlashLabel.Height := 27;
FlashLabel.Autosize := False;
FlashLabel.Transparent := True;
FlashLabel.OnMouseDown := @ButtonLabelMouseDown;
FlashLabel.OnMouseUp := @ButtonLabelMouseUp;
FlashLabel.Parent := FlashButton;

WizardForm.BackButton.Left:=293
WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight

WizardForm.NextButton.Left:=375
WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight

WizardForm.CancelButton.Left:=211
WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight

WizardForm.DirBrowseButton.Top:=67
WizardForm.DirBrowseButton.Left:=335
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Top:=200
WizardForm.GroupBrowseButton.Left:=375
WizardForm.GroupBrowseButton.Width:=ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
UpdateButton(WizardForm.DirBrowseButton,bidDirBrowse)
UpdateButton(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;
Автор: kombat 77
Дата сообщения: 17.04.2009 22:40
ChVL

Цитата:
деинсталлятор сам себя не удаляет. Как решить сию проблему?

И не будет, так как не выгружен из памяти. Здесь нечто подобное уже обсуждали, нужно через батник.
Автор: ChVL
Дата сообщения: 17.04.2009 23:30
kombat 77
Меня устроило изящное решение, предложенное omals (спасибо!) на предыдущей странице. Файл удаляется автоматически после перезагрузки.
Автор: kombat 77
Дата сообщения: 17.04.2009 23:56
ChVL

Цитата:
Меня устроило изящное решение, предложенное omals

ok., с батником без перезагрузки.
Автор: spider91
Дата сообщения: 18.04.2009 01:06
можно ли засунуть картинку туда где красным?





Добавлено:



как мне здесь указать страницу перед установкой, там где уже не кнопка далее а установить?



Код:
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=????????????
Автор: DeKaNszn
Дата сообщения: 18.04.2009 11:10
spider91


Цитата:
можно ли засунуть картинку туда где красным?


вот участок кода:


Код: [no][Files]
Source: image.bmp; DestDir: {tmp}; Flags: dontcopy noencryption


Код:
var
BevelImage: TBitmapImage;
procedure InitializeWizard();
begin
ExtractTemporaryFile('image.bmp');
BevelImage:= TBitmapImage.Create(WizardForm);
BevelImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\image.bmp'));
BevelImage.SetBounds(0, ClientHeight - 36, ClientWidth, 36);
BevelImage.Parent:= WizardForm;
BevelImage.Stretch:= True;
end;[/no]
Автор: spider91
Дата сообщения: 18.04.2009 11:55
DeKaNszn


спасибо. но пишет unknown identifier ClientHeight



Добавлено:

Цитата:
если нет, то по умолчанию там уже "Установить"



а можно тут подробней... нехочется отключать последнюю страницу перед установкой а как она называется в коде я незнаю
Автор: Kilyan
Дата сообщения: 18.04.2009 12:28
Inno Setup 5.24 Beta 2009-03-16
[more=Revision History]
5.2.5-dev (?)
.NET support changes (these cause an internal error if used on a system with no .NET Framework present):
Added new [Files] section flag: gacinstall.
Added new [Files] section parameter: StrongAssemblyName.
Added new constants: {regasmexe}, {regasmexe32}, {regasmexe64}.
Pascal Scripting: Added new MinimizePathName support function.

5.2.4-dev (2009-03-16)
Added new [Registry] section ValueType: qword.
Added new [Setup] section directive: SignTool, which makes it possible to further automate digital signing of Setup and Uninstall. See the help file for more information.
The value of the AppVersion directive is now also used to set the MajorVersion and MinorVersion values in the Uninstall registry key when possible.
IDE changes:
Added new Tools | Configure Sign Tools... command.
Command line compiler changes:
Added new "/S" parameter to specify a Sign Tool.
Added new [Files] section flag: sortfilesbyname.
[/more]
Автор: alexdemon
Дата сообщения: 18.04.2009 19:22
У меня такой вопрос я создал скрипт для игры там когда игра устанавливается нужно штоб в конце запустился setup.bat и начал распаковываться (батник сделан так что когда его запускаешь он пишет "Для продолжения нажмите любую клавишу...") у меня он запускается, но распаковка не начинается пока не нажмешь любую клавишу, как можно сделать так чтоб он запускался и автоматически сразу распаковывался. Запуск батника назначен в секции [Run]. Пример:

[Run]
Filename: "{app}\setup.bat"; Parameters: ;WorkingDir: "{app}"; StatusMsg: "Идет распаковка данных, пожалуйста подождите...";

Мне кажется нужно прописать какойнибудь Parameters:
Я в проге Inno Setup слабовато шарю сам учился кто знает как сделать подскажите.
и еще кто знает напишите все константы и их значени для секции [Run]- Parameters:
Автор: kombat 77
Дата сообщения: 18.04.2009 19:29
alexdemon

Цитата:
(батник сделан так что когда его запускаешь он пишет "Для продолжения нажмите любую клавишу...")

а батник переписАть пробовал, чтоб без вопросов было.
Автор: Qarma
Дата сообщения: 18.04.2009 19:38
Посмотрел скрипт злогодеда, точнее участок скрипта - логотип. И подумал...можно ли сделать чтобы лого было png с прозрачностью, а не bmp, которое надо рисовать целый час...

Добавлено:
Поможет кто, реализовать это?
Автор: Artem1143
Дата сообщения: 18.04.2009 20:12
Qarma
А почему БМП час рисовать ???
пробовал конвертировать в бмп сохряняя прозрачность (из тогоже ПНГ)
есть скперская прога работает с контекстного меню Right Click image Converter очь Удобная Штукаи прозрачность в БМП делает если из пнг конвертить
Автор: Qarma
Дата сообщения: 18.04.2009 20:24
Попробуем....но решить бы ту проблему хотел...
Бмп час, потому что он должен быть с краёв резким.....а если будет не резким то будет в инсталлере отображатся не корректно
Автор: alexdemon
Дата сообщения: 18.04.2009 20:25
кто знает как в скрипте назначить на ярлык от программы который ставится на робочий стол иконку картинку с расширением icon.ico . Иконка находится в папке с программой что нужно прописать например:

[Icons]
Name: "{group}\Warhammer 40000 Dawn of War 2"; Filename: "{app}\xlive_start.exe"; WorkingDir: "{app}";
Name: "{userdesktop}\Warhammer 40000 Dawn of War 2"; Filename: "{app}\xlive_start.exe"; WorkingDir: "{app}"; Tasks: desktopicon;
Name: "{group}\{cm:UninstallProgram,Warhammer 40000 Dawn of War 2}"; Filename: "{uninstallexe}"
Автор: doombuster
Дата сообщения: 18.04.2009 20:33
alexdemon
[more]
[Icons]
Name: "{group}\Warhammer 40000 Dawn of War 2"; Filename: "{app}\xlive_start.exe"; WorkingDir: "{app}"; IconFilename: "{app}\icon.ico"
Name: "{userdesktop}\Warhammer 40000 Dawn of War 2"; Filename: "{app}\xlive_start.exe"; WorkingDir: "{app}"; IconFilename: "{app}\icon.ico"; Tasks: desktopicon;
Name: "{group}\{cm:UninstallProgram,Warhammer 40000 Dawn of War 2}"; Filename: "{uninstallexe}"
[/more]
Автор: Qarma
Дата сообщения: 18.04.2009 20:42
А мне кто поможет?))
Автор: alexdemon
Дата сообщения: 18.04.2009 21:08
kombat 77
я в батниках не шарю он уже готовый был. А чё какой нибудь параметр прописать нельзя чтоб он сам запускался
Автор: doombuster
Дата сообщения: 18.04.2009 21:18
alexdemon
Че в батнике написано покажи) И тебе напишут код)
Автор: alexdemon
Дата сообщения: 18.04.2009 21:24
doombuster
а как сюда картинку вставить

Добавлено:
doombuster
вот картинка батника http://imageshost.ru/links/ff0f966359d5b883e062185e240b6841
Автор: doombuster
Дата сообщения: 18.04.2009 21:37
alexdemon

В шапке есть коллекция скриптов, вот прям от туда скрипт, как батник запускать:
[more][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: compiler:InnoCallback.dll; Flags: dontcopy
Source: test.bat; DestDir: {tmp}; AfterInstall: Unpack(); Flags: ignoreversion

[Code]
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

var
TimerID: LongWord;

function WrapTimerProc(callback:TProc; paramcount:integer):longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
with WizardForm.ProgressGauge do
Position:= (Position + 1) mod Max;
end;

procedure Unpack();
var
ResultCode: Integer; pfunc: LongWord;
begin
WizardForm.ProgressGauge.Position:= 0;
WizardForm.ProgressGauge.Max:= 100;

pfunc:= WrapTimerProc(@OnTimer, 4);
TimerID:= SetTimer(0, 0, 50, pfunc);
Exec(ExpandConstant('{tmp}\test.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID);
end;[/more]

Качай всё, что есть в шапке, и разбирайся) Все dll есть в Руководстве по расширенным возможностям Inno Setup 5.1

Ну а в самом батнике надо убрать всякие pause
короче сам батник куданить залей, на АйПапку)
Автор: msatmb
Дата сообщения: 18.04.2009 21:56
alexdemon
Ищи в батнике вот такую строчку

Код:
echo ЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫxЫ
echo.
pause
Автор: alexdemon
Дата сообщения: 18.04.2009 22:00
msatmb
я уже поубирал эти паузы сейчас сижу тестирую

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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