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

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

Автор: Qarma
Дата сообщения: 26.03.2009 11:39
noiseless
Не робит, ругается на это

FreeMB, TotalMB: Cardinal;
Автор: skeptik_vdm
Дата сообщения: 26.03.2009 15:37
Qarma
Вот эти 3 строчки
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel, FreeSpaceLabel: TLabel;
Comp1, Comp2: TCheckBox;
должны находиться под "var"
Автор: Qarma
Дата сообщения: 26.03.2009 15:41
Кому нужен такой скрипт?
Автор: de_MAX
Дата сообщения: 26.03.2009 15:58
Qarma
Ну поделись)
Автор: Qarma
Дата сообщения: 26.03.2009 16:11
[more]
[Setup]
AppName=The Witcher
AppVerName=The Witcher

DefaultDirName=D:\Games\The Witcher
OutputBaseFilename=Setup
Compression=lzma/ultra64
SolidCompression=yes

;+++резделение
DiskSpanning=yes
SlicesPerDisk=3
DiskSliceSize=1560000000
;---резделение

;+++Уровень компрессии
InternalCompressLevel=ultra64
;---Уровень компрессии

UsePreviousAppDir=false
AllowUNCPath=false

;+++Директория выхода инсталятора
OutputDir=D:\test
;---Директория выхода инсталятора Untitled-3
WizardImageFile=D:\test\wc.bmp
WizardSmallImageFile=D:\test\wc_small.bmp
DisableProgramGroupPage=true
UsePreviousGroup=false
DefaultGroupName=The Witcher
VersionInfoVersion=1.0.0.0
UninstallFilesDir={app}\
DirExistsWarning=no
DisableReadyPage=true
AppVersion=1.0.0.0
UninstallDisplayName=The Witcher
UsePreviousSetupType=false
UsePreviousUserInfo=false
PrivilegesRequired=none
RestartIfNeededByRun=false
LanguageDetectionMethod=locale
;+++icon.ico это иконка инсталлера!

setupiconfile=D:\test\4.ico
;---icon.ico это иконка инсталлера!
;+++Small.bmp это картинка на верху продолговатая!
;---Small.bmp это картинка на верху продолговатая!



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


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



[LangOptions]
WelcomeFontSize=10

[Messages]
BeveledLabel=Qarmaa Presents

[Registry]
Root: HKLM32; SubKey: SOFTWARE\CD Projekt Red\The Witcher; ValueType: none; Flags: uninsdeletekey
Root: HKLM32; SubKey: SOFTWARE\CD Projekt Red\The Witcher; ValueType: string; ValueName: InstallFolder; ValueData: {app} ; Flags: uninsdeletekeyifempty
Root: HKLM32; SubKey: SOFTWARE\CD Projekt Red\The Witcher; ValueType: string; ValueName: Language; ValueData: 14 ; Flags: uninsdeletekeyifempty
Root: HKLM32; SubKey: SOFTWARE\CD Projekt Red\Ведьмак\1.00.0000; ValueType: none; Flags: uninsdeletekey

[Icons]
Name: "{group}\Начать игру"; Filename: "{app}\launcher.exe"; WorkingDir: "{app}\";

Name: "{group}\Удалить игру"; Filename: "{uninstallexe}";
Name: "{userdesktop}\The Witcher"; Filename: "{app}\launcher.exe"; WorkingDir: "{app}\";
Name: "{userdesktop}\!ПЕРЕД ЗАПУСКОМ ИГРЫ, ЗАПУСТИТЬ ЭТО!"; Filename: "{app}\NS-TW_SS-poseden.mds"; WorkingDir: "{app}\";

[Run]
Filename: "{src}\depack.exe"; WorkingDir: "{src}"; Parameters: "x data.wc -o""{app}\Data\"" -y"; StatusMsg: "Завершение установки, пожалуйста подождите...";
;DereX
Filename: {src}\DirectX\dxsetup.exe; Parameters: /silent; StatusMsg: Идет установка дополнительных программ...; Check: InstallDop
;PhysX
Filename: {src}\Redistributables\PhysX_SystemSoftware.exe; Parameters: /quiet; StatusMsg: Идет установка дополнительных программ...; Check: InstallDop
[Files]




