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

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

Автор: SotM
Дата сообщения: 23.04.2009 19:43
spider91

Цитата:
как можно сделать возможной отмену при распаковке внешних архивов

Помоему в данном случае стандартными методами нельзя прекратить. Это же внешний процесс и управление Inno вернется только после завершения распаковки.
Мысли вслух: может каким нибудь образом сделать перехватчик клавиатуры и делать проверку клавишы Esc, например...

2All:
В шапку темы добавил ссылку на Inno Setup 5.2.4-dev, и также изменил ссылку на более свежую версию расширенной версии от ResTools.


Цитата:
И ссылку на тему желательно сюда кинуть

Может уже где-нибудь на Ru-Board'е есть подобные темы, т.е. посвященные архивированию. Вы найдите подобные, начните обсуждение там, и в шапке этой темы можно оставить ссылку, чтобы подобные вопросы всё таки обсуждались там, а не здесь.
Автор: SiluetPro
Дата сообщения: 23.04.2009 19:50
msatmb, молодец, сразу понял о чём речь и чётко разъяснил! большое тебе спасибо! уважаю!
Автор: msatmb
Дата сообщения: 23.04.2009 19:54
SiluetPro
Нада было тебе сразу сказать про

Цитата:
что находится (Создать ярлык на Рабочем столе) на странице выбора директории

Автор: spider91
Дата сообщения: 23.04.2009 19:55
SotM


Oк, хотя в длл для распаковки 7-zip можно отменить процесс, может подомным способом можно без длл сделать?

и еще не знаеш как сделать чтоб инсталятор можно было двигать во время распаковки архивов?
Автор: msatmb
Дата сообщения: 23.04.2009 20:03
Попробую тоже вернуться к своему вопросу
Подскажите как объединить вот [more=этот]
#define TIME_FOR_VIEW 15
[Code]
////////////////////////////////////////////////////
{Установка слайдшоу на окне инсталятора}
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

