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

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

Автор: Seup
Дата сообщения: 01.05.2009 10:21
Qarma
Игра называется Turok.

spider91
Я так немогу сделать, потомучто проги у меня такой нету и я незнаю ее название.

SotM
Нехочу "петушиться", но все что мне требуется для создания нормального инсталятора, я знаю. Я читал здесь на форуме, изучал некоторые мануалы, переделывал все, что тока можна переделать в инсталяторе,основываясь на примерах, найденых здесь на форуме, начиная от внешнего вида и заканчивая дополнительными функциями. Так что, про себя могу сказать, что я скорее не новичок, а более менее понимающий. А насчет вопросов, так я не собираюсь много задавать, мне бы узнать, что это за программа и с какими параметрами ее запускать. При создании репака игры, использование mp3 дает весомый выигрыш в размере, отсюда и желание научиться так делать.

Автор: htuos
Дата сообщения: 01.05.2009 10:44
joparoobit

Цитата:
Достаточно вставить
MainForm.BorderStyle:=bsSizeable;
перед
MainForm.Show;
И сами всё увидите: background окно можно потаскать, поменять размеры.

чушь какую-то пишешь
почему она не должна перемещаться и менять размеры? ты же сам написал BorderStyle:=bsSizeable

ЗЫ определись чего ты вообще хочешь
ЗЗЫ у человека, который знает delphi не должно возникать таких глупых вопросов
Автор: joparoobit
Дата сообщения: 01.05.2009 11:52
htuos

Цитата:
чушь какую-то пишешь
почему она не должна перемещаться и менять размеры? ты же сам написал BorderStyle:=bsSizeable

ЗЫ определись чего ты вообще хочешь
ЗЗЫ у человека, который знает delphi не должно возникать таких глупых вопросов


Конечно, к Inno это относится весьма косвенно, но все же отвечу на обвинения в ламерстве по сути на примере

Вы создаете в Deplhi SDI-приложение, содержащее две формы: Form_Main и Form_Wizard. Пусть Form_Main содержит одну лишь кнопку, при нажатии на которую показывается Form_Wizard:

procedure TForm_Main.Button1Click(Sender: TObject);
begin
Form_Wizard.ShowModal;
end;

Тогда у пользователя при открытом модальном окне Form_Wizard не будет возможности воздействовать на Form_Main при любом ее BorderStyle.

Если же Form_Wizard показывать не как модальное окно тогда Form_Main можно и подвигать и свернуть:

procedure TForm_Main.Button1Click(Sender: TObject);
begin
Form_Wizard.Show;
end;

ps. htuos еще раз хочу выразить вам признательность за советы и комментарии. Я все-таки решился сваять сетапик на Inno
Автор: spider91
Дата сообщения: 01.05.2009 14:04
Seup

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

Добавлено:
и вобще тебе сюда. тут обсуждаются подобные проги
Автор: htuos
Дата сообщения: 01.05.2009 15:47
joparoobit
всегда пожалуйста

вот только мне не понятно, почему ты так уверен, что WizardForm модальная по отношению к MainForm?
если ковырял исходники, то выложи кусок кода, в котором описан вызов WizardForm

PS сам исходники не смотрел, но никогда не считал WizardForm модальной формой
и посмотри хэлп по секции [Setup]
WindowShowCaption
WindowStartMaximized
WindowResizable
WindowVisible
думаю, MainForm так и задумывался автором инно

к тому же модальное окно не может потерять фокус в своей группе окон, а WizardForm может => эта форма не модальная
Автор: SotM
Дата сообщения: 01.05.2009 19:20
Seup
Я лично в одной игре видел конвертацию OGG to WAV. Можешь подумать об использовании OGG вместо MP3, размер конечно не тот, но качество lossless вместо loss.

Ниже приведу утилиты для работы в командной строке.
OGG: Ogg encoder, Ogg decoder.
MP3: Lame MP3 encoder, MP3 decoder (madplay).
Автор: ExpeditorR
Дата сообщения: 01.05.2009 22:14
Предлагаю вам мою новую библиотеку isFlash.dll v1.00
Библиотека предназначена для показа flash анимации и воспроизведение flv файлов в фоновом окне Inno Setup, пример использования смотрите в архиве.

Ввиду того, что isFlash.dll я написал только сегодня, то понятное дело особо не тестировал, поэтому возможны глюки. Кстати сразу предупреждаю, что при распаковке инсталлятором файлов анимация тормозит.
Ссылка для скачивания: http://narod.ru/disk/8272304000/isflash%20v1.00.rar.html
Автор: GRom V
Дата сообщения: 02.05.2009 06:36
Чет у меня не работает....просто черный фон....
Автор: Qarma
Дата сообщения: 02.05.2009 09:38
Помогите...
http://forum.ru-board.com/topic.cgi?forum=5&topic=29117&start=1720#15
Автор: Seup
Дата сообщения: 02.05.2009 10:18
spider91
Я нашел прогу, она была в архиве, рядом с инсталятором. Вот выкладываю, может ктонб разберется, как ей пользоваться.
http://narod.ru/disk/8270275000/waverebuild.exe.html

SotM
Интересная мысль, использовать вместо mp3, ogg. Попробую, но насколько я помню, конвертирование в ogg и обратно на порядок дольше конвертирования mp3.
Автор: Prince_Tails
Дата сообщения: 02.05.2009 10:32
а можно этот код, но без процедуры bass, чтобы не воспроизводить звук
и напишите пожалуйста код для распоковки arc-архивов
Автор: Qarma
Дата сообщения: 02.05.2009 10:35
Всё, разобрался сам
Автор: DeKaNszn
Дата сообщения: 02.05.2009 11:20
Prince_Tails