Source: C:\Program Files\Inno Setup 5\Corona\logo__.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\Program Files\Inno Setup 5\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy

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



[Buttons]
ButtonNext=&Далее >
[Code]
//////////////



var
PageNameLabel, PageDescriptionLabel: TLabel;
DesktopIcon,Dop: TCheckBox;

const
NeedSize = 7298;




var
FreeMB, TotalMB: Cardinal;

NeedSpaceLabel, FreeSpaceLabel: TLabel;
Comp1, Comp2: TCheckBox;
ProgressBar : TNewProgressBar;
ExtractFile:TNewStaticText;

/////////

Function InstallDop:Boolean;
begin
Result:=Dop.Checked;
end;

function MakeDesktopIcon: Boolean;
begin
Result:=DesktopIcon.Checked;
end;



procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;

begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);

if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Доступно место на диске: ' + FloatToStr(round(FreeMB/1024*100)/100) + ' GB'
else
FreeSpaceLabel.Caption := 'Доступно место на диске: ' + IntToStr(FreeMB)+ ' MB';

if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := false
else
WizardForm.NextButton.Enabled := true;
end;


//////////
procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://free-torrents.org/forum/', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
TimerID: LongWord;
pfunc: LongWord;
Label1:tlabel;

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 InitializeWizard();

var
WLabel1, WLabel2: TLabel;
FLabel1, FLabel2: TLabel;
begin
DesktopIcon := TCheckBox.Create(WizardForm);
DesktopIcon.Parent := WizardForm.SelectDirPage;
DesktopIcon.Caption := 'Добавить ярлык на рабочий стол';
DesktopIcon.Left := ScaleX(0);
DesktopIcon.Top := ScaleY(WizardForm.DirEdit.Top + 35);
DesktopIcon.Width := ScaleX(400);
DesktopIcon.Height := ScaleY(15);
DesktopIcon.TabOrder := 0;
DesktopIcon.Checked := True;

dop := TCheckBox.Create(WizardForm);
with Dop do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Установить дополнительные программы (рекомендуется)';
Left := ScaleX(0);
Top := WizardForm.DirEdit.Top+55;
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;

////////////
FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(53);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clwhite;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := 'Программа установлена на Ваш компьютер.' #13#13
'Нажмите «Завершить», чтобы выйти из программы установки.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage



WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(54);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clwhite;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2:=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clwhite;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;


WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clwhite;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;


begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(100);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clwhite;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2 :=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clwhite;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clwhite;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;

FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(77);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clwhite;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := 'Программа установлена на Ваш компьютер.' #13#13
'Нажмите «Завершить», чтобы выйти из программы установки.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;
end;
//////////


////////
begin

WizardForm.DiskSpaceLabel.Hide;
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do

begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(198);
Width := ScaleX(209);
Height := ScaleY(13);



Caption := 'Требуется место на диске: 7,04 GB' ;
end;
////////////
begin
begin
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Width:=497;
WizardForm.WizardSmallBitmapImage.Height:=58;
WizardForm.PageDescriptionLabel.Width:=300;
WizardForm.PageNameLabel.Width:=300;
end ;
begin
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clwhite;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clwhite;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;
end;

////////////IntToStr(NeedSize) + ' GB'
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(216);
Width := ScaleX(209);
Height := ScaleY(13);
end;




WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;





/////////////////

end;

procedure CurPageChanged(CurPageID: Integer);

begin

PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
If CurPageID=wpFinished then KillTimer(0, TimerID);
if CurPageID = wpSelectDir

then begin
WizardForm.NextButton.Caption:='Установить';
if FreeMB < NeedSize
then WizardForm.NextButton.Enabled:=False;

end;
end;

[/more]