var
TimerID: LongWord;
currTime: Integer;
SplashImage: TBitmapImage;

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
currTime := currTime + 1;
case currTime of
{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_2.bmp')) end;
2*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_3.bmp')) end;
3*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_4.bmp')) end;
4*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_5.bmp')) end;
5*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_6.bmp')) end;
6*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_7.bmp')) end;
7*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_8.bmp')) end;
8*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_9.bmp')) end;
9*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_10.bmp'))end;
end;
if CurrTime = 9*{#TIME_FOR_VIEW} then CurrTime := -1;
end;
///////////////////////////////////////////////////

procedure InitializeWizard();
begin
///////////////////////////////////////////////////////////
{Изменение окна инсталятора с пермещение прогрессбара}
ExtractTemporaryFile('Image_1.bmp');
ExtractTemporaryFile('Image_2.bmp');
ExtractTemporaryFile('Image_3.bmp');
ExtractTemporaryFile('Image_4.bmp');
ExtractTemporaryFile('Image_5.bmp');
ExtractTemporaryFile('Image_6.bmp');
ExtractTemporaryFile('Image_7.bmp');
ExtractTemporaryFile('Image_8.bmp');
ExtractTemporaryFile('Image_9.bmp');
ExtractTemporaryFile('Image_10.bmp');

currTime := 0;

WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Top := WizardForm.CancelButton.Top + 10;
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Width := WizardForm.Width - WizardForm.CancelButton.Width - ScaleX(40);
WizardForm.ProgressGauge.Height := 12;
WizardForm.ProgressGauge.Hide;
WizardForm.StatusLabel.Parent := WizardForm;
WizardForm.StatusLabel.Left := ScaleX(10);
WizardForm.StatusLabel.Width := WizardForm.ProgressGauge.Width;
WizardForm.StatusLabel.Top := WizardForm.ProgressGauge.Top - ScaleY(18);
WizardForm.StatusLabel.Hide;

SplashImage := TBitmapImage.Create(WizardForm);
SplashImage.Top := 0;
SplashImage.Left := 0;
SplashImage.Width := WizardForm.MainPanel.Width;
SplashImage.Height := WizardForm.Bevel.Top;
SplashImage.Parent := WizardForm.InnerPage;
SplashImage.Stretch := True;
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_1.bmp'));
SplashImage.Hide;
///////////////////////////////////////////////////////////
end;
procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
begin
/////////////////////////////////////////
{Здесь код показа на странице Инсталл измененного прогрессбара}
if (CurPageID = wpInstalling) then
begin
pfunc := WrapTimerProc(@OnTimer, 5);
TimerID := SetTimer(0, 0, 1000, pfunc);

WizardForm.InnerNotebook.Hide;
WizardForm.Bevel1.Hide;
WizardForm.MainPanel.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;


WizardForm.ProgressGauge.Show;
SplashImage.Show;
WizardForm.StatusLabel.Show;

WizardForm.CancelButton.Enabled :=True;
end
else
begin

WizardForm.ProgressGauge.Hide;
SplashImage.Hide;
WizardForm.StatusLabel.Hide;
//WizardForm.FilenameLabel.Hide;

if (CurPageID > wpInstalling) and (CurPageID < wpFinished) then
begin
WizardForm.InnerNotebook.Show;
WizardForm.Bevel1.Show;
WizardForm.MainPanel.Show;
WizardForm.PageNameLabel.Show;
WizardForm.PageDescriptionLabel.Show;
end;

end;
//////////////////////////////////////////////////////////////
end;
[/more] код
с запуском [more=bat-ника]
[Files]
Source: 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;
[/more], но так, чтобы слайд-шоу после того как начал работать батник не полетело с огромной скоростью, а отрабатывало то время на картинку что ему было задано в первом коде. Понимаю, что что-то надо добавить, но вот что....иль объединить по умному

Автор: spider91
Дата сообщения: 23.04.2009 20:24
вопрос наверно уже задавался не раз но в стольких страницах можно неделю искать ответ.
как сделать чтоб появились чекбоксы "дополнительное програмное обеспечение:" и "дополнительные значки:" и чтоб при снятии с них галки, галки всех елементов внутри них пропадали и наоборот?
Автор: SiluetPro
Дата сообщения: 23.04.2009 20:27
как изменить размер и название кнопки "далее"?
Автор: spider91
Дата сообщения: 23.04.2009 20:40
SiluetPro


Код: procedure CurPageChanged(CurPageID: Integer);
begin
TButton(WizardForm.FindComponent('NextButton')).Caption:='name >';
end;
Автор: SiluetPro
Дата сообщения: 23.04.2009 20:52
spider91, а размер?
Автор: spider91
Дата сообщения: 23.04.2009 20:54
SiluetPro

ето незнаю
Автор: doombuster
Дата сообщения: 23.04.2009 20:59
spider91

Цитата:
вопрос наверно уже задавался не раз но в стольких страницах можно неделю искать ответ.
как сделать чтоб появились чекбоксы "дополнительное програмное обеспечение:" и "дополнительные значки:" и чтоб при снятии с них галки, галки всех елементов внутри них пропадали и наоборот?


http://forum.ru-board.com/topic.cgi?forum=5&topic=29117&start=737&limit=1&m=1

И вот от седа читай: http://forum.ru-board.com/topic.cgi?forum=5&topic=27438&start=1917

В поиск введи: ComponentsListTVStyle=true , и все ответы получишь)
Автор: SiluetPro
Дата сообщения: 23.04.2009 21:05
как изменить размер кнопки "далее"?
Автор: spider91
Дата сообщения: 23.04.2009 21:30
doombuster

спасибо. потом буду разбиратся
Автор: DeKaNszn
Дата сообщения: 23.04.2009 21:34
SiluetPro

добавь в код:

Код: [no]WizardForm.NextButton.Caption:='Текст';
WizardForm.NextButton.Width:=70;
WizardForm.NextButton.Height:=30;[/no]
Автор: SotM
Дата сообщения: 23.04.2009 21:52
spider91
Неделю не нужно искать, вверху есть ссылка "Версия для печати". Загрузи, сохрани, и спокойно затем ищи. Очень полезная вещь.
И выложи свой скрипт, чтобы я мог посмотреть где, что, когда...
Автор: SiluetPro
Дата сообщения: 23.04.2009 22:01
spider91, DeKaNszn спасибо вам! ещё вопросец, как изменить местоположение кнопки далее?
Автор: spider91
Дата сообщения: 23.04.2009 22:06
SotM

срипт не 1 нужно чтоб и на других работало, но вот посмотри [more=ето][Setup]
AppName=Call of Duty 4 - Modern Warfare (RePack by spider91)
AppVerName=Call of Duty 4 - Modern Warfare
DefaultDirName={pf}\Activision\Call of Duty 4 - Modern Warfare
DefaultGroupName=Call of Duty 4 - Modern Warfare
AllowNoIcons=yes
OutputBaseFilename=setup
Compression=lzma/ultra64
SolidCompression=yes
WizardSmallImageFile=C:\Users\Dmitri\Desktop\small.bmp
WizardImageFile=C:\Users\Dmitri\Desktop\big.bmp
SetupIconFile=C:\Users\Dmitri\Desktop\icon.ico
ExtraDiskSpaceRequired=5628202036
UninstallFilesDir={app}\Uninstall

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "sp"; Description: "Создать ярлык на рабочем столе для одиночной игры (SP)"; GroupDescription: "{cm:AdditionalIcons}";
Name: "mp"; Description: "Создать ярлык на рабочем столе для игры по интернету (MP)"; GroupDescription: "{cm:AdditionalIcons}";
Name: "dx"; Description: "Обновить DirectX"; GroupDescription: "Дополнительное программное обеспечение:";
Name: "vc"; Description: "Установить Microsoft Visual C++ 2005 SP1 Redist"; GroupDescription: "Дополнительное программное обеспечение:";


[Registry]
Root: HKLM; Subkey: "SOFTWARE\Activision"; ValueType: String; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueType: String; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "InstallPath"; ValueType: String; ValueData: "{app}";
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "InstallDrive"; ValueType: String; ValueData: "{src}";
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "Language"; ValueType: String; ValueData: "rus";
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "Version"; ValueType: String; ValueData: "1.0";
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "UninstallString"; ValueType: String; ValueData: "{pf}\InstallShield Installation Information\{{E48469CC-635E-4FD5-A122-1497C286D217}\uninstall.exe -runfromtemp -l0x0419";
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "EXEStringS"; ValueType: String; ValueData: "{app}\iw3sp.exe";
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "EXEStringM"; ValueType: String; ValueData: "{app}\iw3mp.exe";
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "QA"; ValueType: String; ValueData: "5.1";
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "Techhelp"; ValueType: String; ValueData: "{app}\Docs\Help\readme.htm";
Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "codkey"; ValueType: String; ValueData: "4MTMMLLUEWQMMGM485F4";


[LangOptions]
WelcomeFontName=Tahoma
WelcomeFontSize=11


[UninstallDelete]
Type: filesandordirs ; Name: "{app}";

[Files]
Source: C:\Users\Dmitri\Desktop\splash.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\Users\Dmitri\Desktop\w\*; DestDir: "{app}"; Flags: ignoreversion overwritereadonly recursesubdirs createallsubdirs
Source: {src}\GameData\*; DestDir: "{app}"; Flags: ignoreversion overwritereadonly recursesubdirs createallsubdirs external
Source: C:\Program Files (x86)\Inno Setup Scripting v5.1\Scripts\Buttons\button3.bmp; DestDir: {tmp}; Flags: dontcopy



[Code]
const
ButtonWidth = 80; //Указываем размер кнопок
ButtonHeight = 23;
bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;


var
ProgressBar1: TNewProgressBar;
PageNameLabel, PageDescriptionLabel: TLabel;
ButtonPanel: array [0..4] of TPanel;
ButtonImage: array [0..4] of TBitmapImage;
ButtonLabel: array [0..4] of TLabel;
SplashImage: TBitmapImage;
SplashForm: TForm;
SplashFileName: String;
I : Integer;





procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=False;
Confirm:=False;
if MsgBox('Вы действительно хотите отменить установку Call of Duty 4 - Modern Warfare ?', mbError, MB_YESNO) = idYes
then
Cancel:=true;
end;



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
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonImage[TLabel(Sender).Tag].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}\button3.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:=15 //Указываем положение текста
Labl.Top:=5
Labl.Autosize:=True
Labl.Alignment:=taCenter
Labl.Tag:=AButtonIndex
Labl.Transparent:=True
Labl.Font.Color:=clWhite //Цвет текста
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 LicenceAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=True
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=False
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpReady then
begin
TButton(WizardForm.FindComponent('NextButton')).Caption:='Установка';
end
else
begin
if CurPageID=wpFinished then
begin
TButton(WizardForm.FindComponent('NextButton')).Caption:='Выход';
end
else
begin
TButton(WizardForm.FindComponent('NextButton')).Caption:='Вперед >';
end;
end;