[more=попробуй][no]#define MyAppName "Морской охотник"
#define MyAppVerName "Морской охотник"
#define MyAppExeName "PT-Boats.exe"
[Setup]
AppName={#MyAppName}
AppVerName={#MyAppVerName}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=no
OutputDir=D:\MyInno_Script\Морской охотник\
OutputBaseFilename=setup
Compression=lzma/ultra64
SolidCompression=true
DiskSpanning=true
DiskClusterSize=4096
DiskSliceSize=1735040064
WizardImageFile=D:\MyInno_Script\Морской охотник\scripts\big.bmp
WizardSmallImageFile=D:\MyInno_Script\Морской охотник\scripts\small.bmp
WindowVisible=no
WindowShowCaption=no
WindowResizable=no
DisableFinishedPage=yes
DisableProgramGroupPage=yes
DisableReadyPage=yes
UninstallDisplayIcon={app}\{#MyAppExeName}

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

[Files]
Source: "{tmp}\arc.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall ignoreversion dontcopy
Source: D:\MyInno_Script\Морской охотник\Local Settings\Aplication Data\*; DestDir: {localappdata}; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
Source: D:\MyInno_Script\Морской охотник\Морской Охотник\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath


[Run][/no]
Filename: "{tmp}\Arc.exe"; Parameters: "x -dpGameData ENVIRONMENTS.arc"; WorkingDir: "{app}"; StatusMsg: "Идет восстановление окружающего мира..."; Flags: runhidden; Afterinstall: animateprogress
Filename: "cmd.exe"; Parameters: "/C del /F /Q ENVIRONMENTS.arc"; WorkingDir: "{app}"; StatusMsg: "Удаление мусора..."; Flags: runhidden; Afterinstall: animateprogress
Filename: "{tmp}\Arc.exe"; Parameters: "x -dpGameData NAVALS.arc"; WorkingDir: "{app}"; StatusMsg: "Идет восстановление моделей кораблей..."; Flags: runhidden; Afterinstall: animateprogress
Filename: "cmd.exe"; Parameters: "/C del /F /Q NAVALS.arc"; WorkingDir: "{app}"; StatusMsg: "Удаление мусора..."; Flags: runhidden; Afterinstall: animateprogress
Filename: "{tmp}\Arc.exe"; Parameters: "x -dpGameData SOUNDS.arc"; WorkingDir: "{app}"; StatusMsg: "Идет восстановление звукового окружения..."; Flags: runhidden; Afterinstall: animateprogress
Filename: "cmd.exe"; Parameters: "/C del /F /Q SOUNDS.arc"; WorkingDir: "{app}"; StatusMsg: "Удаление мусора..."; Flags: runhidden; Afterinstall: animateprogress
Filename: "{tmp}\Arc.exe"; Parameters: "x -dpGameData WEAPONS.arc"; WorkingDir: "{app}"; StatusMsg: "Идет восстановление моделей оружия..."; Flags: runhidden; Afterinstall: animateprogress
Filename: "cmd.exe"; Parameters: "/C del /F /Q WEAPONS.arc"; WorkingDir: "{app}"; StatusMsg: "Удаление мусора..."; Flags: runhidden; Afterinstall: animateprogress
[no]
Filename: "{src}\Drivers\Ageia\PhysX.exe"; Parameters: "/quiet"; StatusMsg: "Установка: NVIDIA PhysX System Software..."; Flags: runhidden; Afterinstall: animateprogress; Check: customComp1
Filename: "{src}\Drivers\VCRedist\vcredist_x86.exe"; Parameters: "/q"; StatusMsg: "Установка: Microsoft Visual C++ 2005..."; Flags: runhidden; Afterinstall: animateprogress; Check: customComp2
Filename: "{src}\Drivers\codec\XviD-1.1.3.exe"; Parameters: "/silent /nocancel"; StatusMsg: "Установка: XviD кодек..."; Flags: runhidden; Afterinstall: animateprogress; Check: customComp3

[Registry]
Root: HKLM; Subkey: "SOFTWARE\Akella"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Akella\PTBoats"; ValueName: "Install Dir"; ValueType: String; ValueData: "{app}"; Flags: uninsdeletevalue


[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; WorkingDir: {app}
Name: {group}\Руководство; Filename: {app}\manual.pdf; WorkingDir: {app}
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}; WorkingDir: {app}; IconFilename: {app}\{#MyAppExeName}
Name: {userdesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; WorkingDir: {app}; Check: MakeDesktopIcon;

[Messages]
BeveledLabel=Repack by MSA
StatusExtractFiles=Копирование файлов
WizardSelectDir=Выбор папки установки и дополнительных задач
SelectDirDesc=Выберите целевую директорию и дополнительные задачи, которые должны выполниться во время установки


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

[Code]
type
HSTREAM = DWORD;

const
NeedSize = 1500;

var
DesktopIcon,Comp1,Comp2,Comp3: TCheckBox;
PageNameLabel, PageDescriptionLabel: TLabel;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
FreeMB, TotalMB: Cardinal;
ProgressBar1: TNewProgressBar;
AppDir: string; ResultCode: Integer;

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

Function customComp1:Boolean;
begin
Result:=Comp1.Checked;
end;
Function customComp2:Boolean;
begin
Result:=Comp2.Checked;
end;
Function customComp3:Boolean;
begin
Result:=Comp3.Checked;
end;

procedure HideInstallPath();
begin
WizardForm.FileNameLabel.Visible := False;
end;
//*******//
procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible := True;
end;

procedure ReadEntries();
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Akella\PTBoats', 'Install Dir', AppDir);
end;

procedure animateprogress;
begin ProgressBar1.Position := ProgressBar1.Position+1
end;

function InitializeSetup(): Boolean;
var
Exe: string;
begin
Exe:='PT-Boats.exe';
if (RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Akella\PTBoats', 'Install Dir')) then
begin
ReadEntries;
case (MsgBox('Игра ' + '{#SetupSetting("AppName")}' + ' уже найдена на Вашем компьютере. Запустить игру?', mbConfirmation, MB_YESNOCANCEL or MB_DEFBUTTON3)) of
IDYES:
begin
if (FileExists(AddBackslash(AppDir) + Exe)) then
begin
Exec(AddBackslash(AppDir) + Exe, '', ExtractFilePath(AddBackslash(AppDir) + Exe), SW_SHOW, ewNoWait, ResultCode);
end else begin
MsgBox('Невозможно запустить ' + '{#SetupSetting("AppName")}' + ', т.к. исполняемый файл программы не найден.', mbCriticalError, MB_OK or MB_DEFBUTTON1);
end
Result:=False;
end
IDNO:
begin
Result:=True;
end
IDCANCEL:
begin
Result:=False;
end
end
end else begin
Result:=True;
end
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';
begin
if FreeMB < NeedSize then
begin
WizardForm.NextButton.Enabled:=false;
end else
WizardForm.NextButton.Enabled:=true;
end;
end;

procedure InitializeWizard();
var
Name1: string;
i: Integer;
begin
DesktopIcon := TCheckBox.Create(WizardForm);
with DesktopIcon do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Добавить ярлык на рабочий стол';
Left := ScaleX(0);
Top := ScaleY(175);
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(350);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clWhite;
Font.Style := [fsBold];
ShowAccelChar := False;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(330);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clWhite;
ShowAccelChar := False;
Transparent := True;
Parent := WizardForm.MainPanel;
end;
begin
WizardForm.BorderStyle := bsDialog;
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;
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 := 'Требуется для установки: 1,5 GB';
end;

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;

ProgressBar1 := TNewProgressBar.Create(wizardform);
with ProgressBar1 do
begin
Parent := wizardform.installingpage;
Left := wizardform.progressgauge.left;
Top := wizardform.progressgauge.top+wizardform.progressgauge.height+15;
Width := wizardform.progressgauge.width;
Height := wizardform.progressgauge.height;
Max :=11; //задается как кол-во файлов в [_run]
end;

Comp3 := TCheckBox.Create(WizardForm);
with Comp3 do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'XviD кодек';
Left := ScaleX(0);
Top := ScaleY(112);
Width := ScaleX(97);
Height := ScaleY(17);
TabOrder := 1;
Checked := True;
end;
Comp2 := TCheckBox.Create(WizardForm);
with Comp2 do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Microsoft Visual C++ 2005';
Left := ScaleX(0);
Top := ScaleY(132);
Width := ScaleX(250);
Height := ScaleY(17);
TabOrder := 1;
Checked := True;
end;

Comp1 := TCheckBox.Create(WizardForm);
with Comp1 do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'NVIDIA PhysX System Software';
Left := ScaleX(0);
Top := ScaleY(152);
Width := ScaleX(250);
Height := ScaleY(17);
TabOrder := 0;
Checked := True;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
If CurPageID=wpSelectDir then
if CurPageID = wpSelectDir
then begin
WizardForm.NextButton.Caption:='Установить';
if FreeMB < NeedSize
then WizardForm.NextButton.Enabled:=False;
end;
begin
WizardForm.Position:=poScreenCenter;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
MsgBox('Игра ' + '{#SetupSetting("AppName")}' + ' установлена!', mbInformation, MB_OK);
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
Cancel:=True; [/no][/more]


Цитата:
и напишите пожалуйста код для распоковки arc-архивов


уже есть здесь, выделил
Автор: Qarma
Дата сообщения: 02.05.2009 11:35

Цитата:
и напишите пожалуйста код для распоковки arc-архивов

Можно так http://forum.ru-board.com/topic.cgi?forum=5&topic=29117&start=1339&limit=1&m=1#1
Автор: chelobey
Дата сообщения: 02.05.2009 11:44
как автоматизировать центровку текста в форме?
Автор: Prince_Tails
Дата сообщения: 02.05.2009 12:13
Qarma
У меня при компиляции выдаёт ошибку "Out of memory" с чем это может связано?
Автор: Rover_2000
Дата сообщения: 02.05.2009 13:46
Срочно требуется помощь:во время установки,архив распаковывается(всё правильно и куда надо),вот только что надо прописать в инно чтобы архив после распаковки сам удалялся???
Автор: spider91
Дата сообщения: 02.05.2009 14:03
Rover_2000



Код: DeleteFile(ExpandConstant('{app}\archive.exe'));
Автор: Unsane
Дата сообщения: 02.05.2009 14:33
Доброе время суток.
В [Components] есть несколько пунктов с флагом exclusive, отвечающих за язык устанавливаемого приложения. Можно ли автоматом отмечать пункт, язык которого совпадает с языком установщика(выбирается при запуске)?
Автор: Qarma
Дата сообщения: 02.05.2009 14:35

Цитата:
У меня при компиляции выдаёт ошибку "Out of memory" с чем это может связано?

Prince_Tails
Даже не знаю, юзал этот скрипт и юзаю до сих пор всё работает.
Автор: doombuster
Дата сообщения: 02.05.2009 14:44
ExpeditorR

Цитата:
Предлагаю вам мою новую библиотеку isFlash.dll v1.00
Библиотека предназначена для показа flash анимации и воспроизведение flv файлов в фоновом окне Inno Setup, пример использования смотрите в архиве.

Отличная работа. А к WizardForm её можно прикрутить?
Автор: Qarma
Дата сообщения: 02.05.2009 15:09

Цитата:
А к WizardForm её можно прикрутить?

Это было бы здорово
Автор: doombuster
Дата сообщения: 02.05.2009 15:22
Qarma

Цитата:
Это было бы здорово


Оказывается можно) Только надо поправить)



Осталось еще лейблы заперентить. Тока непонятно, кто перент? И как флешу растянуть на WizardForm?
[more]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
Compression=zip

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


[Files]
Source: compiler:examples\MyProg.exe; DestDir: "{app}"
Source: isFlash.dll; DestDir: {tmp}; Flags: dontcopy
Source: 1.swf; DestDir: {tmp}; Flags: dontcopy


[Icons]
Name: "{group}\&#211;&#228;&#224;&#235;&#232;&#242;&#252;"; IconFilename: "{app}\unins000.exe"; Filename: "{app}\unins000.exe"

[Code]
var

WelcomeLabel1,WelcomeLabel2,PageNameLabel,PageDescriptionLabel,SelectDirLabel,SelectDirBrowseLabel,
DiskSpaceLabel,StatusLabel,BeveledLabel: TLabel;

function GetSystemMetrics(nIndex:Integer):Integer; external 'GetSystemMetrics@user32.dll stdcall';
procedure initialize(hwnd:thandle; l,t,w,h:integer;BGColor:Tcolor;transparent:boolean); external 'initialize@files:isFlash.dll stdcall';
procedure ShowFlash(Fpath:pchar); external 'ShowFlash@files:isFlash.dll stdcall';
procedure destroy; external 'destroy@files:isFlash.dll stdcall';

Procedure HideAll();
begin
WizardForm.Bevel.Hide
WizardForm.Bevel1.Hide
WizardForm.MainPanel.Hide
WizardForm.BeveledLabel.Hide
WizardForm.OuterNotebook.Hide
WizardForm.InnerNotebook.Hide

WelcomeLabel1.Hide
WelcomeLabel2.Hide
SelectDirLabel.Hide
SelectDirBrowseLabel.Hide
WizardForm.DirEdit.Hide
WizardForm.DirBrowseButton.Hide
DiskSpaceLabel.Hide
StatusLabel.Hide
WizardForm.ProgressGauge.Hide

end;

Procedure InitializeSkin();
begin

WizardForm.ClientWidth:=497
WizardForm.ClientHeight:=361
WizardForm.BorderStyle := bsDialog;
WizardForm.Font.Color:=$ffffff
WizardForm.Center

WelcomeLabel1:=TLabel.Create(WizardForm);
WelcomeLabel1.Left:=ScaleX(150);
WelcomeLabel1.Top := ScaleY(15);
WelcomeLabel1.Width := ScaleX(320);
WelcomeLabel1.Height := ScaleY(75);
WelcomeLabel1.AutoSize := False;
WelcomeLabel1.WordWrap := True;
WelcomeLabel1.Font.Color := clwhite;
// WelcomeLabel1.Font.Style := [fsBold];
// WelcomeLabel1.Font.Name:='MS Sans Serif';
WelcomeLabel1.Font.Size := 14;
WelcomeLabel1.Transparent := True;
WelcomeLabel1.Parent := WizardForm;

WelcomeLabel2:=TLabel.Create(WizardForm);
WelcomeLabel2.Left := ScaleX(150);
WelcomeLabel2.Top := ScaleY(90);
WelcomeLabel2.Width := ScaleX(320);
WelcomeLabel2.Height := ScaleY(200);
WelcomeLabel2.AutoSize := False;
WelcomeLabel2.WordWrap := True;
WelcomeLabel2.Font.Color := clwhite;
WelcomeLabel2.Font.Size := 8;
WelcomeLabel2.Transparent := True;
WelcomeLabel2.Parent := WizardForm;

PageNameLabel := TLabel.Create(WizardForm);
PageNameLabel.Left := ScaleX(25);
PageNameLabel.Top := ScaleY(10);
PageNameLabel.Width := ScaleX(300);
PageNameLabel.Height := ScaleY(14);
PageNameLabel.AutoSize := False;
PageNameLabel.WordWrap := True;
PageNameLabel.Font.Color := clwhite;
PageNameLabel.Font.Style := [fsBold];
PageNameLabel.Transparent := True;
PageNameLabel.Parent := WizardForm;

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

BeveledLabel:=TLabel.Create(WizardForm)
BeveledLabel.Left:=30
BeveledLabel.Top:=340
BeveledLabel.Font.Color:=clwhite
BeveledLabel.Font.Style := [fsBold]
BeveledLabel.Transparent:=True
BeveledLabel.Parent:=WizardForm

WizardForm.BeveledLabel.Left:=80

// wpSelectDir
SelectDirLabel:=TLabel.Create(WizardForm)
SelectDirLabel.Left:=150
SelectDirLabel.Top:=80
SelectDirLabel.Width:=320
SelectDirLabel.Height:=28
SelectDirLabel.AutoSize:=False
SelectDirLabel.WordWrap:=True
SelectDirLabel.Font.Color := clwhite
SelectDirLabel.Font.Name:='Tahoma'
SelectDirLabel.Font.Size:=8
SelectDirLabel.Font.Style := [fsBold]
SelectDirLabel.Transparent:=True
SelectDirLabel.Parent:=WizardForm

SelectDirBrowseLabel:=TLabel.Create(WizardForm)
SelectDirBrowseLabel.Left:=150
SelectDirBrowseLabel.Top:=120
SelectDirBrowseLabel.Width:=320
SelectDirBrowseLabel.Height:=28
SelectDirBrowseLabel.AutoSize:=False
SelectDirBrowseLabel.WordWrap:=True
SelectDirBrowseLabel.Font.Color := clwhite
SelectDirBrowseLabel.Transparent:=True
SelectDirBrowseLabel.Parent:=WizardForm

WizardForm.DirEdit.Left:=150
WizardForm.DirEdit.Top:=205
WizardForm.DirEdit.Width:=240
WizardForm.DirEdit.Height:=24
WizardForm.DirEdit.Color:=$000000
WizardForm.DirEdit.Font.Color:=$ffffff
WizardForm.DirEdit.Parent:= WizardForm

WizardForm.DirBrowseButton.Left:=400
WizardForm.DirBrowseButton.Top:=202
WizardForm.DirBrowseButton.Width:=73
WizardForm.DirBrowseButton.Height:=27
WizardForm.DirBrowseButton.Parent:= WizardForm

DiskSpaceLabel:=TLabel.Create(WizardForm)
DiskSpaceLabel.Left:=150
DiskSpaceLabel.Top:=250
DiskSpaceLabel.Width:=320
DiskSpaceLabel.Height:=28
DiskSpaceLabel.AutoSize:=False
DiskSpaceLabel.WordWrap:=True
DiskSpaceLabel.Font.Color := clwhite
DiskSpaceLabel.Transparent:=True

DiskSpaceLabel.Parent:=WizardForm

// wpInstalling
StatusLabel:=TLabel.Create(WizardForm)
StatusLabel.Left:=205
StatusLabel.Top:=90
StatusLabel.Font.Color := clWindow
StatusLabel.Transparent:=True
StatusLabel.Caption:=WizardForm.Caption +'...'
//StatusLabel.Caption:=WizardForm.StatusLabel.Caption
StatusLabel.Parent:=WizardForm

WizardForm.ProgressGauge.Left:=50
WizardForm.ProgressGauge.Top:=200
WizardForm.ProgressGauge.Width:=400
WizardForm.ProgressGauge.Height:=20
WizardForm.ProgressGauge.Parent:= WizardForm
end;


Procedure ShowPageComponents(CurPageID: Integer);
begin
BeveledLabel.Caption:=WizardForm.BeveledLabel.Caption
WelcomeLabel1.Caption:=WizardForm.WelcomeLabel1.Caption
WelcomeLabel2.Caption:=WizardForm.WelcomeLabel2.Caption
PageNameLabel.Caption:=WizardForm.PageNameLabel.Caption
PageDescriptionLabel.Caption:=WizardForm.PageDescriptionLabel.Caption
SelectDirLabel.Caption:=WizardForm.SelectDirLabel.Caption
SelectDirBrowseLabel.Caption:=WizardForm.SelectDirBrowseLabel.Caption
DiskSpaceLabel.Caption:=WizardForm.DiskSpaceLabel.Caption
StatusLabel.Caption:=WizardForm.StatusLabel.Caption

Case CurPageID of

wpWelcome:
begin
WelcomeLabel1.Show
WelcomeLabel2.Show

end

wpSelectDir:
begin
SelectDirLabel.Show
SelectDirBrowseLabel.Show
WizardForm.DirEdit.Show
WizardForm.DirBrowseButton.Show
DiskSpaceLabel.Show
end

wpInstalling:
begin
StatusLabel.Show
WizardForm.ProgressGauge.Show

end
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
HideAll
ShowPageComponents(CurPageID)
end;

Procedure InitializeWizard();
begin
InitializeSkin
WizardForm.Position:=poScreenCenter;
WizardForm.CancelButton.BringToFront;
//MainForm.BORDERSTYLE:=bsNone
WizardForm.Left:=0
WizardForm.Top:=0
//WizardForm.Width:=497
//WizardForm.Height:=361
ExtractTemporaryFile('1.swf')
initialize(WizardForm.handle,WizardForm.Left,WizardForm.top,WizardForm.Width,WizardForm.Height,clblack,true);
ShowFlash(ExpandConstant('{tmp}') + '\1.swf');
end;

procedure DeinitializeSetup();
begin
destroy;
end;
[/more] может есть другой способ?


Супер, пока устанавливается что-то здоровое, можно во флеш игру рубится: [more] [/more]
Автор: Prince_Tails
Дата сообщения: 02.05.2009 16:02
Qarma
всё теперь нормально, но теперь при установке говорит что файл Arc.exe не найдет, но он прописан в секции файл
Автор: Rover_2000
Дата сообщения: 02.05.2009 18:26
spider91
А в какую секцию прописывать???
Автор: spider91
Дата сообщения: 02.05.2009 18:43
Rover_2000

сразу после распаковки архива
Автор: Rover_2000
Дата сообщения: 02.05.2009 18:57
spider91
Не понятно
Автор: doombuster
Дата сообщения: 02.05.2009 19:13
Rover_2000
А кусок скрипта нельзя показать? Ведь непонятно как у тебя реализована распаковка. Она может через [_run], а может через [_code] быть)
Автор: perf92
Дата сообщения: 02.05.2009 19:29
Люди помогите пожалуйста.
Как мне соединить это
[more]const
BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;

var
mp3Handle: HWND;
mp3Name: String;
PlayButton, PauseButton, StopButton: TPanel;
PlayImage, PauseImage, StopImage: TBitmapImage;
PlayLabel, PauseLabel, StopLabel: TLabel;
MouseLabel: Tlabel;

function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): DWORD;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';

function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_ChannelIsActive(handle: DWORD): Integer;
external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';

function BASS_ChannelPause(handle: DWORD): Boolean;
external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';

function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';

procedure PlayMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := -96
end;

procedure PlayMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := 0
end;

procedure PlayMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if PlayImage.Left <> -96 then PlayImage.Left := -192
StopImage.Left := -64
end;

procedure PauseMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PauseImage.Left := -128
end;

procedure PauseMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PauseImage.Left := -32
end;

procedure PauseMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if PauseImage.Left <> -128 then PauseImage.Left := -224
StopImage.Left := -64
end;

procedure StopMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StopImage.Left := -160
end;

procedure StopMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StopImage.Left := -64
end;

procedure StopMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if StopImage.Left <> -160 then StopImage.Left := -256
PlayImage.Left := 0
PauseImage.Left := -32
end;

procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := 0
PauseImage.Left := -32
StopImage.Left := -64
end;

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('sound.mp3');
mp3Name := ExpandConstant('{tmp}\sound.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
Result := True;
end;

procedure PlayButtonOnClick(Sender: TObject);
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
PlayButton.Hide
PauseButton.Show
end;
BASS_ACTIVE_STOPPED:
begin
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
PlayButton.Hide
PauseButton.Show
end;
end;
end;

procedure PauseButtonOnClick(Sender: TObject);
begin
BASS_ChannelPause(mp3Handle);
PauseButton.Hide
PlayButton.Show
end;

procedure StopButtonOnClick(Sender: TObject);
begin
BASS_Stop();
BASS_Free();
PauseButton.Hide
PlayButton.Show
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('MusicButton.bmp')

MouseLabel := TLabel.Create(WizardForm)
MouseLabel.Width := WizardForm.Width
MouseLabel.Height := WizardForm.Height
MouseLabel.Autosize := False
MouseLabel.Transparent := True
MouseLabel.OnMouseMove := @MouseMove
MouseLabel.Parent := WizardForm

PlayButton := TPanel.Create(WizardForm)
PlayButton.Left := 50
PlayButton.Top := 320
PlayButton.Width := 32
PlayButton.Height := 33
PlayButton.Cursor := crHand
PlayButton.ShowHint := True
PlayButton.Hint := '&#194;&#238;&#241;&#239;&#240;&#238;&#232;&#231;&#226;&#229;&#228;&#229;&#237;&#232;&#229; &#236;&#243;&#231;&#251;&#234;&#232;'
PlayButton.OnClick := @PlayButtonOnClick
PlayButton.Parent := WizardForm

PlayImage := TBitmapImage.Create(WizardForm)
PlayImage.Left := 0
PlayImage.Top := 0
PlayImage.Width := 288
PlayImage.Height := 33
PlayImage.Enabled := False
PlayImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
PlayImage.Parent := PlayButton
//
PlayImage.ReplaceColor:=$E2E2E2
PlayImage.ReplaceWithColor:=clBtnFace


PlayLabel := TLabel.Create(WizardForm)
PlayLabel.Width := PlayButton.Width
PlayLabel.Height := PlayButton.Height
PlayLabel.Autosize := False
PlayLabel.Transparent := True
PlayLabel.OnClick := @PlayButtonOnClick
PlayLabel.OnMouseDown := @PlayMouseDown
PlayLabel.OnMouseUp := @PlayMouseUp
PlayLabel.OnMouseMove := @PlayMouseMove
PlayLabel.Parent := PlayButton

PauseButton := TPanel.Create(WizardForm)
PauseButton.Left := 50
PauseButton.Top := 320
PauseButton.Width := 32
PauseButton.Height := 33
PauseButton.Cursor := crHand
PauseButton.ShowHint := True
PauseButton.Hint := '&#207;&#240;&#232;&#238;&#241;&#242;&#224;&#237;&#238;&#226;&#232;&#242;&#252; &#236;&#243;&#231;&#251;&#234;&#243;'
PauseButton.OnClick := @PauseButtonOnClick
PauseButton.Parent := WizardForm

PauseImage := TBitmapImage.Create(WizardForm)
PauseImage.Left := -32
PauseImage.Top := 0
PauseImage.Width := 288
PauseImage.Height := 33
PauseImage.Enabled := False
PauseImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
PauseImage.Parent := PauseButton
//
PauseImage.ReplaceColor:=$E2E2E2
PauseImage.ReplaceWithColor:=clBtnFace

PauseLabel := TLabel.Create(WizardForm)
PauseLabel.Width := PauseButton.Width
PauseLabel.Height := PauseButton.Height
PauseLabel.Autosize := False
PauseLabel.Transparent := True
PauseLabel.OnClick := @PauseButtonOnClick
PauseLabel.OnMouseDown := @PauseMouseDown
PauseLabel.OnMouseUp := @PauseMouseUp
PauseLabel.OnMouseMove := @PauseMouseMove
PauseLabel.Parent := PauseButton

StopButton := TPanel.Create(WizardForm)
StopButton.Left := 82
StopButton.Top := 320
StopButton.Width := 32
StopButton.Height := 33
StopButton.Cursor := crHand
StopButton.ShowHint := True
StopButton.Hint := '&#206;&#241;&#242;&#224;&#237;&#238;&#226;&#232;&#242;&#252; &#236;&#243;&#231;&#251;&#234;&#243;'
StopButton.OnClick := @StopButtonOnClick
StopButton.Parent := WizardForm

StopImage := TBitmapImage.Create(WizardForm)
StopImage.Left := -64
StopImage.Top := 0
StopImage.Width := 288
StopImage.Height := 33
StopImage.Enabled := False
StopImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
StopImage.Parent := StopButton
//
StopImage.ReplaceColor:=$E2E2E2
StopImage.ReplaceWithColor:=clBtnFace

StopLabel := TLabel.Create(WizardForm)
StopLabel.Width := StopButton.Width
StopLabel.Height := StopButton.Height
StopLabel.Autosize := False
StopLabel.Transparent := True
StopLabel.OnClick := @StopButtonOnClick
StopLabel.OnMouseDown := @StopMouseDown
StopLabel.OnMouseUp := @StopMouseUp
StopLabel.OnMouseMove := @StopMouseMove
StopLabel.Parent := StopButton
end;

procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;[/more]

c этим

[more]var n: Integer; FreeMB, TotalMB: Cardinal; VolumeName, FileSystemName: String; VolumeSerialNo, MaxComponentLength, FileSystemFlags: Longint; ListBox: TListBox; StartMenuTreeView: TStartMenuFolderTreeView;

const oneMB= 1024*1024;
function GetLogicalDrives: DWord; external 'GetLogicalDrives@kernel32.dll stdcall';
function GetDriveType(nDrive: String): Longint; external 'GetDriveTypeA@kernel32.dll stdcall';
function GetVolumeInformation(PathName,VolumeName: PChar; VolumeNameSize,VolumeSerialNumber,MaxComponentLength,FileSystemFlags: Longint; FileSystemName: PChar; FileSystemNameSize: Longint): Longint; external 'GetVolumeInformationA@kernel32.dll stdcall';
function MessageBox(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer; external 'MessageBoxA@user32.dll stdcall';

Function ByteOrTB(Bytes: Extended; noMB: Boolean): String; { &#207;&#229;&#240;&#229;&#226;&#238;&#228; &#247;&#232;&#241;&#235;&#224; &#226; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#229; &#225;&#242;/&#202;&#225;/&#204;&#225;/&#195;&#225;/&#210;&#225; (&#228;&#238; 3&#245; &#231;&#237;&#224;&#234;&#238;&#226; &#239;&#238;&#241;&#235;&#229; &#231;&#224;&#239;&#255;&#242;&#238;&#233;)}
Begin
    if not noMB then Result:= FloatToStr(Int(Bytes)) +' &#204;&#225;' else
        if Bytes < 1024 then Result:= FloatToStr(Int(Bytes)) +' &#193;&#242;' else
            if Bytes/1024 < 1024 then Result:= FloatToStr(round((Bytes/1024)*10)/10) +' &#202;&#225;' else
                If Bytes/oneMB < 1024 then Result:= FloatToStr(round(Bytes/oneMB*100)/100) +' &#204;&#225;' else
                    If Bytes/oneMB/1000 < 1024 then Result:= FloatToStr(round(Bytes/oneMB/1024*1000)/1000) +' &#195;&#225;' else
                        Result:= FloatToStr(round(Bytes/oneMB/oneMB*1000)/1000) +' &#210;&#225;'
    StringChange(Result, ',', '.')
End;

Function DelSP(String: String): String; { &#211;&#228;&#224;&#235;&#229;&#237;&#232;&#229; &#237;&#224;&#247;&#224;&#235;&#252;&#237;&#251;&#245;, &#234;&#238;&#237;&#229;&#247;&#237;&#251;&#245; &#232; &#239;&#238;&#226;&#242;&#238;&#240;&#237;&#251;&#245; &#239;&#240;&#238;&#225;&#229;&#235;&#238;&#226; }
    Begin    while (Pos(' ', String) > 0) do Delete(String, Pos(' ', String), 1); Result:= Trim(String); End;

Function CutString(String: String; MaxLength: Longint): String; { &#206;&#225;&#240;&#229;&#231;&#224;&#242;&#252; &#241;&#242;&#240;&#238;&#234;&#243; &#228;&#238; &#231;&#224;&#228;&#224;&#237;&#237;&#238;&#227;&#238; &#234;&#238;&#235;-&#226;&#224; &#241;&#232;&#236;&#226;&#238;&#235;&#238;&#226;}
    Begin
        if Length(String) > MaxLength then Result:= Copy(String, 1, 6) +'...'+ Copy(String, Length(String) - MaxLength +9, MaxLength)
        else Result:= String;
    End;

Procedure GetDiskInfo(Disk: String);
    Begin
        FileSystemName:= StringOfChar(' ', 32); VolumeName:= StringOfChar(' ', 256);
            GetVolumeInformation(Disk, VolumeName, 255, VolumeSerialNo, MaxComponentLength, FileSystemFlags, FileSystemName, 31);
        FileSystemName:= DelSp(FileSystemName); VolumeName:= DelSp(VolumeName); if VolumeName='' then VolumeName:='&#225;&#229;&#231; &#236;&#229;&#242;&#234;&#232;';
    End;

Procedure ListBoxRefresh;    var FreeB, TotalB: Cardinal; Path, String: string; Begin
    ListBox.Items.Clear
for n:= 1 to 31 do    // &#228;&#232;&#241;&#234; '&#192;' &#239;&#240;&#238;&#239;&#243;&#241;&#242;&#232;&#242;&#252;
    if (GetLogicalDrives and (1 shl n)) > 0 then
        if (GetDriveType(Chr(ord('A') + n) +':\') = 2) or (GetDriveType(Chr(ord('A') + n) +':\') = 3) then
            if GetSpaceOnDisk(Chr(ord('A') + n) +':\', True, FreeMB, TotalMB) then ListBox.Items.Add(Chr(ord('A') + n) +':');
for n:= 0 to ListBox.Items.Count -1 do begin
    Path:= Copy(ListBox.Items[n],1,2) +'\'        { &#229;&#241;&#235;&#232; &#226; &#237;&#224;&#234;&#238;&#239;&#232;&#242;&#229;&#235;&#229; &#237;&#229;&#242; &#228;&#232;&#241;&#234;&#224;, &#239;&#240;&#238;&#239;&#243;&#241;&#242;&#232;&#242;&#252; &#238;&#225;&#237;&#238;&#226;&#235;&#229;&#237;&#232;&#229; }
    if GetSpaceOnDisk(Path, False, FreeB, TotalB) and GetSpaceOnDisk(Path, True, FreeMB, TotalMB) then begin GetDiskInfo(Path);
        if FreeB >= $7FFFFFFF then String:= PadL(ByteOrTB(FreeMB*oneMB, true),10) else String:= PadL(ByteOrTB(FreeB, true),10);
        if TotalB >= $7FFFFFFF then begin TotalB:= TotalMB; FreeB:= FreeMB; String:= PadL(ByteOrTB(TotalMB*oneMB, true),11) +' &#226;&#241;&#229;&#227;&#238;| '+ String end else String:= PadL(ByteOrTB(TotalB, true),11) +' &#226;&#241;&#229;&#227;&#238;| '+ String;
    ListBox.Items[n]:= Copy(Path,1,2) + String + PadL(FloatToStr(round(FreeB/TotalB*100)),3)+ '% &#241;&#226;&#238;&#225;|'+ PadL(FileSystemName,5)+ '| '+ CutString(VolumeName,9); end; end;
End;

Procedure ObjectOnClick(Sender: TObject); Begin
Case TObject(Sender) of
    ListBox:    for n:= 0 to ListBox.Items.Count-1 do if ListBox.Selected[n] then WizardForm.DirEdit.Text:= Copy(ListBox.Items[n],1,1) +Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text))
    StartMenuTreeView:    if StartMenuTreeView.Directory <> '' then WizardForm.GroupEdit.Text:= StartMenuTreeView.Directory else WizardForm.GroupEdit.Text:= '{#SetupSetting("DefaultGroupName")}'
    WizardForm.NoIconsCheck:    begin WizardForm.GroupEdit.Enabled:= not(WizardForm.GroupEdit.Enabled); StartMenuTreeView.Enabled:= WizardForm.GroupEdit.Enabled; WizardForm.GroupBrowseButton.Enabled:= WizardForm.GroupEdit.Enabled end;
end; End;

Function NextButtonClick(CurPageID: Integer): Boolean; Begin
    Result:= True
    if (CurPageID = wpSelectDir) and (Pos(Uppercase(ExpandConstant('{win}')), Uppercase(ExpandConstant('{app}'))) > 0) then Result:= MessageBox(StrToInt(ExpandConstant('{wizardhwnd}')), ExpandConstant('{cm:SysDirSelect}'), '&#211;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#224; &#226; &#241;&#232;&#241;&#242;&#229;&#236;&#237;&#243;&#254; &#239;&#224;&#239;&#234;&#243;', MB_YESNO or $30) = idYes;
End;

Procedure CurPageChanged(CurPageID: Integer);
Begin
    if CurPageID = wpSelectDir then ListBoxRefresh
End;

Procedure InitializeWizard;
Begin
    ListBox:= TListBox.Create(WizardForm)
        ListBox.SetBounds(WizardForm.DirEdit.Left, WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + 8, WizardForm.DirBrowseButton.Left + WizardForm.DirBrowseButton.Width - WizardForm.DirEdit.Left, WizardForm.DiskSpaceLabel.Top - (WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + 12))
        ListBox.Font.Size:= 9
        ListBox.Font.Style:= [fsBold]
        ListBox.Font.Name:= 'Courier New';
        ListBox.OnClick:= @ObjectOnClick;
        ListBox.Parent:= WizardForm.SelectDirPage;
    WizardForm.NoIconsCheck.SetBounds(WizardForm.DiskSpaceLabel.Left + 96, WizardForm.DiskSpaceLabel.Top + 1, WizardForm.NoIconsCheck.Width, WizardForm.NoIconsCheck.Height)
        WizardForm.NoIconsCheck.OnClick:= @ObjectOnClick
        WizardForm.NoIconsCheck.Parent:= WizardForm.SelectProgramGroupPage
        WizardForm.NoIconsCheck.Show
    StartMenuTreeView:= TStartMenuFolderTreeView.Create(WizardForm)
        StartMenuTreeView.SetPaths(ExpandConstant('{userprograms}'), ExpandConstant('{commonprograms}'), ExpandConstant('{userstartup}'), ExpandConstant('{commonstartup}'));
        StartMenuTreeView.SetBounds(ListBox.Left, ListBox.Top, ListBox.Width, ListBox.Height)
        StartMenuTreeView.Parent:= WizardForm.SelectProgramGroupPage
        StartMenuTreeView.Cursor:= crHand
        StartMenuTreeView.OnChange:=@ObjectOnClick
End;[/more]
Чтобы все работало. Заранее благодарен!
Автор: Rover_2000
Дата сообщения: 02.05.2009 19:47
doombuster
[more]; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[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={{71D31D4C-D96B-4AB1-B4E3-A1AB216EEBC0}
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=D:\
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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

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

[Files]
Source: C:\Program Files\Inno Setup 5\Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
Source: D:\Games\123\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: C:\Documents and Settings\Мои документы\Новая папка\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: D:\Games\123\SUPPORT\TOOLS\TOOLS.exe; DestDir:{app}; Flags: deleteafterinstall
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe
Name: {commondesktop}\My Program; Filename: {app}\MyProg.exe; Tasks: desktopicon

[Run]
Filename: {app}\SUPPORT\TOOLS\TOOLS.exe; WorkingDir: {app}; Parameters: "-x archive.7z -y -o"; StatusMsg: "Идет распаковка архива..."
Filename: {app}\MyProg.exe; Description: {cm:LaunchProgram,My Program}


[Registry]
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: string; ValueName: InstallPath; ValueData: D:\Games\Activision\X-Men Origins - Wolverine(TM)
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: string; ValueName: InstallDrive; ValueData: J:\
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: string; ValueName: LanguageCode; ValueData: ENU
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: string; ValueName: Language; ValueData: 1033
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: string; ValueName: StartMenuFolder; ValueData: C:\Documents and Settings\All Users\Главное меню\Программы\X-Men Origins - Wolverine(TM)
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: string; ValueName: Version; ValueData: 1.0
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: string; ValueName: IntVersion; ValueData: 26.0
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: string; ValueName: UninstallString; ValueData: "\""C:\Program Files\InstallShield Installation Information\{{7F0B94C6-828C-4EDE-A86B-ECF4D792B68D}\uninstall.exe\"" -runfromtemp -l0x0409"
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: string; ValueName: EXEString; ValueData: D:\Games\Activision\X-Men Origins - Wolverine(TM)\Binaries\Wolverine.exe
Root: HKLM; SubKey: SOFTWARE\Activision\Wolverine; ValueType: dword; ValueName: GameLanguage; ValueData: $00000000[/more]

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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