Добавлено:
Там несколько процедур лишних
Автор: Yoldosh
Дата сообщения: 26.03.2009 16:25
madsmoker82
мне нужно штобы первый инсталятор автоматически закривалсья и включался второй инсталятор и из внешный папки
Автор: AngelDead
Дата сообщения: 26.03.2009 16:36
Я хочу сделать репак, но ведь для этого одного инно мало, репак я так понимаю это сжатие так вот вопрос тем кто делал и делает репаки поделитесь своим методом и опытом. За ранее спасибо!
Автор: noiseless
Дата сообщения: 26.03.2009 17:13
Qarma
Сорри... Поторопился, наверно. Просто так такая каша была, что не всё углядел

skeptik_vdm
Спасибо за правку!
Автор: Qarma
Дата сообщения: 26.03.2009 17:20
.

Добавлено:
noiseless
Всё сделал, но...сейчас ругается на это
If CurStep=ssPostInstall then
Автор: skeptik_vdm
Дата сообщения: 26.03.2009 18:21
AngelDead
Лично я использую стандартные методы Инно и вместе с этим использую FreeArc как это делает ЗлойДед + здесь можно использовать Precomp.
Автор: Yoldosh
Дата сообщения: 26.03.2009 18:42
Кто нибудь знает как зашитить установку от распокавание
Автор: DeKaNszn
Дата сообщения: 26.03.2009 19:09
Yoldosh

Цитата:
мне нужно штобы первый инсталятор автоматически закривалсья и включался второй инсталятор и из внешный папки


так:

Код: [no][Run]
Filename: {src}\setup2.exe; Flags: postinstall[/no]
Автор: notAlx
Дата сообщения: 26.03.2009 19:15
Yoldosh
Если имеется ввиду распаковка, например, Inno Setup Unpacker'ом, то можно включить криптование и поставить пароль. Надо в секцию [Setup] добавить параметры Encryption=yes и Password=пароль.
Автор: skeptik_vdm
Дата сообщения: 26.03.2009 20:31
Товарищи сорри за оффтоп, а ФТО(www.free-torrents.org) работает или нет???
Автор: AngelDead
Дата сообщения: 26.03.2009 22:08
skeptik_vdm
Не работает, наверно покоиться с миром.
Автор: Kutsenko
Дата сообщения: 26.03.2009 22:47
Вопрос к автору скрипта и ко всем форумчанам:
в шапке увидел архивчик InnoSetupScripts в котором очень много полезных скриптов, а также есть от Виктора Доброва. Но меня какрас заинтересовали только их части, если точнее то некоторые фишки которые есть в корона скине, ведь иногда ненужно так много наворотов, а только какаято часть и всё. Но такого скрипта к сожалению в том архиве не оказалось(, вот поэтому я и обращаюсь к вам с помощью:

Мне хотелось бы тоже иметь такое в своём скрипте , но сам не смог вырезать это с короны. Кто знает как это переместить на стандартный инсталл от INNO SETUP'а - помогите. Спасибо.
Автор: DOG94
Дата сообщения: 26.03.2009 23:28
Как разбить инсталляционный пакет так, что бы, исполнительный файл весил менее 300 метров?
Автор: DeKaNszn
Дата сообщения: 27.03.2009 00:11
DOG94

Код: [no][Setup]
DiskSpanning=true
DiskSliceSize=314572800[/no]
Автор: SotM
Дата сообщения: 27.03.2009 08:51
Kutsenko
А зачем вырезать из Короны практически всё?!? Не проще ли просто ей и воспользоваться?

To All:
Хотя бы иногда надо читать предыдущие ветки форума. Одни и те же вопросы повторяются снова и снова, не уж то это так сложно поискать ответ? Или всё таки лень?
Автор: noiseless
Дата сообщения: 27.03.2009 08:59
SotM
Может поместить в шапке мини-ФАК?

Добавлено:
Qarma
А так? [more]
[Code]
//////////////

var
PageNameLabel, PageDescriptionLabel: TLabel;
DesktopIcon: TCheckBox;
ProgressBar : TNewProgressBar;
ExtractFile:TNewStaticText;
Button1:TButton;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel, FreeSpaceLabel: TLabel;
Comp1, Comp2: TCheckBox;

procedure Extract7z (hWnd, hpb, hst: THandle; fpath, extractPath, pass:pchar); external 'Extract7z@files:is7z.dll stdcall';
procedure CancelExtract; external 'CancelExtract@files:is7z.dll stdcall';

const
NeedSize = 7298;

function MakeDesktopIcon: Boolean;
begin
Result:=DesktopIcon.Checked;
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;

begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);