TButton(WizardForm.FindComponent('BackButton')).Caption:='< Назад';
TButton(WizardForm.FindComponent('CancelButton')).Caption:='Выход';
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption;

end;


procedure InitializeWizard();
begin

SplashFileName := ExpandConstant('{tmp}\splash.bmp');
ExtractTemporaryFile(ExtractFileName(SplashFileName));

SplashForm := TForm.create(nil);
with SplashForm do
begin
BorderStyle := bsNone;
Position := poScreenCenter;
ClientWidth := 578;
ClientHeight := 210;
end;

SplashImage := TBitmapImage.Create(SplashForm);
with SplashImage do
begin
Bitmap.LoadFromFile(SplashFileName);
Stretch := true;
Align := alClient;
Parent := SplashForm;
end;

with SplashForm do
begin
Show;
for I := 1 to 1 do
begin
Repaint;
Sleep(4000);
end;
Close;
Free;
end;

WizardForm.Position:=poScreenCenter;
WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight
WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight
WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight
WizardForm.DirBrowseButton.Left:=337
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight
WizardForm.GroupBrowseButton.Left:=337
WizardForm.GroupBrowseButton.Width:=ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight
WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick
WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick
ExtractTemporaryFile('button3.bmp')
LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
PageNameLabel:= TLabel.Create( WizardForm );
PageNameLabel.Left:= WizardForm.PageNameLabel.Left;
PageNameLabel.Top:= WizardForm.PageNameLabel.Top;
PageNameLabel.Transparent:= True;
PageNameLabel.Font.Style:= [fsBold];
PageNameLabel.Font.Color:= clWhite;
PageNameLabel.Parent:= WizardForm.MainPanel;
PageDescriptionLabel:= TLabel.Create( WizardForm );
PageDescriptionLabel.Left:= WizardForm.PageDescriptionLabel.Left;
PageDescriptionLabel.Top:= WizardForm.PageDescriptionLabel.Top;
PageDescriptionLabel.Transparent:= True;
PageDescriptionLabel.Font.Color:= clWhite;
PageDescriptionLabel.Parent:= WizardForm.MainPanel;
WizardForm.WizardSmallBitmapImage.Left:= ScaleX(0);
WizardForm.WizardSmallBitmapImage.Width:=WizardForm.ClientWidth;
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
WizardForm.FileNameLabel.Visible:=False;
WizardForm.ProgressGauge.Top:=ScaleY(65);
WizardForm.ProgressGauge.Width:=280;
WizardForm.ProgressGauge.Left:=120;
WizardForm.StatusLabel.Top:=ScaleY(29);
WizardForm.WelcomeLabel2.Top:=ScaleY(90);
ProgressBar1 := TNewProgressBar.Create(wizardform);
with ProgressBar1 do
begin
Parent := wizardform.installingpage;
Top := 65;
Width := 110;
Height := wizardform.progressgauge.height;
Max :=37;
end;
end;