if FreeMB > 1024 then
FreeSpaceLabel.Caption := '&#196;&#238;&#241;&#242;&#243;&#239;&#237;&#238; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: ' + FloatToStr(round(FreeMB/1024*100)/100) + ' GB'
else
FreeSpaceLabel.Caption := '&#196;&#238;&#241;&#242;&#243;&#239;&#237;&#238; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: ' + IntToStr(FreeMB)+ ' MB';

if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := false
else
WizardForm.NextButton.Enabled := true;
end;


//////////
procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://free-torrents.org/forum/', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;

type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
TimerID: LongWord;
pfunc: LongWord;
Label1:tlabel;

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 InitializeWizard();
var
WLabel1, WLabel2: TLabel;
FLabel1, FLabel2: TLabel;
begin
DesktopIcon := TCheckBox.Create(WizardForm);
DesktopIcon.Parent := WizardForm.SelectDirPage;
DesktopIcon.Caption := '&#196;&#238;&#225;&#224;&#226;&#232;&#242;&#252; &#255;&#240;&#235;&#251;&#234; &#237;&#224; &#240;&#224;&#225;&#238;&#247;&#232;&#233; &#241;&#242;&#238;&#235;';
DesktopIcon.Left := ScaleX(0);
DesktopIcon.Top := ScaleY(WizardForm.DirEdit.Top + 35);
DesktopIcon.Width := ScaleX(400);
DesktopIcon.Height := ScaleY(15);
DesktopIcon.TabOrder := 0;
DesktopIcon.Checked := True;
////////////
FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(53);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clwhite;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := '&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#235;&#229;&#237;&#224; &#237;&#224; &#194;&#224;&#248; &#234;&#238;&#236;&#239;&#252;&#254;&#242;&#229;&#240;.' #13#13
'&#205;&#224;&#230;&#236;&#232;&#242;&#229; «&#199;&#224;&#226;&#229;&#240;&#248;&#232;&#242;&#252;», &#247;&#242;&#238;&#225;&#251; &#226;&#251;&#233;&#242;&#232; &#232;&#231; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#251; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage

WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(54);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clwhite;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2:=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clwhite;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clwhite;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;

WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(77);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clwhite;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := '&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#235;&#229;&#237;&#224; &#237;&#224; &#194;&#224;&#248; &#234;&#238;&#236;&#239;&#252;&#254;&#242;&#229;&#240;.' #13#13
'&#205;&#224;&#230;&#236;&#232;&#242;&#229; «&#199;&#224;&#226;&#229;&#240;&#248;&#232;&#242;&#252;», &#247;&#242;&#238;&#225;&#251; &#226;&#251;&#233;&#242;&#232; &#232;&#231; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#251; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;

WizardForm.DiskSpaceLabel.Hide;
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do

begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(198);
Width := ScaleX(209);
Height := ScaleY(13);

Caption := '&#210;&#240;&#229;&#225;&#243;&#229;&#242;&#241;&#255; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: 7,04 GB' ;
end;
////////////
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Width:=497;
WizardForm.WizardSmallBitmapImage.Height:=58;
WizardForm.PageDescriptionLabel.Width:=300;
WizardForm.PageNameLabel.Width:=300;
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clwhite;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clwhite;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;

////////////IntToStr(NeedSize) + ' GB'
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(216);
Width := ScaleX(209);
Height := ScaleY(13);
end;

WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;

/////////////////

end;

procedure Button1OnClick(Sender: TObject);
begin
CancelExtract;
end;

procedure CurPageChanged(CurPageID: Integer);

begin

PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
If CurPageID=wpFinished then KillTimer(0, TimerID);
if CurPageID = wpSelectDir then
begin
WizardForm.NextButton.Caption:='&#211;&#241;&#242;&#224;&#237;&#238;&#226;&#232;&#242;&#252;';
if FreeMB < NeedSize then WizardForm.NextButton.Enabled:=False;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall then
begin
Button1:=TButton.create(WizardForm);
Button1.parent:=WizardForm;
Button1.width:=135;
Button1.caption:='&#206;&#242;&#236;&#229;&#237;&#232;&#242;&#252; &#240;&#224;&#241;&#239;&#224;&#234;&#238;&#226;&#234;&#243;';
Button1.left:=260;
Button1.top:=WizardForm.cancelbutton.top;
Button1.OnClick:=@Button1OnClick;
try
Extract7z (wizardform.handle, progressbar.handle, ExtractFile.handle, ExpandConstant('{src}') + '\1.7z', ExpandConstant('{app}'), '');
Button1.visible:=false;
except
MsgBox('&#205;&#229;&#226;&#229;&#240;&#237;&#251;&#233; &#239;&#224;&#240;&#238;&#235;&#252;!', mbInformation, MB_OK);
Button1.visible:=false;
end;
end;
end;
[/more]
Автор: Robotron18
Дата сообщения: 27.03.2009 13:06
Пацаны, проблема с Вистой. При установке на Vista SP1 дополнительных прог к игре типа акробатридера, кодека лезет ошибка:

CreateProcess Failed; code 740
The requested operation requires elevation.

Причем у меня на Висте все ок, а у западного издателя - вот такая вот хрень. Все проги скачаны последние и без инсталлятора запускаются и исполняются корректно.

Кто-нибудь сталкивался с этим? Как лечиться?
Автор: chelobey
Дата сообщения: 27.03.2009 13:13
люди, помогите с реализацией следующей идеи...
предположим, есть несколько програм и подпрограм, положеных в инсталятор и выбираемых на странице выбора компонентов с возможностью установки как одной, так и всех. каждая программа имеет внушительное описание и потому вопрос...

как сделать на странице выбора компонентов форму, куда бы загружалось из rtf (с возможностью прокрутки) описание той программы или подпрограммы, по которой кликнул пользователь в списке?
Автор: Raf_SE
Дата сообщения: 27.03.2009 14:36
Ктонить может переделать скрипт так, чтоб он показывал количество свободного места на винтах в Гигабайтах, но если для установки проги не хватает места, то показывало ошибку, с указанием свободного и необходимого места в мегабайтах %)

[more=Сам скрипт...]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: Files\*; DestDir: {app}

[Code]
const
NeedSize = 20; //Прописать, сколько мегабайт необходимо

DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

function GetLogicalDrives: DWORD;
external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: String): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';

procedure InitializeWizard();
var
Path: String;
FreeMB, TotalMB: Cardinal;
ListBox: TListBox;
drives: DWORD;
i: integer;
begin
ListBox:= TListBox.Create(WizardForm);
ListBox.Top:= 120;
ListBox.Width:= 300;
ListBox.Height:= ScaleY(90);
ListBox.Parent:= WizardForm.SelectDirPage;