procedure CurStepChanged(CurStep: TSetupStep);
var
res:Integer;
s,s1:string;
begin
If CurStep=ssInstall
then
begin

s:=ExpandConstant('{src}')+'\data.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

s:=ExpandConstant('{src}')+'\zone1.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+2

Exec(ExpandConstant('{app}\precomp.exe'), ' -r zone1.pcf ', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\zone1.pcf'));

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+3

Exec(ExpandConstant('{app}\zone1.exe'), ' -y ', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\zone1.exe'));

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

s:=ExpandConstant('{src}')+'\zone2.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+2

Exec(ExpandConstant('{app}\precomp.exe'), ' -r zone2.pcf ', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\zone2.pcf'));


WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+3

Exec(ExpandConstant('{app}\zone2.exe'), ' -y', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\zone2.exe'));

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

s:=ExpandConstant('{src}')+'\main1.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+2

Exec(ExpandConstant('{app}\main\1.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

Exec(ExpandConstant('{app}\main\2.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

s:=ExpandConstant('{src}')+'\main2.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+2

Exec(ExpandConstant('{app}\main\3.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\msvcr80.dll'));
DeleteFile(ExpandConstant('{app}\packjpg_dll.dll'));
DeleteFile(ExpandConstant('{app}\zlib1.dll'));
DeleteFile(ExpandConstant('{app}\precomp.exe'));

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+2

s:=ExpandConstant('{src}')+'\main3.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+2

Exec(ExpandConstant('{app}\main\dec1.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+3

Exec(ExpandConstant('{app}\main\dec2.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+3

Exec(ExpandConstant('{app}\main\4.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

Exec(ExpandConstant('{app}\main\5.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

Exec(ExpandConstant('{app}\main\6.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

Exec(ExpandConstant('{app}\main\7.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

Exec(ExpandConstant('{app}\main\8.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

Exec(ExpandConstant('{app}\main\9.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+1

Exec(ExpandConstant('{app}\main\10.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);

WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := ProgressBar1.Position+2

end;
end;













[Icons]
Name: "{group}\Играть Call of Duty 4 - Modern Warfare (SP)"; Filename: "{app}\iw3sp.exe"; IconFileName: "{src}\icon.ico";
Name: "{group}\Играть Call of Duty 4 - Modern Warfare (MP)"; Filename: "{app}\iw3mp.exe"; IconFileName: "{src}\icon.ico";
Name: "{group}\Удалить Call of Duty 4 - Modern Warfare"; Filename: "{uninstallexe}";
Name: "{userdesktop}\Call of Duty 4 - Modern Warfare (SP)"; Filename: "{app}\iw3sp.exe"; IconFileName: "{src}\icon.ico"; Tasks: sp
Name: "{userdesktop}\Call of Duty 4 - Modern Warfare (MP)"; Filename: "{app}\iw3mp.exe"; IconFileName: "{src}\icon.ico"; Tasks: mp


[Run]
Filename: {app}\iw3sp.exe; WorkingDir: {app}; Description: "Начать одиночную игру"; Flags: postinstall nowait
Filename: "{src}\Redist\DirectX\DXSETUP.exe"; Parameters: "/silent"; StatusMsg: "Обновление DirectX..."; Tasks: "dx"; Flags: waituntilterminated
Filename: "{src}\Redist\vcredist_x86.exe"; Parameters: "/q"; StatusMsg: "Установка Microsoft Visual C++ 2005 SP1 Redist..."; Tasks: "vc"; Flags: runhidden waituntilterminated

[/more] , я теперь остальные по тому же принципу делаю
Автор: doombuster
Дата сообщения: 23.04.2009 22:31
SiluetPro
К тем же строчкам добавляешь:
WizardForm.NextButton.Left:=313
WizardForm.NextButton.Top:=325
И меняешь
Автор: spider91
Дата сообщения: 23.04.2009 22:33
я скал файл на который doombuster дал ссылку, установил и ничего не изменилось. в какой поиск нужно вводить ComponentsListTVStyle=true ?
Автор: doombuster
Дата сообщения: 23.04.2009 22:35
spider91
В самом верху, выше шапки) Жирными синими буковками написано ПОИСК

http://forum.ru-board.com/google.cgi


[more=Пример]; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Myprogram"
#define MyAppVerName "Myprogram 1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "myprogram.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{5EEBB548-ED74-4FFF-9D6D-BE4A6C859BA4}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
LicenseFile=C:\myprogram\readme.txt
OutputDir=C:\Documents and Settings\Дима\My Documents
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
ComponentsListTVStyle=true

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Types]
Name: full; Description: Полная установка
Name: recomend; Description: Рекомендуемая установка
Name: custom; Description: Выборочная установка; Flags: iscustom

[Components]
Name: programfiles; Description: Файлы программы™; Types: full recomend custom; Flags: fixed
Name: source; Description: Исходники; Types: full
Name: plugins; Description: Плагины; Types: full recomend custom
Name: "plugins\Plugin1"; Description: "Plugin1";



[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\myprogram\myprogram.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: C:\myprogram\*; DestDir: {app}; Excludes: plugin1.exe, plugin1.txt; Flags: ignoreversion recursesubdirs createallsubdirs; Components: programfiles
Source: C:\myprogram\other\plugins\plugin1.exe; DestDir: {app}; Components: plugins\Plugin1; Flags: ignoreversion
Source: C:\myprogram\other\plugins\plugin1.txt; DestDir: {app}; Components: plugins\Plugin1; Flags: ignoreversion

; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent [/more]
Автор: spider91
Дата сообщения: 23.04.2009 22:52
doombuster


у меня не распознает ComponentsListTVStyle=true . что делать?

Добавлено:
у меня версия 5.2.4 может надо 5.2.3 ?
Автор: SotM
Дата сообщения: 24.04.2009 07:29
spider91

Цитата:
у меня не распознает ComponentsListTVStyle=true . что делать?

Этот ComponentsListTVStyle можно использовать только с расширенной версией Inno Setup, тобишь китайской сборки (ResTools). Это ведь пробегало на страницах этого форума. Надо хоть иногда почитывать старые страницы, там ведь можно найти много интересного и полезного!

Млин, ты как выложил скрипт? Как я твой "русский" там прочитаю?! Нормально вставь его, чтобы русский можно было нормально прочитать, можешь даже не создавать новый пост, а отредактируй старый.
Автор: Victor_Dobrov
Дата сообщения: 24.04.2009 08:34
spider91

Цитата:
у меня не распознает ComponentsListTVStyle=true . что делать?

Перезаписать в папку стандартного Inno Setup файлы ISCmplr.dll, ISCmplr.dls, setup.e32, SetupLdr.e32, Compil32.exe из архива расширенной версии от ResTools. (екзешник на зеркале делает это сам)

К ответу от SotM добавлю, что описание этой версии есть в шапке, которую, видимо, перестали читать вообще. ;-(
Автор: spider91
Дата сообщения: 24.04.2009 10:07
SotM
Victor_Dobrov

я ето еще вчера скачал, но все равно не идет. видимо нужно ставить 5.2.3...


P.S. скрипт поправлю потом, щас времени нет
Автор: Raf_SE
Дата сообщения: 24.04.2009 12:28
Как сделать чтоб на странице выбора папки для установки, (после того как юзер выбрал папку, и нажал "Далее") инсталлятор проверял ли запущен процесс "infium.exe" и ли есть папка "{app}\Plugins\acme\", и если находит и то и другое, тогда выдавал сообщение типа:

Только при нажатии на "Отмена", чтоб инсталлятор закрывался.

P.S.
1. Если с помощью инсталлятора закрыть\убить процесс "infium.exe" сложно, тогда можно сделать чтоб при нажатии на "Ок" запускался "nircmd.exe", предварительно выгруженный во временную папку, с параметром "killprocess infium.exe".
2. Сам в программировании не шарю
Автор: DeKaNszn
Дата сообщения: 24.04.2009 12:56
Raf_SE

смотри:

Цитата:
Inno Setup Scripting 5.1 - Руководство по расширенным возможностям Inno Setup от Kindly
Автор: Qarma
Дата сообщения: 24.04.2009 13:23
Хелп...почему прекомплит не делает что прописано, а как будто пропускает...
Filename: {app}\precomp.exe; WorkingDir: {app}; Parameters: "-o""russian.esm"" -r ""russian.pcf"""; Flags: runasoriginaluser
Автор: spider91
Дата сообщения: 24.04.2009 13:25
SotM

исправил скрипт держи

Добавлено:
Qarma


попробуй так:


Код: Filename: {app}\precomp.exe; WorkingDir: {app}; Parameters: " -r russian.pcf"; Flags: runasoriginaluser
Автор: Qarma
Дата сообщения: 24.04.2009 13:31

Цитата:
Filename: {app}\precomp.exe; WorkingDir: {app}; Parameters: " -r russian.pcf"; Flags: runasoriginaluser

Не какого еффекта
Участок кода(files и run):

Код: [Run]
Filename: "{app}\gamedata.exe"; WorkingDir: "{app}"; Parameters: "-x -y -s2 -d.";

Filename: "{app}\rep.exe"; WorkingDir: "{app}"; Parameters: "russian.pcf.rep";


Filename: {app}\precomp.exe; WorkingDir: {app}; Parameters: "-o""russian.esm"" -r ""russian.pcf"""; Flags: runasoriginaluser

[Files]
Source: d:\test\logo.bmp;DestDir:{tmp};Flags: dontcopy nocompression
Source: "D:\NOCOMP\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs nocompression
Автор: spider91
Дата сообщения: 24.04.2009 13:36
Qarma


должно работать и так. у меня идет.
на крайняк сделай батник и запускай его

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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