drives:= GetLogicalDrives();
for i:= 0 to 31 do
begin
if (drives and (1 shl i)) > 0 then
begin
Path:= chr(ord('A')+i)+':';
if GetDriveType(Path) = DRIVE_FIXED then
begin
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
ListBox.Items.Add(Path + ' - Всего: ' + IntToStr(TotalMB) +
'Мб - Свободно: ' + IntToStr(FreeMB) + 'Мб');
end;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < NeedSize then
begin
MsgBox('Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' MB,'#13+ 'а на выбранном Вами диске доступно только '+ IntToStr(FreeMB)+' MB', mbCriticalError, MB_OK)
Result := False;
end;
end;
end;[/more]

[more=Что изменить...] [/more]
Автор: DeKaNszn
Дата сообщения: 27.03.2009 16:18
Raf_SE

[more=так][no][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: Files\*; DestDir: {app}

[Code]
const
NeedSize = 20; //Прописать, сколько мегабайт необходимо

DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

function GetLogicalDrives: DWORD;
external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: String): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';

procedure InitializeWizard();
var
Path: String;
FreeMB, TotalMB: Cardinal;
ListBox: TListBox;
drives: DWORD;
i: integer;
begin
ListBox:= TListBox.Create(WizardForm);
ListBox.Top:= 120;
ListBox.Width:= 300;
ListBox.Height:= ScaleY(90);
ListBox.Parent:= WizardForm.SelectDirPage;

drives:= GetLogicalDrives();
for i:= 0 to 31 do
begin
if (drives and (1 shl i)) > 0 then
begin
Path:= chr(ord('A')+i)+':';
if GetDriveType(Path) = DRIVE_FIXED then
begin
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
ListBox.Items.Add(Path + ' - Всего: ' + FloatToStr(TotalMB/1024) +
'Гб - Свободно: ' + FloatToStr(FreeMB/1024) + 'Гб');
end;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < NeedSize then
begin
MsgBox('Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' MB,'#13+ 'а на выбранном Вами диске доступно только '+ IntToStr(FreeMB)+' MB', mbCriticalError, MB_OK)
Result := False;
end;
end;
end; [/no][/more]
Автор: Utygan
Дата сообщения: 27.03.2009 18:05
Парни , подскажите пожалуйста, можно ли сделать так,чтобы в устанавку собственноручно сделанного репака игры добавить установку несколько файлов в "Мои документы" . То есть игра будет ставиться в директорию, например G:\Games\Название игры , а save файл (с настройками и сохранениями) распаковывался с C:\Documents and Settings\Имя пользователя\Мои документы\Название папки,где хранятся сейвы ??? Надеюсь, объяснил понятно .Помогите плиз.
Автор: Qarma
Дата сообщения: 27.03.2009 18:26
noiseless
Спасибо, работает.
Автор: Raf_SE
Дата сообщения: 27.03.2009 20:13
DeKaNszn
А можно чтоб оно количество Гб как-то сокращало? Ну типо "*.123", где "*" - гигабайти, а "123" первые 3 цифры после них. Т.е. чтоб после точки, было не более чем 3 цифры.
И ещё чтоб справа, было написано сколько необходимо места для инсталляции.

[more=Приблизительные накидки] [/more]

Utygan
Ты имеешь введу добавить файлы в уже созданный инсталлятор? Если да, тогда нельзя.
Автор: Utygan
Дата сообщения: 27.03.2009 20:27
Raf_SE да репак то я переделаю без проблем. так что инсталятора заново создать не проблема. просто я не знаю как в скрипте прописать то что я хочу . Если знаешь, помоги плиз. Заранее спасибо
Автор: Raf_SE
Дата сообщения: 27.03.2009 20:55
Utygan
Изучай справку, тем более что есть русский вариант. Тебе нужно просто константы подменить.

Source: L:\Games\Manhunt\VIDEO\Eng\levels\asylum\asylum.bik; DestDir: {userdocs}\levels\asylum;
Автор: DeKaNszn
Дата сообщения: 28.03.2009 00:50
Raf_SE

[more=пробуй][no][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: Files\*; DestDir: {app}

[Code]
const
NeedSize = 20; //Прописать, сколько мегабайт необходимо

DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

function GetLogicalDrives: DWORD;
external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: String): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';

procedure InitializeWizard();
var
Path: String;
FreeMB, TotalMB: Cardinal;
ListBox: TListBox;
drives: DWORD;
i: integer;
begin
ListBox:= TListBox.Create(WizardForm);
ListBox.Top:= 120;
ListBox.Width:= 300;
ListBox.Height:= ScaleY(90);
ListBox.Parent:= WizardForm.SelectDirPage;

drives:= GetLogicalDrives();
for i:= 0 to 31 do
begin
if (drives and (1 shl i)) > 0 then
begin
Path:= chr(ord('A')+i)+':';
if GetDriveType(Path) = DRIVE_FIXED then
begin
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
ListBox.Items.Add(Path + ' - Всего: ' + FloatToStr(round(TotalMB)/1000) +
'Гб - Свободно: ' + FloatToStr(round(FreeMB)/1000) + 'Гб');
end;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < NeedSize then
begin
MsgBox('Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' MB,'#13+ 'а на выбранном Вами диске доступно только '+ IntToStr(FreeMB)+' MB', mbCriticalError, MB_OK)
Result := False;
end;
end;
end; [/no][/more]

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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