Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка приложений (http://forum.oszone.net/forumdisplay.php?f=61)
-   -   [архив] Скрипты Inno Setup. Помощь и советы [часть 2] (http://forum.oszone.net/showthread.php?t=148703)

Serega 23-08-2009 22:06 1201436

[архив] Скрипты Inno Setup. Помощь и советы [часть 2]
 
Вложений: 1
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;
    Предыдущая версия: 5.3.0 [07.04.2009] - Скачать (зеркало) | Русификатор (зеркало);

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.3 [11.09.2009] - Скачать;


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

EN130 23-08-2009 23:26 1201469

вопрос немножко не по теме, но покачто некуда задавать.
У меня есть битый установщик inno setup. можно ли заставить его автоматически записать в лог имена и адреса не извлеченных файлов?
И может можно не сильно напрягаясь извлеч битые файлы. И пофик, что они извликуться битыми.

Serega 23-08-2009 23:41 1201477

Цитата:

Цитата EN130
У меня есть битый установщик inno setup »

Подробнее...
Можете скинуть инсталлятор, если только он не большой, у меня интернет платный.

EN130 23-08-2009 23:49 1201482

Инсталятор большой. Но если Вам нужен толко Setup.exe, тогда могу. он маленький :)

Serega 24-08-2009 00:06 1201492

Цитата:

Цитата EN130
Но если Вам нужен толко Setup.exe, тогда могу. »

Не поможет, тогда объясните подробнее, как понять битый инсталлятор. Т.е. вы запускаете инсталлятор, а он не запускается или выскакивает сообщение?

EN130 24-08-2009 00:23 1201497

Попробую.
Инсталятор состоит из файла setup.exe, setup-1.bin и вот setup-1.bin как раз битый (ошибка в данныйх CRC) Я скопировал с диска с помощю одной программы. Без понятия, что она сделала с битыми секторами. Я запускаю инсталятор, указываю все необходимые параметры и начинается установка. И когда доходит до битых секторов, на первом файле выдало сообщение:
Цитата:

Произошла ошибка при попытке копирования файла.
Исходный файл поврежден
Прервать Повторить Пропустить
На всех остольных поврежденных файлах
Цитата:

Произошла ошибка при попытке чтения исходного файла.
Исходный файл поврежден
Прервать Повторить Пропустить
Так десяток файлов. Потом кончаются битые сектора, и устаовка идет дальше.

volk1234 24-08-2009 00:46 1201514

EN130 и Все
дальнейшее обсуждение установщика в новой теме. Ссылка в шапке.

zl0ybot 24-08-2009 02:05 1201542

Все привет надо бы вот этот скрипт доделать
читать дальше »
[setup]
AppName=Hitman
AppVerName=Hitman
DefaultDirName={pf}\Hitman
OutputDir=.
WizardImageFile=WizardImageFile.bmp
WizardSmallImageFile=WizardSmallImageFile.bmp
DisableReadyPage=true
UninstallFilesDir={app}\Uninstall

[Languages]
Name: "ENG"; MessagesFile: "compiler:Default.isl"
Name: "RUS"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]

Source: 3.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 1.bmp; Flags: dontcopy;

[Run]
Filename: {src}\DirectX\dxsetup.exe; Parameters: /silent; StatusMsg: ExpandConstant('{cm:UP}'); Check: DirectX

[CustomMessages]
ENG.PAGE_CAPTION=Setup has finished installing Vin Diesel Wheelman on your computer.
RUS.PAGE_CAPTION=Программа Vin Diesel Wheelman установлена на Ваш компютер.
ENG.STR=Click Finish to exit Setup.
RUS.STR=Нажмите «Завершить», чтобы выйти из программы установки.
ENG.BUT=Install
RUS.BUT=Установить
ENG.SPACE=Available place on disk:
RUS.SPACE=Доступно места на диске:
ENG.SPACE1=Place is Required on disk:
RUS.SPACE1=Требуется места на диске:
ENG.DRT=Will Update DirectX
RUS.DRT=Обновить DirectX
ENG.UP=Goes the renovation DirectX...
RUS.UP=Идет обновление DirectX...
ENG.GB=GB
RUS.GB=Гб
[_CODE_]

var
Upload: TCheckBox;
bottom_img:TBitmapImage;
lblCheckBox, lblSelectDir, lblSelectDirBrowse: TLabel;
PageNameLabel, PageDescriptionLabel: TLabel;
WLabel1, WLabel2,
FLabel1, FLabel2, FLabel3: TLabel;
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
BmpFile: TBitmapImage;

function DirectX: Boolean;
begin
Result:=Upload.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 := ExpandConstant('{cm:SPACE} ')+ FloatToStr(round(FreeMB/1024*100)/100) + ExpandConstant(' {cm:GB}') else
FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True;
end;

procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ FloatToStr(round(NeedSize/1024*100)/100) + ExpandConstant(' {cm:GB}') else
NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ IntToStr(NeedSize)+ ' MB';
end;

// задал процедуру, чтоб отмечался чебокс еси кликнуть по надписи lblCheckBox
procedure lblCheckBoxOnClick(Sender: TObject);
begin
if Upload.Checked = False then
Upload.Checked:= True else
Upload.Checked:= False;
end;

procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Visible:= False;
ExtractTemporaryFile('1.bmp');
ExtractTemporaryFile('3.bmp');

NeedSize:= 7000;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.Width:= ScaleX(497);
BmpFile.Height:= ScaleY(252);
BmpFile.Parent:= WizardForm.SelectDirPage;


bottom_img:= TBitmapImage.Create(WizardForm);
bottom_img.Bitmap.LoadFromFile(ExpandConstant('{tmp}\3.bmp'));
{первые 2 параметра - координаты левогого верхнего угла по горизонтали и вертикали, дальше ширина и высота,
до которой растянуть}
bottom_img.SetBounds(0, 315, 497, 48);
bottom_img.Parent:= WizardForm;
bottom_img.Stretch:= True;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
DiskSpaceLabel.Hide;
SelectDirBitmapImage.Hide;
SelectDirBrowseLabel.Hide;
SelectDirLabel.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;

DirBrowseButton.Left:= DirBrowseButton.Left + ScaleX(40);
DirBrowseButton.Top:= DirBrowseButton.Top + ScaleY(12);
DirEdit.Left:= DirEdit.Left + ScaleX(40);
DirEdit.Top:= DirEdit.Top + ScaleY(12);

WizardBitmapImage.Width:= 497;
WizardBitmapImage.Height:= 314;
WizardBitmapImage2.Width:= 497;
WizardBitmapImage2.Height:= 314;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left:= Mainpanel.Left;
Top:= Mainpanel.Top;
Width:= Mainpanel.Width;
Height:= MainPanel.Height;
end;
end;
end;

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

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

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

FLabel2:=TLabel.Create(WizardForm);
with FLabel2 do
begin
Top:= ScaleY(76);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(53);
AutoSize:= False;
WordWrap:= True;
Font.Color:= clWhite;
ShowAccelChar:= False;
Caption:= ExpandConstant('{cm:PAGE_CAPTION}');
Transparent:= True;
Parent:= WizardForm.FinishedPage;
end;

FLabel3 :=TLabel.Create(WizardForm);
with FLabel3 do
begin
Top := ScaleY(110);
Left := ScaleX(176);
Width := ScaleX(301);
Height := ScaleY(53);
AutoSize := False;
WordWrap := True;
Font.Color:= clblack;
ShowAccelChar := False;
Caption := ExpandConstant('{cm:STR}');
Transparent := True;
Parent := WizardForm.FinishedPage;
end;

// уменьшил размер CheckBox'а, по другому никак
Upload:= TCheckBox.Create(WizardForm);
with Upload do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(14);
Height:= ScaleY(14);
TabOrder:= 0;
Checked:= False;
end;

// создаём надпись для CheckBox'а
lblCheckBox:= TLabel.Create(WizardForm);
with lblCheckBox do
begin
Caption:= ExpandConstant('{cm:DRT}');
Left:= WizardForm.DirEdit.Left + 20;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Parent:= WizardForm.SelectDirPage;
OnClick:= @lblCheckBoxOnClick;
end;

// создаём lblSelectDir
lblSelectDir:= TLabel.Create(WizardForm);
with lblSelectDir do
begin
Caption:= WizardForm.SelectDirLabel.Caption;
Left:= ScaleX(40);
Top:= WizardForm.SelectDirLabel.Top + ScaleY(12);
Width:= WizardForm.SelectDirLabel.Width;
Height:= WizardForm.SelectDirLabel.Height;
Transparent := True;
Parent:= WizardForm.SelectDirPage;
end;

// создаём lblSelectDirBrowse
lblSelectDirBrowse:= TLabel.Create(WizardForm);
with lblSelectDirBrowse do
begin
Caption:= WizardForm.SelectDirBrowseLabel.Caption;
Left:= ScaleX(40);
Top:= WizardForm.SelectDirBrowseLabel.Top + ScaleY(12);
Width:= WizardForm.SelectDirBrowseLabel.Width;
Height:= WizardForm.SelectDirBrowseLabel.Height;
WordWrap:= True;
Transparent:= True;
Parent:= WizardForm.SelectDirPage;
end;

NeedSpaceLabel:= TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= ScaleY(202);
Width:= ScaleX(209);
Height:= ScaleY(13);
Transparent:= True;
end;

FreeSpaceLabel:= TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= ScaleY(220);
Width:= ScaleX(209);
Height:= ScaleY(13);
Transparent:= True;
end;

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

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:= clblack;
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:= clblack;
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption:= WizardForm.PageDescriptionLabel.Caption;
if CurPageID = wpSelectDir then
begin
WizardForm.NextButton.Caption:= ExpandConstant('{cm:BUT}');
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False;
with WizardForm do
begin
InnerNotebook.Left := ScaleX(0);
InnerNotebook.Top := ScaleY(60);
InnerNotebook.Width := ScaleX(497);
InnerNotebook.Height := ScaleY(252)
end;
end;
if CurPageID = wpInstalling then
begin
with WizardForm do
begin
BmpFile.Parent:= WizardForm.InstallingPage;
ProgressGauge.Left:= 20;
ProgressGauge.Top:= 160;
ProgressGauge.Width:= 215;
ProgressGauge.Height:= 20;
end;
end;
end;
вот не достататки а патом все соединить с этим скриптом
читать дальше »
#define MainExe "{app}\Smersh.exe"
#define GDFBinary "{app}\Smersh.exe"

[Setup]
AppName=Смерть шпионам.Момент истины
AppVerName=Смерть шпионам.Момент истины
DefaultDirName={pf}\Смерть шпионам.Момент истины
OutputDir=Output
Compression=none
DisableReadyPage=true
InternalCompressLevel=ultra64
SolidCompression=true
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64 x86
RestartIfNeededByRun=false
UsePreviousAppDir=false
DirExistsWarning=no
DisableProgramGroupPage=true
DefaultGroupName=Bully
UsePreviousGroup=false
UsePreviousSetupType=false
UsePreviousTasks=false
UninstallFilesDir={app}\Uninstall
[Files]
Source: arc.exe; DestDir: {tmp}; Flags: dontcopy
Source: GameuxInstallHelper.dll; DestDir: {app}\Uninstall; Flags: overwritereadonly ignoreversion
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Messages]
SelectDirBrowseLabel=Нажмите «Установить», чтобы начать установку. Если Вы хотите выбрать другую папку, нажмите «Обзор».
[LangOptions]
WelcomeFontName=Tahoma
WelcomeFontSize=11

[Registry]
Root: HKLM; SubKey: SOFTWARE\1C\{{E07CEDD1-108A-4304-B820-EAFF5D37F5F0}; ValueType: string; ValueName: InstallDir; ValueData: {app}\
Root: HKLM; SubKey: SOFTWARE\1C\{{E07CEDD1-108A-4304-B820-EAFF5D37F5F0}; ValueType: string; ValueName: AppFile; ValueData: {app}\SmershAddon.exe
Root: HKLM; SubKey: SOFTWARE\1C\{{E07CEDD1-108A-4304-B820-EAFF5D37F5F0}; ValueType: string; ValueName: AppVersion; ValueData: 1.0.0.0

[Run]
Filename: {app}\Smersh.exe; WorkingDir: {app}\; Description: Начать игру; Flags: postinstall
Filename: {src}\DirectX\DXSETUP.exe; Parameters: /silent; StatusMsg: Обновление:Microsoft DirectX 9.0c...; Check: InstallDirectX
Filename: {src}\Redistributables\vcredist_x86.exe; Parameters: "/q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; StatusMsg: Обновление:Microsoft Visual C++ 2005...; Check: InstallDirectX

[Icons]
Name: {group}\Играть; Filename: {app}\Smersh.exe; WorkingDir: {app}\
Name: {group}\Настроить игру; Filename: {app}\SmershSetup.exe; WorkingDir: {app}\
Name: {group}\Удалить игру; Filename: {uninstallexe}
Name: {commondesktop}\Смерть шпионам.Момент истины; Filename: {app}\Smersh.exe; WorkingDir: {app}\; Check: MakeDesktopIcon

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

[_Code_]
type
TGUID = record
Data1: Cardinal;
Data2,
Data3: Word;
Data4: array [0..8] of char;
end;

function GenerateGUID(var GUID: TGUID): Cardinal; external 'GenerateGUID@files:GameuxInstallHelper.dll stdcall setuponly';
function AddToGameExplorer(Binary: String; Path: String; InstallType: Integer; var GUID: TGUID): Cardinal; external 'AddToGameExplorerA@files:GameuxInstallHelper.dll stdcall setuponly';
function CreateTask(InstallType: Integer; var GUID: TGUID; TaskType: Integer; TaskNumber: Integer; TaskName: String; Binary: String; Parameters: String): Cardinal; external 'CreateTaskA@files:GameuxInstallHelper.dll stdcall setuponly';
function RetrieveGUIDForApplication(Binary: String; var GUID: TGUID): Cardinal; external 'RetrieveGUIDForApplicationA@{app}\Uninstall\GameuxInstallHelper.dll stdcall uninstallonly';
function RemoveFromGameExplorer(var GUID: TGUID): Cardinal; external 'RemoveFromGameExplorer@{app}\Uninstall\GameuxInstallHelper.dll stdcall uninstallonly';
function RemoveTasks(var GUID: TGUID): Cardinal; external 'RemoveTasks@{app}\Uninstall\GameuxInstallHelper.dll stdcall uninstallonly';

const
PlayTask = 0;
SupportTask = 1;

var
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
DesktopIcon, DirectX: TCheckBox;
GUID: TGUID;
ProgressBar1: TNewProgressBar;
/////Вычисление свободного места на диске
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 animateprogress;
begin ProgressBar1.Position := ProgressBar1.Position+1
end;

procedure GetNeedSpaceCaption; /////Вычисление требуемого места для установки
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ IntToStr(NeedSize)+ ' MB';end;

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

function InstallDirectX: Boolean;
begin
Result:=DirectX.Checked;end;

procedure InitializeWizard();
begin
begin
NeedSize := 3210; //Здесь указывается место для приложения
WizardForm.DiskSpaceLabel.Hide;
WizardForm.FilenameLabel.Hide;
WizardForm.ProgressGauge.Top:=ScaleY(100); //Изменение стандартного прогрессбара
WizardForm.ProgressGauge.Width:=262; //
WizardForm.ProgressGauge.Left:=155; //
WizardForm.StatusLabel.Top:=ScaleY(80);
WizardForm.WelcomeLabel2.Top:=ScaleY(90);
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;
end;
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
begin //Создание чекбокса для создания ярлыка на рабочем столе
DesktopIcon := TCheckBox.Create(WizardForm);
with DesktopIcon do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Добавить ярлык на Рабочий стол';
Left := ScaleX(0);
Top := WizardForm.DirEdit.Top+35;
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
end;
begin //Создание чекбокса для установки DirectX
DirectX := TCheckBox.Create(WizardForm);
with DirectX 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;
end;
begin ///Создание нового прогрессбара
ProgressBar1 := TNewProgressBar.Create(wizardform);
with ProgressBar1 do
begin
Parent := wizardform.installingpage;
Top := 100
Width := 150;
Height := wizardform.progressgauge.height;
Max :=3; //кол-во архивов
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
begin
if CurPageID=wpSelectDir then
begin //Тут если Свободное место на диске < требуемого то кнопка "Установвить" на PageSelectDir неактивна
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
WizardForm.NextButton.Caption:='Установить'; //Rename кнопки "Далее" на SelectDir
end;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep); ///Регистрация в GameExplorer
var
Binary, MainExe: String;
ResultCode:Integer;
begin
if CurStep = ssInstall then //Перед установкой
begin
GenerateGUID(GUID);
ExtractTemporaryFile('arc.exe'); //Извлечение Arc.exe в Temp
if (FileExists(AddBackslash(ExpandConstant('{tmp}')) + 'arc.exe')) and (FileExists(AddBackslash(ExpandConstant('{src}')) + 'data-a.bin')) then
begin
WizardForm.StatusLabel.Caption:='Распаковка файлов...'; //Извлечение из 1-го архива
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-a.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

WizardForm.StatusLabel.Caption:='Распаковка файлов...'; //Извлечение из 2-го архива
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-b.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

WizardForm.StatusLabel.Caption:='Распаковка файлов...'; //Извлечение из 3-го архива
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-c.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

end else begin
MsgBox('Исполняемый файл:' + #13#10#13#10 + (AddBackslash(ExpandConstant('{tmp}')) + 'arc.exe') + #13#10#13#10 + 'не найден. Установка отменена', mbInformation, MB_OK);
Abort;
end;
end;
if CurStep = ssPostInstall then
begin
Binary:=ExpandConstant('{#GDFBinary}');
MainExe:=ExpandConstant('{#MainExe}');
AddToGameExplorer(Binary, ExpandConstant('{app}'), 3, GUID);
CreateTask(3, GUID, PlayTask, 0, 'Play', MainExe, '');
end;
end;

function InitializeSetup(): Boolean;
var
UnStr: String;
ErrorCode, Mesages: Integer;
begin //Повторный запуск
Result := True;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Smersh2_is1', 'UninstallString', UnStr) then
begin
If UnStr <> '' then
begin
Mesages := MsgBox('Смерть шпионам.Момент истины уже установлена в Вашей системе.'+#10#10+'Хотите удалить приложение?', mbInformation, MB_YESNOCANCEL);
case Mesages of
idYes:
begin
UnStr := RemoveQuotes(UnStr);
Exec(UnStr, '/silent', '', SW_Show, ewWaitUntilTerminated, ErrorCode);
Result := True;
end
idNo:
begin
Result := True;
end
idCancel:
begin
Result := False;
end;
end;
end;
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
ResultStr:String;
Binary: String;
GUID: TGUID;
begin /////////////////////////////////////////Удаление игровых сохранений
if CurUninstallStep=usPostUninstall then
begin
RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Smersh2_is1', 'UnInstConfirm', ResultStr)
if DirExists(ExpandConstant('{userdocs}')+'\smersh') then
if MsgBox('Удалить сохраненные игры и настройки?',mbconfirmation, mb_YesNo) = IDYES then
begin
if not DelTree(ExpandConstant('{userdocs}')+'\Smersh', True, True, True)
then
MsgBox('Папка не удалена!' #13#13 'Папка не существует или задействована.', mbError, MB_OK);
end;
end;
begin
if CurUninstallStep=usUninstall then //Удаление из GameExplorer
begin
Binary:=ExpandConstant('{#GDFBinary}');
RetrieveGUIDForApplication(Binary, GUID);
RemoveFromGameExplorer(GUID);
RemoveTasks(GUID);
UnloadDll(ExpandConstant('{app}\Uninstall\GameuxInstallHelper.dll'));
end;
end;
end;
через joins script ни как

ilyaalex 24-08-2009 06:27 1201576

Народ, помогите. Может кто знает. Нужно определить наличие учетной записи windows, используя средства Inno setup. ВОзможно ли это? Можно ли реализовать это через WinApi в Inno setup? По сути все сводится к функции где один параметр - имя учетки. Функция выплевывает true если учетка существует и false если нет.

user_123 24-08-2009 13:17 1201853

Подскажите пожалуйста, как в программе установки, написанной в inno setup, сделать:

1) вывод стандартного системного запроса (Да/Нет) с использованием текста из секции CustomMessages при снятии флажка в дополнительных задачах / компонентах (секция tasks), при нажатии кнопки "да" снять флажок. p.s. должно появиться уведомление пользователя о возможных последствиях отказа от выполнения задачи / установки компонента с запросом на продолжение (снятие флажка).

2) вывод дополнительного стандартного системного запроса (Да/Нет) с использованием текста из секции CustomMessages при удалении установленной программы. При нажатии кнопки "да" должен удалиться определённый подкаталог программы (и чтобы строка состояния отображала проццес удаления подкаталога, т.к. нём может быть более 50 тыс. файлов). p.s. Нужно, чтобы пользователь решал, удалять подкаталог программы, или нет.

volk1234 24-08-2009 23:04 1202285

ilyaalex
Цитата:

Цитата Serega
Цитата ilyaalex:
Нужно определить наличие учетной записи windows, используя средства Inno setup. »
Почитайте в Справке по Inno Setup, раздел:
Pascal Scripting: Introduction->Pascal Scripting: Support Functions Reference->function GetUserNameString: String; »


Serega 25-08-2009 17:26 1202947

Цитата:

Цитата user_123
1) вывод стандартного системного запроса (Да/Нет) с использованием текста из секции CustomMessages »

Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[CustomMessages]
tsk=Попробуйте, снимите с меня галку... ;)
msg=бла... бла... бла... %n Вы уверенны?

[Tasks]
Name: tsk; Description: {cm:tsk}; GroupDescription: Дополнительно:

[Code]
procedure OnClickCheck(Sender: TObject);
begin
  if not IsTaskSelected('tsk') then
  if MsgBox(ExpandConstant('{cm:msg}'), mbConfirmation, MB_YESNO) = IDYES then
    begin
      MsgBox('Я всё видел, Вы нажали "Да"', mbInformation, MB_OK);
    end
  else
    begin
      MsgBox('Вы нажали "Нет", очень жаль...', mbInformation, MB_OK);
    end;
end;

procedure InitializeWizard;
begin
  WizardForm.TasksList.OnClickCheck:= @OnClickCheck;
end;


DemonAk 25-08-2009 20:00 1203083

Вложений: 1
Привет всем, подскажите пожалуйста, как сделать так, чтобы копирование файлов (Source: D:\TEMP\silnet hill homecoming\rus\*; DestDir: {app}; Flags: recursesubdirs ignoreversion createallsubdirs; Components: Full_Russian EngSRusT), создание ярлыков и выполнение секции run происходило после распаковки архивов, именно в таком порядке. Скрипт прилагается.

lmiol 26-08-2009 23:02 1204187

можно ли какимнибудь способом в секции Run внести возможность поставить флаг exclusive а также мог бы её снять

Filename: "http://www.quakelive.com/#register"; Description: "Создать аккаунт"; Flags: nowait shellexec postinstall skipifsilent
Filename: "http://www.quakelive.com/#home"; Description: "Войти чтобы играть"; Flags: nowait shellexec postinstall skipifsilent

это для того чтобы если человек выбрал один из любых вариантов или мог бы его отключить
К примеру выбирать он может чтото одно скажем или регистрацию или вход, но также может и убрать галку и с того и другого (всмысле не хочет не входить и регистрироваться)

A1EXXX 28-08-2009 01:34 1205135

Вложений: 1
Есть скрипт для задания чёрного фона (прикрепил), но вот беда, не все текста присутствуют, например, как на скрине (та же фигня на всех страницах), а на странице лицензионного соглашения нет текста "я принимаю..." и "я не принимаю...", тупо две галки =((( Помогите это исправить!!!

FlatX007 28-08-2009 01:45 1205139

Вопрос : как сделать чтобы деинстилятор(unins000.exe) ,созданый установщиком, при запуске удалил ключ из реестра.

Просто никогда этим незанимался :dont-know

A1EXXX 28-08-2009 01:53 1205143

FlatX007, добавь флаг uninsdeletevalue, например:

[Registry]
Root: HKLM; Subkey: "SOFTWARE\Activision"; ValueType: String; Flags: uninsdeletevalue

FlatX007 28-08-2009 19:26 1205759

Цитата:

Цитата A1EXXX
FlatX007, добавь флаг uninsdeletevalue, например:
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Activision"; ValueType: String; Flags: uninsdeletevalue »

Так ключ реестра поппадает в реестр не через установщик, он там есть до него.
Неработает кароче.

BlackSelf 28-08-2009 20:09 1205783

FlatX007,
читать дальше »
Код:

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep=usPostUninstall then
  RegDeleteValue(HKLM, 'Software\My Program', 'InstallDir')
end;


Serega 28-08-2009 21:28 1205853

Вложений: 1
Цитата:

Цитата DemonAk
как сделать так, чтобы »

Попробуйте, скрипт прикрепил к сообщению. Работоспасобность, не проверял.

Цитата:

Цитата lmiol
Есть скрипт для задания чёрного фона (прикрепил), но вот беда, не все текста присутствуют »

стандартным способом нет, придётся вручную рисовать чебоксы и обрабатывать клики мышкой по ним.

Цитата:

Цитата A1EXXX
Есть скрипт для задания чёрного фона (прикрепил), но вот беда, не все текста присутствуют »

добавьте:
Код:

WizardForm.PageNameLabel.Font.Color:=clWhite;
а лицензионное соглашение, помоему это:
Код:

WizardForm.LicenseAcceptedRadio.Font.Color:= clWhite;
WizardForm.LicenseNotAcceptedRadio.Font.Color:= clWhite;


FlatX007 28-08-2009 21:51 1205866

Цитата:

Цитата BlackSelf
BlackSelf »

Так тоже не работает ... =)

получилось только так (с третей попытки)

Код:

[UninstallRun]
Filename: "{cmd}"; Parameters: "/c REG DELETE HKEY_CURRENT_USER\Software\Launcher /f"


Def191 29-08-2009 02:34 1206060

Делаю инсталлятор для игры. Необходимо, чтобы помимо установки основных файлов в директорию, указанную юзером, в корень любого логического диска распаковывалась папка с доп. файлами (аудио, необходимы для nocd). Диск для установки должен либо автоматически определяться из пути установки (константы соответсвующей я не нашел, а как получить его из {app} - не знаю), либо с помощью дополнительного диалога сразу после выбора пути установки - например, выпадающее меню со списком логических дисков. В принципе, оба варианта приемлемы. Можно ли это реализовать стандартными средствами, или надо писать скрипт на паскале (ни разу не пробовал, да и с языком плохо знаком) ? Заранее спасибо.

BlackSelf 29-08-2009 02:48 1206064

Def191, вот константа для распаковки в корень системного диска: {sd}
Цитата:

Цитата Def191
Диск для установки должен либо автоматически определяться из пути установки (константы соответсвующей я не нашел, а как получить его из {app} - не знаю) »

Можно вот так: {drive:{app}}

Def191 29-08-2009 17:43 1206478

BlackSelf, спасибо. То, что нужно.

AjaX_too 29-08-2009 20:28 1206586

помогите реализовать следующее:

в установщике нужно сделать страничку с двумя регистрами, при выборе одного - добавляеться одно значение в реестр, при выборе другого - второе (или не добавляется вообще). Как добавить данные в реестр я знаю, мне нужна лишь логика реализации регистров. Спасибо.

Serega 29-08-2009 20:31 1206592

Цитата:

Цитата AjaX_too
в установщике нужно сделать страничку с двумя регистрами »

что вы подразумеваете под словом регистр?

AjaX_too 29-08-2009 21:00 1206621

Цитата:

Цитата Serega
что вы подразумеваете под словом регистр? »

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

Serega 29-08-2009 21:37 1206645

AjaX_too, можно использовать страницу с дополнительными задачами, т.е. секция [Tasks]
Код:

[Tasks]
Name: chk1; Description: Ключ 1; GroupDescription: Дополнительно:
Name: chk2; Description: Ключ 2; GroupDescription: Дополнительно:

[Registry]
Root: HKCU; Subkey: Software\My Company1; Tasks: chk1; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: Software\My Company2; Tasks: chk2; Flags: uninsdeletekeyifempty


AjaX_too 29-08-2009 22:17 1206673

Вложений: 1
Serega, в принципе можно и так, только нужны не чекбоксы а радиобутоны.
нужно вот так:

Serega 29-08-2009 23:29 1206723

Цитата:

Цитата AjaX_too
нужно вот так »

добавьте для каждого элемента в секции [Tasks] флаг exclusive, т.е.:
Код:

[Tasks]
Name: chk1; Description: Ключ 1; GroupDescription: Дополнительно:; Flags: exclusive
Name: chk2; Description: Ключ 2; GroupDescription: Дополнительно:; Flags: exclusive


AjaX_too 29-08-2009 23:35 1206733

отлично, спасибо!

pa60t9ra 30-08-2009 17:39 1207155

Всем привет. На данный момент не атк много вопросов. :)
1. Как поставить фоновую музыку, чтобы проигрывало во время установки приложения.
2. Почему не все отображается в меню пуск, что прописано в секции [Icons]? А что и прописано. то не в той последовательности, как в самой секции.

Serega 30-08-2009 19:09 1207261

Цитата:

Цитата pa60t9ra
1. Как поставить фоновую музыку, чтобы проигрывало во время установки приложения. »

Воспользуйтесь Inno Setup GameScript Generator, ссылка есть в шапке темы.
Цитата:

Цитата pa60t9ra
Почему не все отображается в меню пуск, что прописано в секции [Icons]? »

Ошибка в 24 строке... скрипт покажите.

pa60t9ra 30-08-2009 20:07 1207342

читать дальше »

[Icons]

Name: "{group}\GreylinkDC++"; Filename: "{app}\greylink.exe"; Components: "all";
Name: "{group}\{cm:UninstallProgram,GreyLinkDC++}"; Filename: "{uninstallexe}"; Components: "all";

Name: "{group}\Help\"; Filename: "{app}\Help\FAQ.rtf"; Components: "all";
Name: "{group}\Help\"; Filename: "{app}\Help\Nastrojka DC++.chm"; Components: "all";

Name: "{group}\SSearch\"; Filename: "{app}\SSearch\SSearch.exe"; Components: "all";
Name: "{group}\SSearch\"; Filename: "{app}\SSearch\Hom\p_ssearch.html"; Components: "all";

Name: "{userdesktop}\GreylinkDC++"; Filename: "{app}\greylink.exe"; IconFilename: "{app}\greylink.exe"; Components: "all"; Tasks: "desktopicon";

Name: "{commonstartup}\GreylinkDC++"; Filename: "{app}\greylink.exe"; Components: "all"; Tasks: "AutoLaunch";
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\greylink.exe"; Filename: "{app}\greylink.exe"; Components: "all"; Tasks: "quicklaunchicon";


Некоторые в принципе то и отображаются-но абсолютно без имен...

Serega 30-08-2009 20:26 1207358

pa60t9ra, основная ошибка, в том, что одинаковых имён у ярлыков быть не может, т.е. один ярлык перезапишет другой с таким же именем. Так же нужно использовать WorkingDir, она говорит о папке расположения файла на который ссылается ярлык.
Пример
Код:

[Icons]
Name: {group}\GreylinkDC++; Filename: {app}\greylink.exe; WorkingDir: {app}; Components: all
Name: {group}\{cm:UninstallProgram,GreyLinkDC++}; Filename: {uninstallexe}; WorkingDir: {app}; Components: all

Name: {group}\Help_FAQ; Filename: {app}\Help\FAQ.rtf; WorkingDir: {app}\Help; Components: all
Name: {group}\Help_Nastrojka; Filename: {app}\Help\Nastrojka DC++.chm; WorkingDir: {app}\Help; Components: all

Name: {group}\SSearch; Filename: {app}\SSearch\SSearch.exe; WorkingDir: {app}\SSearch; Components: all
Name: {group}\SSearch_P; Filename: {app}\SSearch\Hom\p_ssearch.html; WorkingDir: {app}\SSearch\Hom; Components: all

Name: {userdesktop}\GreylinkDC++; Filename: {app}\greylink.exe; WorkingDir: {app}; IconFilename: {app}\greylink.exe; Components: all; Tasks: desktopicon

Name: {commonstartup}\GreylinkDC++; Filename: {app}\greylink.exe; WorkingDir: {app}; Components: all; Tasks: AutoLaunch
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Greylink; Filename: {app}\greylink.exe; WorkingDir: {app}; Components: all; Tasks: quicklaunchicon


pa60t9ra 31-08-2009 20:51 1208186

Когда устанавливается программа, то сам мастер не прекращает работу до тех пор, пока потом саму прогу не закроешь.. С чем это связано?:(
И как сделать. чтобы в конце мастера установки появилсь окно с выбором запускаемых файлов? В частности не все файлы ехе-шные.

Serega 31-08-2009 21:02 1208195

Цитата:

Цитата pa60t9ra
Когда устанавливается программа, то сам мастер не прекращает работу до тех пор, пока потом саму прогу не закроешь.. С чем это связано? »

Опять приходится гадать...
Видимо в секции [Run] вы прописали запуск программы, без запроса об этом у пользователя и поставили флаг waituntilidle. Подробнее об этом флаге, можете прочитать в справке.
Цитата:

Цитата pa60t9ra
И как сделать. чтобы в конце мастера установки появилсь окно с выбором запускаемых файлов? »

Используйте в секции [Run] для файла котрый предлагается запустить флаг postinstall
Цитата:

Цитата pa60t9ra
В частности не все файлы ехе-шные. »

К этим файлам прибавьте флаг shellexec

Raf-9600 31-08-2009 21:57 1208245

А реально ли сделать так, чтоб допустим если выбран компонент Steam, то:
1. Инсталлятор предлагал установиться в {reg:HKLM\SOFTWARE\Valve\Steam,InstallPath|{pf}\ARPS}
2. Инсталлятор не предлагал (и не создавал) папку в меню Пуск.
3. Инсталлятор не создавал деинсталлятора.

А если выбран NoSteam, то:
1. Инсталлятор предлагал установиться в {pf}\Half-Life 2
2. Инсталлятор предлагал создание директории "Half-Life 2" в меню Пуск.
3. Инсталлятор создавал деинсталлятора. (после инсталляции)

Serega 31-08-2009 23:04 1208323

Цитата:

Цитата Raf-9600
А реально ли сделать так »

Я думаю, да.
1. В секции [Setup] в DefaultDirName делаете ссылку на функцию = {code:MyFunc}, которая возвращает путь в зависимости от выбранного компонента IsComponentSelected;
2. Думаю, придётся создавать страницу и в зависимости от выбора компонента показывать её или нет;
3. В секции [Setup] в Uninstallable делаете ссылку на функцию = {code:MyFunc2}, которая возвращает True или False в зависимости от выбранного компонента IsComponentSelected.

Raf-9600 31-08-2009 23:19 1208335

Serega, а Вы бы немогли бы написать скрипт, для реализации этого всего? :)
Знаю что наглею, но просто я не шарю в языках программирования... :blush2:

volk1234 31-08-2009 23:41 1208359

Пора создавать ветку - Стол заказов [скрипты]
:)

p3rf3ct1c 01-09-2009 18:04 1208974

volk1234, неплохая идея, а в шапке выложить уже существующие скрипты какие есть.

volk1234 01-09-2009 18:17 1208986

про стол заказов - думаю не сильно будет популярная ветка - ибо желающих, чтобы сделали за них много, а чтобы сделать за других раз два и обчелся...
Я предлогал Serega сделать шаблоны тех случаев которые он уже решал.
Но перелопатить тему на 1350 страниц это не из весёлых занятий, так что это
по его желанию. Если хотите помогите всем сделайте свою сборку скриптов - выложим ее в шапке :)

Serega 02-09-2009 01:29 1209259

Цитата:

Цитата Raf-9600
А реально ли сделать так »

Сделал, не совсем как вы хотели, т.е. сделал отдельную страницу с выбором Steam или NoSteam.
Пример
Код:

[Setup]
AppID={{9C9D1016-916D-40D5-B034-A0071759F1B7}
AppName=Half-Life 2
AppVerName=My Half-Life 2
DefaultDirName={pf}\Half-Life 2
DefaultGroupName=Half-Life 2
OutputDir=.
UninstallFilesDir={app}\UninstallDir

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

[CustomMessages]
INST_MODE=Режим установки
INST_MODE_CPT=Пожалуйста, выберите в каком режиме будет устанавливаться программа
INST_EXPR=Steam
INST_EXPR_STR=Установка программы с параметрами Steam.
INST_CUST=NoSteam
INST_CUST_STR=Установка программы с параметрами NoSteam.
NEXT=Нажмите «Далее», чтобы продолжить.

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

[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe; WorkingDir: {app}; Check: MyFuncIcons

[Code]
function GetModuleHandle(lpModuleName: LongInt): LongInt;
  external 'GetModuleHandleA@kernel32.dll stdcall';

function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt;
  external 'ExtractIconA@shell32.dll stdcall';

function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
  external 'DrawIconEx@user32.dll stdcall';

var
  SupportPage: TWizardPage;
  Steam, NoSteam: TNewRadiobutton;
 
function MyFuncIcons: Boolean;
begin
  if Steam.Checked = True then
    Result:= False
  else Result:= True;
end;

procedure InitializeWizard();
var
  Str1, Str2, Str3: TNewStaticText;
  Rect: TRect;
  hIcon: LongInt;
begin
  SupportPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:INST_MODE}'), ExpandConstant('{cm:INST_MODE_CPT}'));

  Steam:= TNewRadiobutton.Create(SupportPage);
  with Steam do
    begin
      SetBounds(ScaleX(20), ScaleY(40), ScaleX(200), ScaleY(16));
      Font.Style:= [fsBold];
      Caption:= ExpandConstant('{cm:INST_EXPR}');
      Checked:= True;
      Parent:= SupportPage.Surface;
    end;
 
  hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 118);
  with TBitmapImage.Create(SupportPage) do
    begin
      SetBounds(ScaleX(36), Steam.Top + ScaleY(20), ScaleX(32), ScaleY(32));
      with Bitmap do
        begin
          Width:= ScaleX(32);
          Height:= ScaleY(32);
          Rect.Right:= ScaleX(32);
          Rect.Bottom:= ScaleY(32);
          Rect.Left:= ScaleX(0);
          Rect.Top:= ScaleY(0);
          Canvas.Brush.Color:= clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
        end;
      Parent:= SupportPage.Surface;
    end;

  Str1:= TNewStaticText.Create(SupportPage);
  with Str1 do
    begin
      SetBounds(ScaleX(78), Steam.Top + ScaleY(20), ScaleX(349), ScaleY(32));
      Autosize:= False;
      WordWrap:= True;
      Caption:= ExpandConstant('{cm:INST_EXPR_STR}');
      Parent:= SupportPage.Surface;
    end;
 
  NoSteam:= TNewRadiobutton.Create(SupportPage);
  with NoSteam do
    begin
      SetBounds(ScaleX(20), Str1.Top + ScaleY(52), ScaleX(200), ScaleY(16));
      Font.Style:= [fsBold];
      Caption:= ExpandConstant('{cm:INST_CUST}');
      Parent:= SupportPage.Surface;
    end;
 
  hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 119);
  with TBitmapImage.Create(SupportPage) do
    begin
      SetBounds(ScaleX(36), NoSteam.Top + ScaleY(20), ScaleX(32), ScaleY(32));
      with Bitmap do
        begin
          Width:= ScaleX(32);
          Height:= ScaleY(32);
          Rect.Right:= ScaleX(32);
          Rect.Bottom:= ScaleY(32);
          Rect.Left:= ScaleX(0);
          Rect.Top:= ScaleY(0);
          Canvas.Brush.Color:= clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
        end;
      Parent:= SupportPage.Surface;
    end;
 
  Str2:= TNewStaticText.Create(SupportPage);
  with Str2 do
    begin
      SetBounds(ScaleX(78), NoSteam.Top + ScaleY(20), ScaleX(349), ScaleY(50));
      Autosize:= False;
      WordWrap:= True;
      Caption:= ExpandConstant('{cm:INST_CUST_STR}');
      Parent:= SupportPage.Surface;
    end;
   
  Str3:= TNewStaticText.Create(SupportPage);
  with Str3 do
    begin
      SetBounds(ScaleX(36), ScaleY(221), ScaleX(381), ScaleY(16));
      Autosize:= False;
      WordWrap:= True;
      Caption:= ExpandConstant('{cm:NEXT}');
      Parent:= SupportPage.Surface;
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectDir then
    begin
      if Steam.Checked = True then
        WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKLM\SOFTWARE\Valve\Steam,InstallPath|{pf}\ARPS}')
      else WizardForm.DirEdit.Text:= ExpandConstant('{pf}\Half-Life 2');
    end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if PageID = wpSelectProgramGroup then
    begin
      if Steam.Checked = True then
        Result:= True;
    end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then
    begin
      if Steam.Checked = True then
        begin
          DelTree(ExpandConstant('{app}\UninstallDir'), True, True, True);
          RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9C9D1016-916D-40D5-B034-A0071759F1B7}_is1');
        end;
    end;
end;

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo,
    MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
  S: String;
begin
  S := S + ExpandConstant('{cm:INST_MODE}') + NewLine;
  if Steam.Checked = True then
    S := S + Space + ExpandConstant('{cm:INST_EXPR}') + NewLine + NewLine
  else
    S := S + Space + ExpandConstant('{cm:INST_CUST}') + NewLine + NewLine;
  S := S + MemoDirInfo + NewLine + Newline;
  S := S + MemoGroupInfo + NewLine + Newline;
  S := S + MemoTasksInfo + NewLine + NewLine;
  Result := S;
end;

{
 HINT: В режиме "Экспресс Режим" (Steam) может возникнуть ситуация, когда к примеру не хватает места
      на жестком диске, а страница выбора папки установки в "Экспресс Режиме" будет пропущена,
      в результате чего получится так, что установка сообщит о нехватке места уже в процессе
      копирования файлов.
}


pa60t9ra 02-09-2009 21:42 1209925

Как в диалоге выбора места установки прописать рекомендации? А то в Висте изза UAC-а не все пашет...

Serega 02-09-2009 23:36 1210003

Цитата:

Цитата pa60t9ra
Как в диалоге выбора места установки прописать рекомендации? А то в Висте изза UAC-а не все пашет... »

Висту, не знаю, но вот пример, с запретом установки в корень системного диска.
Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
var
  text: TLabel;

function NextButtonClick(CurPageID: Integer): Boolean;
var
  i, n: Integer;
  str: string;
begin
  Result:= True;
  if CurPageID = wpSelectDir then
    begin
      str:= WizardForm.DirEdit.Text;
      for i:= 1 to Length(str) do if str[i] = '\' then n:= n + 1;
      if (n = 1) and (Pos(ExpandConstant('{sd}'), WizardForm.DirEdit.Text) > 0) then
        begin
          text.Caption:= 'Внимание, в корень системного диска, устанавливать нельзя.';
          Result:= False;
        end
      else text.Caption:= '';
    end;
end;

procedure InitializeWizard();
begin
  text:= TLabel.Create(WizardForm);
  with text do
    begin
      SetBounds(WizardForm.DirEdit.Left,120,300,100);
      AutoSize:= True;
      Font.Style:= [fsBold];
      Font.Color:= clRed;
      Parent:= WizardForm.SelectDirPage;
    end;
end;


pa60t9ra 03-09-2009 19:32 1210693

Как сделать, чтобы пользователь выбирал что ему поставить? То есть 5 компонентов, и он хочет поставить и 1 и 3? А не только 1?

A1EXXX 05-09-2009 13:51 1212059

Вложений: 1
Поправил скрипт Ultimate Test (проверка системных требований) для инсталла с чёрным фоном + теперь распознаёт XP SP3, может кому пригодится...


Krekerpro 07-09-2009 03:10 1213015

Доброго времени суток,кто нибудь знает,как реализовать это http://clip2net.com/page/m0/1799727 http://clip2net.com/page/m0/1799737 http://clip2net.com/page/m0/1799740 ???

A1EXXX 07-09-2009 15:00 1213366

Krekerpro, репак BlackSelf'a ))) самому интересно, поэтому к вопросу могу только присоединиться!!!

Bond01 07-09-2009 22:11 1213632

Подскажите - после установки программы созданной inno - папка под ярлык в пуске получается с названием (Default), где можно подправить скрипт?, что-то немогу найти.

Habetdin 07-09-2009 22:20 1213640

Bond01, это задается параметром DefaultGroupName=<Имя_папки>, в секции [SETUP]

Bond01 07-09-2009 22:24 1213644

Habetdin, спасибо, а со вчерашним вопросом так и не разобрался. Эту распаковал она без ошибок собирается , вот только одна, а ту ни как немогу.

Habetdin 07-09-2009 22:35 1213651

Bond01, выложите скрин всего окна, а не только строки с той ошибкой

Bond01 07-09-2009 22:43 1213661

1 часть.

Код:

[Setup]
AppName=Glary Utilities
AppVerName=Glary Utilities 2.15.0.738
DefaultDirName={pf}\Glary Utilities
OutputBaseFilename=gusetupnew
Compression=lzma
LicenseFile=embedded\License.txt
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp

[Files]
Source: "{app}\License.rtf"; DestDir: "{app}"; Flags: dontcopy
Source: "{app}\toolbar.bmp"; DestDir: "{app}"; Flags: dontcopy
Source: "{app}\askBarSetup.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{app}\Integrator.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\diskanalysis.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dupefinder.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\eff.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\iehelper.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\junkcleaner.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\memdefrag.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\regrepair.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\shortcutsfixer.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\shredder.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\startup.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\TracksEraser.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\uninstaller.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\procmgr.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\cmm.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\webupdate.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\fileencrypt.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\encryptexe.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\filesplitter.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\joinexe.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\winstd.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\oneclickoptimizer.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\undelete.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\initialize.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\regdefrag.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\gsd.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\FILEDEL.AVI"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\scan.avi"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\autodll.dll"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\lockdll.dll"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\ZipDll.dll"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\UnzDll.dll"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\ContextHandler.dll"; DestDir: "{app}"; Flags: restartreplace regserver uninsrestartdelete ignoreversion
Source: "{sys}\msscript.ocx"; DestDir: "{sys}"; Flags: uninsneveruninstall regserver onlyifdoesntexist
Source: "{app}\help,1.chm"; DestDir: "{app}"; DestName: "help.chm"; Flags: ignoreversion
Source: "{app}\help,2.chm"; DestDir: "{app}"; DestName: "help.chm"; Check: "Doit('french')"; Flags: ignoreversion
Source: "{app}\help,3.chm"; DestDir: "{app}"; DestName: "help.chm"; Check: "Doit('italian')"; Flags: ignoreversion
Source: "{app}\data\apps.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\duplicates.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\duplicatesfolder.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\empty.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\junk.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\junkInfo.ini"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\startup.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\htmldata.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\process.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\procsubmit.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\xdata.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\xt.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\xb.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\registry.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\languages\english.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\chinese.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\russian.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\hungarian.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\polish.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\french.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\french2.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\turkish.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\Chinese(Traditional).lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\italian.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\spanish.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\ptbr.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\Korean.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\dutch.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\German.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\japanese.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\Czech.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\romanian.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\albanian.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\catalan.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\ukrainian.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\hebrew.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\svenska.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\arabic.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\indonesian.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\rtl70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\vcl70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\vclx70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\vcljpg70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\vclsmp70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxComnD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxGDIPlusD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxThemeD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\cxLibraryVCLD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxBarD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxNavBarD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\pngD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\VirtualTreesD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\GUControlD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\GUTrayIconD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\skins\default\btn_close.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\btn_min.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\button.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category2_b.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category2_m.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category2_t.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category_o.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category_t.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\line.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\longbutton.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\mainfree.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\mainpro.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\menu.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\modules.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\oneclick.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\skin.ini"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\Status.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\tab.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\Icons\1.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\2.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\3.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\4.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\5.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\brower assistant.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\context menu manager.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\disk analysis.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\duplicate files finder.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\empty folder finder.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\file encrypter.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\file secure delete.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\file splitter.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\file undelete.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\junk files cleaner.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\main.ico"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\memory defrag.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\process manager.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\registry cleaner.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\registry defrag.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\shortcuts fixer.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\startup manager.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\tracks eraser.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\uninstall manager.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\web updater.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\windows standard-functions.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\btn_close.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\btn_min.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\button.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category2_b.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category2_m.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category2_t.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category_o.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category_t.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\line.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\longbutton.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\mainfree.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\mainpro.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\menu.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\modules.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\oneclick.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\skin.ini"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\Status.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\tab.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\Navy\btn_close.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\btn_min.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\button.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category2_b.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category2_m.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category2_t.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category_o.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category_t.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\line.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\longbutton.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\mainfree.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\mainpro.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\menu.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\modules.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\oneclick.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\skin.ini"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\status.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\tab.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion

[Registry]
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "Language"; ValueType: String; ValueData: "{code:curLanguage}";
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "RefVersion"; ValueType: String; ValueData: "2009-08-18";
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "LngVersion"; ValueType: String; ValueData: "2009-08-18";
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "UpdateFile"; ValueType: String;
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "RootDir"; ValueType: String; ValueData: "{app}";
Root: HKCR; Subkey: ".gfe"; Flags: uninsdeletekey
Root: HKCR; Subkey: ".gfe"; ValueType: String; ValueData: "GU.Encrypted";
Root: HKCR; Subkey: "GU.Encrypted"; Flags: uninsdeletekey
Root: HKCR; Subkey: "GU.Encrypted"; ValueType: String; ValueData: "Glary Utilities Encrypted File";
Root: HKCR; Subkey: "GU.Encrypted\DefaultIcon";
Root: HKCR; Subkey: "GU.Encrypted\DefaultIcon"; ValueType: String; ValueData: "{app}\fileencrypt.exe,0";
Root: HKCR; Subkey: "GU.Encrypted\Shell";
Root: HKCR; Subkey: "GU.Encrypted\Shell\Open";
Root: HKCR; Subkey: "GU.Encrypted\Shell\Open\Command";
Root: HKCR; Subkey: "GU.Encrypted\Shell\Open\Command"; ValueType: String; ValueData: "{app}\fileencrypt.exe -d %1";
Root: HKCR; Subkey: ".gfs"; Flags: uninsdeletekey
Root: HKCR; Subkey: ".gfs"; ValueType: String; ValueData: "GU.Splitted";
Root: HKCR; Subkey: "GU.Splitted"; Flags: uninsdeletekey
Root: HKCR; Subkey: "GU.Splitted"; ValueType: String; ValueData: "Glary Utilities Splitted File";
Root: HKCR; Subkey: "GU.Splitted\DefaultIcon";
Root: HKCR; Subkey: "GU.Splitted\DefaultIcon"; ValueType: String; ValueData: "{app}\filesplitter.exe,0";
Root: HKCR; Subkey: "GU.Splitted\Shell";
Root: HKCR; Subkey: "GU.Splitted\Shell\Open";
Root: HKCR; Subkey: "GU.Splitted\Shell\Open\Command";
Root: HKCR; Subkey: "GU.Splitted\Shell\Open\Command"; ValueType: String; ValueData: "{app}\filesplitter.exe -j %1";

Далее "Run" во второй части.

2 части и скрипт в архиве прикрепил.

Bond01 07-09-2009 22:44 1213662

2 часть.

Код:

[Run]
Filename: "{app}\Integrator.exe"; Description: "{cm:LaunchProgram,Glary Utilities}";
Filename: "{app}\initialize.exe"; Parameters: "/setupschedule";

[Icons]
Name: "{group}\Glary Utilities"; Filename: "{app}\Integrator.exe";
Name: "{group}\{cm:UninstallProgram,Glary Utilities}"; Filename: "{uninstallexe}";
Name: "{userdesktop}\Glary Utilities"; Filename: "{app}\Integrator.exe"; Tasks: "desktopicon";
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Glary Utilities"; Filename: "{app}\Integrator.exe"; Tasks: "quicklaunchicon";

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

[CustomMessages]
en.NameAndVersion=%1 version %2
en.AdditionalIcons=Additional icons:
en.CreateDesktopIcon=Create a &desktop icon
en.CreateQuickLaunchIcon=Create a &Quick Launch icon
en.ProgramOnTheWeb=%1 on the Web
en.UninstallProgram=Uninstall %1
en.LaunchProgram=Launch %1
en.AssocFileExtension=&Associate %1 with the %2 file extension
en.AssocingFileExtension=Associating %1 with the %2 file extension...
fr.NameAndVersion=%1 version %2
fr.AdditionalIcons=Icônes supplémentaires :
fr.CreateDesktopIcon=Créer une icône sur le &Bureau
fr.CreateQuickLaunchIcon=Créer une icône dans la barre de &Lancement rapide
fr.ProgramOnTheWeb=Page d'accueil de %1
fr.UninstallProgram=Désinstaller %1
fr.LaunchProgram=Exécuter %1
fr.AssocFileExtension=&Associer %1 avec l'extension de fichier %2
fr.AssocingFileExtension=Associe %1 avec l'extension de fichier %2...
cn.NameAndVersion=%1 °æ±¾ %2
cn.AdditionalIcons=¸½¼Óͼ±ê:
cn.CreateDesktopIcon=ÔÚ×ÀÃæ´´½¨Í¼±ê(&d)
cn.CreateQuickLaunchIcon=ÔÚ¿ì½ÝÆô¶¯À¸´´½¨Í¼±ê(&Q)
cn.ProgramOnTheWeb=ÍøÂçÉ쵀 %1
cn.UninstallProgram=жÔØ %1
cn.LaunchProgram=ÔËÐÐ %1
cn.AssocFileExtension=½« %1 ÓëÀ©Õ¹Ãû %2 Á¬½Ó(&A)
cn.AssocingFileExtension=ÕýÔÚ½« %1 ÓëÀ©Õ¹Ãû %2 Á¬½Ó...
hu.NameAndVersion=%1 %2 verzió
hu.AdditionalIcons=További ikonok:
hu.CreateDesktopIcon=Ikon létrehozása az &Asztalon
hu.CreateQuickLaunchIcon=Ikon létrehozása a &Gyorsindítás eszköztáron
hu.ProgramOnTheWeb=%1 a weben
hu.UninstallProgram=%1 eltávolítása
hu.LaunchProgram=%1 elindítása
hu.AssocFileExtension=A(z) %1 &társítása a(z) %2 fájlkiterjesztéssel
hu.AssocingFileExtension=A(z) %1 társítása a(z) %2 fájlkiterjesztéssel...
ru.NameAndVersion=%1, âåðñèÿ %2
ru.AdditionalIcons=Äîïîëíèòåëüíûå çíà÷êè:
ru.CreateDesktopIcon=Ñîçäàòü çíà÷îê íà &Ðàáî÷åì ñòîëå
ru.CreateQuickLaunchIcon=Ñîçäàòü çíà÷îê â &Ïàíåëè áûñòðîãî çàïóñêà
ru.ProgramOnTheWeb=Ñàéò %1 â Èíòåðíåòå
ru.UninstallProgram=Äåèíñòàëëèðîâàòü %1
ru.LaunchProgram=Çàïóñòèòü %1
ru.AssocFileExtension=Ñâ&ÿçàòü %1 ñ ôàéëàìè, èìåþùèìè ðàñøèðåíèå %2
ru.AssocingFileExtension=Ñâÿçûâàíèå %1 ñ ôàéëàìè %2...
pl.NameAndVersion=%1 wersja %2
pl.AdditionalIcons=Dodatkowe ikony:
pl.CreateDesktopIcon=Utwórz ikonê na &pulpicie
pl.CreateQuickLaunchIcon=Utwórz ikonê na pasku &szybkiego uruchamiania
pl.ProgramOnTheWeb=Strona WWW programu %1
pl.UninstallProgram=Deinstalacja programu %1
pl.LaunchProgram=Uruchom program %1
pl.AssocFileExtension=&Przypisz program %1 do rozszerzenia pliku %2
pl.AssocingFileExtension=Przypisywanie programu %1 do rozszerzenia pliku %2...
tr.NameAndVersion=%1 %2 sürümü
tr.AdditionalIcons=Ek simgeler:
tr.CreateDesktopIcon=Masaüstü simg&esi oluþtur
tr.CreateQuickLaunchIcon=Hýzlý Baþlat simgesi &oluþtur
tr.ProgramOnTheWeb=%1 Web Sitesi
tr.UninstallProgram=%1 Programýný Kaldýr
tr.LaunchProgram=%1 Programýný Çalýþtýr
tr.AssocFileExtension=%2 dosya uzantýlarýný %1 ile iliþkilendir
tr.AssocingFileExtension=%2 dosya uzantýlarý %1 ile iliþkilendiriliyor...
ct.NameAndVersion=%1 ª©¥» %2
ct.AdditionalIcons=ªþ¥[¹Ï¥Ü:
ct.CreateDesktopIcon=«Ø¥ß®à*±¹Ï¥Ü(&D)
ct.CreateQuickLaunchIcon=«Ø¥ß§Ö³t±Ò°Ê¹Ï¥Ü(&Q)
ct.ProgramOnTheWeb=%1 ªººô¯¸
ct.UninstallProgram=¸Ñ°£¦w¸Ë %1
ct.LaunchProgram=±Ò°Ê %1
ct.AssocFileExtension=±N %1 »PÀÉ®×°ÆÀɦW %2 ²£¥ÍÃöÁp(&A)
ct.AssocingFileExtension=¥¿¦b±N %1 »PÀÉ®×°ÆÀɦW %2 ²£¥ÍÃöÁp...
it.NameAndVersion=%1 versione %2
it.AdditionalIcons=Icone aggiuntive:
it.CreateDesktopIcon=Crea un'icona sul &desktop
it.CreateQuickLaunchIcon=Crea un'icona nella barra &Avvio veloce
it.ProgramOnTheWeb=%1 sul Web
it.UninstallProgram=Disinstalla %1
it.LaunchProgram=Avvia %1
it.AssocFileExtension=&Associa l'estensione %2 a %1
it.AssocingFileExtension=Associazione dell'estensione %2 a %1 in corso...
sp.NameAndVersion=%1 versión %2
sp.AdditionalIcons=Iconos adicionales:
sp.CreateDesktopIcon=Crear un icono en el &escritorio
sp.CreateQuickLaunchIcon=Crear un icono de Inicio Rápido
sp.ProgramOnTheWeb=%1 en la Web
sp.UninstallProgram=Desinstalar %1
sp.LaunchProgram=Ejecutar %1
sp.AssocFileExtension=&Asociar %1 con la extensión de archivo %2
sp.AssocingFileExtension=Asociando %1 con la extensión de archivo %2...
bp.NameAndVersion=%1 versão %2
bp.AdditionalIcons=Ícones adicionais:
bp.CreateDesktopIcon=Criar um ícone na &Área de Trabalho
bp.CreateQuickLaunchIcon=Criar um ícone na &Barra de Inicialização Rápida
bp.ProgramOnTheWeb=%1 na Internet
bp.UninstallProgram=Desinstalar %1
bp.LaunchProgram=Executar %1
bp.AssocFileExtension=&Associar %1 com a extensão de arquivo %2
bp.AssocingFileExtension=Associando %1 com a extensão de arquivo...
kr.NameAndVersion=%1 ¹öÀü %2
kr.AdditionalIcons=¾ÆÀÌÄÜ »ý¼º:
kr.CreateDesktopIcon=¹ÙÅÁ È*¸é¿¡ ¾ÆÀÌÄÜ »ý¼º(&D)
kr.CreateQuickLaunchIcon=ºü¸¥ ½ÇÇà¿¡ ¾ÆÀÌÄÜ »ý¼º(&Q)
kr.ProgramOnTheWeb=À¥ »óÀÇ %1
kr.UninstallProgram=%1 Á¦°Å
kr.LaunchProgram=%1 ½ÇÇà
kr.AssocFileExtension=%2 È®ÀåÀÚ¸¦ %1 ¿¡ ¿¬°á(&A)
kr.AssocingFileExtension=%2 È®ÀåÀÚ¸¦ %1 ¿¡ ¿¬°á Áß...
nl.NameAndVersion=%1 versie %2
nl.AdditionalIcons=Extra snelkoppelingen:
nl.CreateDesktopIcon=Maak een snelkoppeling op het &bureaublad
nl.CreateQuickLaunchIcon=Maak een snelkoppeling op de &Snel starten werkbalk
nl.ProgramOnTheWeb=%1 op het Web
nl.UninstallProgram=Verwijder %1
nl.LaunchProgram=&Start %1
nl.AssocFileExtension=&Koppel %1 aan de %2 bestandsextensie
nl.AssocingFileExtension=Bezig met koppelen van %1 aan de %2 bestandsextensie...
de.NameAndVersion=%1 Version %2
de.AdditionalIcons=Zusätzliche Symbole:
de.CreateDesktopIcon=&Desktop-Symbol erstellen
de.CreateQuickLaunchIcon=Symbol in der Schnellstartleiste erstellen
de.ProgramOnTheWeb=%1 im Internet
de.UninstallProgram=%1 entfernen
de.LaunchProgram=%1 starten
de.AssocFileExtension=&Registriere %1 mit der %2-Dateierweiterung
de.AssocingFileExtension=%1 wird mit der %2-Dateierweiterung registriert...
jp.NameAndVersion=%1 ƒo�[ƒWƒ‡ƒ“ %2
jp.AdditionalIcons=ƒAƒCƒRƒ“‚ð’ljÁ‚·‚é:
jp.CreateDesktopIcon=ƒfƒXƒNƒgƒbƒv�ã‚ɃAƒCƒRƒ“‚ð�ì�¬‚·‚é(&d)
jp.CreateQuickLaunchIcon=&Quick Launch ƒAƒCƒRƒ“‚ð�ì�¬‚·‚é
jp.ProgramOnTheWeb=%1 on the Web
jp.UninstallProgram=%1 ‚ðƒAƒ“ƒCƒ“ƒXƒg�[ƒ‹‚·‚é
jp.LaunchProgram=%1 ‚ðŽÀ�s‚·‚é
jp.AssocFileExtension=%2 ƒtƒ@ƒCƒ‹Šg’£‚É %1‚ðŠÖ˜A•t‚¯‚Ü‚·�B
jp.AssocingFileExtension=%2 ‚É %1‚ðŠÖ˜A•t‚¯‚Ü‚·�B
cz.NameAndVersion=%1 verze %2
cz.AdditionalIcons=Další zástupci:
cz.CreateDesktopIcon=Vytvoøit zástupce na &ploše
cz.CreateQuickLaunchIcon=Vytvoøit zástupce na panelu &Snadné spuštìní
cz.ProgramOnTheWeb=Aplikace %1 na internetu
cz.UninstallProgram=Odinstalovat aplikaci %1
cz.LaunchProgram=Spustit aplikaci %1
cz.AssocFileExtension=Vytvoøit &asociaci mezi soubory typu %2 a aplikací %1
cz.AssocingFileExtension=Vytváøí se asociace mezi soubory typu %2 a aplikací %1...
ro.NameAndVersion=%1 versiunea %2
ro.AdditionalIcons=Icon-uri aditionale:
ro.CreateDesktopIcon=Creaza icon pe &desktop
ro.CreateQuickLaunchIcon=Creaza icon in bara &Quick Launch
ro.ProgramOnTheWeb=%1 pe Web
ro.UninstallProgram=Dezinstalez aplicatia %1
ro.LaunchProgram=Lansez aplicatia %1
ro.AssocFileExtension=&Asociez aplicatia %1 la extensia de fisier %2
ro.AssocingFileExtension=Procedez la asocierea aplicatiei %1 la extensia de fisier %2
cat.NameAndVersion=%1 versió %2
cat.AdditionalIcons=Icones addicionals:
cat.CreateDesktopIcon=Crea una icona a l'&Escriptori
cat.CreateQuickLaunchIcon=Crea una icona a la &Barra de tasques
cat.ProgramOnTheWeb=%1 a Internet
cat.UninstallProgram=Desinstal·la %1
cat.LaunchProgram=Obre %1
cat.AssocFileExtension=&Associa %1 amb l'extensió de fitxer %2
cat.AssocingFileExtension=Associant %1 amb l'extensió de fitxer %2...
al.NameAndVersion=%1 version %2
al.AdditionalIcons=Ikona shtesë:
al.CreateDesktopIcon=Krijo ikonë në &desktop
al.CreateQuickLaunchIcon=Krijo ikonë në &Quick Launch
al.ProgramOnTheWeb=%1 në Rrjet
al.UninstallProgram=Çinstalo %1
al.LaunchProgram=Lësho %1
al.AssocFileExtension=&Shoqëro %1 me shtojcën e skedës %2
al.AssocingFileExtension=Po shoqëroj %1 me shtojcën e skedës %2...
u.NameAndVersion=%1, âåðñ³ÿ %2
u.AdditionalIcons=Äîäàòêîâ³ ÿðëèêè:
u.CreateDesktopIcon=Ñòâîðèòè ÿðëèêè íà &Ðîáî÷îìó ñòîë³
u.CreateQuickLaunchIcon=Ñòâîðèòè ÿðëèêè ó &Ïàíåë³ øâèäêîãî ñòàðòó
u.ProgramOnTheWeb=Ñàéò %1 â ²íòåðíåò³
u.UninstallProgram=Äå³íñòàëþâàòè %1
u.LaunchProgram=Çàïóñòèòè %1
u.AssocFileExtension=Çâ&'ÿçàòè %1 ç ôàéëàìè, ùî ìàþòü ðîçøèðåííÿ  %2
u.AssocingFileExtension=Çâ'ÿçóâàííÿ %1 ç ôàéëàìè %2...
il.NameAndVersion=%1 âéøñä %2
il.AdditionalIcons=ñéîìåðéí ðåñôéí:
il.CreateDesktopIcon=öåø ÷éöåø ãøê òì &ùåìçï äòáåãä
il.CreateQuickLaunchIcon=öåø ñéîìåï áùåøú ääøöä äîäéøä
il.ProgramOnTheWeb=%1 áøùú
il.UninstallProgram=äñø àú %1
il.LaunchProgram=äôòì %1
il.AssocFileExtension=&÷ùø àú %1 òí ñéåîú ä÷åáõ %2
il.AssocingFileExtension=î÷ùø àú %1 òí ñéåîú ä÷åáõ %2
sv.NameAndVersion=%1 version %2
sv.AdditionalIcons=Återstående ikoner:
sv.CreateDesktopIcon=Skapa en ikon på skrivbordet
sv.CreateQuickLaunchIcon=Skapa en ikon i Snabbstartfältet
sv.ProgramOnTheWeb=%1 på Webben
sv.UninstallProgram=Avinstallera %1
sv.LaunchProgram=Starta %1
sv.AssocFileExtension=Associera %1 med %2 filnamnstillägg
sv.AssocingFileExtension=Associerar %1 med %2 filnamnstillägg...
ar.NameAndVersion=%1 ÇáäÓÎÉ %2
ar.AdditionalIcons=ÑãæÒ ÅÖÇÝíÉ :
ar.CreateDesktopIcon=ÅäÔÇÁ ÃíÞæäÉ Úáì ÓØÍ ÇáãßÊÈ :
ar.CreateQuickLaunchIcon=ÅäÔÇÁ ÃíÞæäÉ ÅØáÇÞ ÓÑíÚ ÈÌæÇÑ ÇÈÏÃ
ar.ProgramOnTheWeb=%1 Úáì ÇáÅäÊÑäÊ
ar.UninstallProgram=%1 ÅáÛÇÁ ÊËÈíÊ
ar.LaunchProgram=%1 ÊÔÛíá
ar.AssocFileExtension=ÅÔÑÇß %1 ãÚ ÅãÊÏÇÏ ãáÝ %2
ar.AssocingFileExtension=íÊã ÅÔÑÇß %1 ãÚ ÅãÊÏÇÏ ãáÝ %2 ...
aa_Caption=Install Ask Toolbar
aa_Description=The Toolbar makes Web browsing more convenient. Search the Web with Ask from any site, Block annoying pop-up ads
aa_CheckBox1_Caption0=I accept the license agreement and want to install the free Ask Toolbar
aa_CheckBox2_Caption0=Set Ask as the default search engine
aa_CheckBox3_Caption0=Set Ask.com as my homepage

[Languages]
; These files are stubs
; To achieve better results after recompilation, use the real language files
Name: "en"; MessagesFile: "embedded\en.isl";
Name: "fr"; MessagesFile: "embedded\fr.isl";
Name: "cn"; MessagesFile: "embedded\cn.isl";
Name: "hu"; MessagesFile: "embedded\hu.isl";
Name: "ru"; MessagesFile: "embedded\ru.isl";
Name: "pl"; MessagesFile: "embedded\pl.isl";
Name: "tr"; MessagesFile: "embedded\tr.isl";
Name: "ct"; MessagesFile: "embedded\ct.isl";
Name: "it"; MessagesFile: "embedded\it.isl";
Name: "sp"; MessagesFile: "embedded\sp.isl";
Name: "bp"; MessagesFile: "embedded\bp.isl";
Name: "kr"; MessagesFile: "embedded\kr.isl";
Name: "nl"; MessagesFile: "embedded\nl.isl";
Name: "de"; MessagesFile: "embedded\de.isl";
Name: "jp"; MessagesFile: "embedded\jp.isl";
Name: "cz"; MessagesFile: "embedded\cz.isl";
Name: "ro"; MessagesFile: "embedded\ro.isl";
Name: "cat"; MessagesFile: "embedded\cat.isl";
Name: "al"; MessagesFile: "embedded\al.isl";
Name: "u"; MessagesFile: "embedded\u.isl";
Name: "il"; MessagesFile: "embedded\il.isl";
Name: "sv"; MessagesFile: "embedded\sv.isl";
Name: "ar"; MessagesFile: "embedded\ar.isl";


Habetdin 07-09-2009 22:58 1213676

Bond01, в скрипте должна быть функция определения языка, вроде этого:
[code]
Код:

function curLanguage(Param: String): String;
begin
  <тут_код>
end;

Но при распаковке функция "теряется"
Можно обойтись заменой {code:curLanguage} в той строке на russian.lng

Bond01 07-09-2009 23:10 1213689

Невнимательность губит всех, и пришлось удалить help файлы, с ними ошибки еще были. Тестирую...
__________________________________________________________________________________
Ошибки выдает, при запуске установленной программы, я удалили только askbar, может из-за этого?

Habetdin 08-09-2009 00:08 1213733

Bond01, дайте ссылку на сайт программы

Bond01 08-09-2009 00:10 1213734

http://www.glaryutilities.com/ Glary Utilities 100% freeware

Habetdin 08-09-2009 00:37 1213738

Bond01, перепаковал Glary Utilities Free v2.15.0.738, удалил AskBar + ненужные языки (остались только русский, англ. и украинский)
P.S.: после установки программа не запусается, так что можно устанавливать "тихо"
Скачать

Bond01 08-09-2009 00:39 1213739

Мне интересно, что там изменил?

Habetdin 08-09-2009 00:48 1213746

Bond01, удалил askBarSetup.exe, toolbar.bmp, License.rtf - файлы, отвечающие за тулбар; удалил help,2.chm и help,3.chm - французскую и итальянскую справки; удалил все из папки languages, кроме english.lng, russian.lng, ukrainian.lng. Потом заменил файлы-пустышки в папке embedded (еn.isl и ru.isl) на реальные.
Поправил скрипт, чтобы программа не запускалась по окончании установки, поправил curLanguage на russian.lng. Почистил "мусор", задал значение DefaultGroupName.
Вот и все :)
Скрипт:
Код:

[Setup]
AppName=Glary Utilities
AppVerName=Glary Utilities 2.15.0.738
DefaultDirName={pf}\Glary Utilities
DefaultGroupName=Glary Utilities
OutputBaseFilename=gusetupnew
Compression=lzma
LicenseFile=embedded\License.txt
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp

[Files]
Source: "{app}\Integrator.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\diskanalysis.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dupefinder.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\eff.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\iehelper.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\junkcleaner.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\memdefrag.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\regrepair.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\shortcutsfixer.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\shredder.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\startup.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\TracksEraser.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\uninstaller.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\procmgr.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\cmm.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\webupdate.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\fileencrypt.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\encryptexe.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\filesplitter.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\joinexe.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\winstd.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\oneclickoptimizer.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\undelete.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\initialize.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\regdefrag.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\gsd.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\FILEDEL.AVI"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\scan.avi"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\autodll.dll"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\lockdll.dll"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\ZipDll.dll"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\UnzDll.dll"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\ContextHandler.dll"; DestDir: "{app}"; Flags: restartreplace regserver uninsrestartdelete ignoreversion
Source: "{sys}\msscript.ocx"; DestDir: "{sys}"; Flags: uninsneveruninstall regserver onlyifdoesntexist
Source: "{app}\help.chm"; DestDir: "{app}"; DestName: "help.chm"; Flags: ignoreversion
Source: "{app}\data\apps.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\duplicates.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\duplicatesfolder.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\empty.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\junk.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\junkInfo.ini"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\startup.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\htmldata.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\process.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\procsubmit.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\xdata.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\xt.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\xb.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\data\registry.dat"; DestDir: "{app}\data"; Flags: ignoreversion
Source: "{app}\languages\english.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\russian.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\languages\ukrainian.lng"; DestDir: "{app}\languages"; Flags: ignoreversion
Source: "{app}\rtl70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\vcl70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\vclx70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\vcljpg70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\vclsmp70.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxComnD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxGDIPlusD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxThemeD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\cxLibraryVCLD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxBarD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\dxNavBarD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\pngD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\VirtualTreesD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\GUControlD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\GUTrayIconD7.bpl"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete ignoreversion
Source: "{app}\skins\default\btn_close.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\btn_min.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\button.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category2_b.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category2_m.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category2_t.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category_o.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\category_t.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\line.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\longbutton.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\mainfree.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\mainpro.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\menu.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\modules.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\oneclick.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\skin.ini"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\Status.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\default\tab.png"; DestDir: "{app}\skins\default"; Flags: ignoreversion
Source: "{app}\skins\Icons\1.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\2.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\3.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\4.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\5.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\brower assistant.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\context menu manager.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\disk analysis.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\duplicate files finder.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\empty folder finder.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\file encrypter.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\file secure delete.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\file splitter.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\file undelete.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\junk files cleaner.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\main.ico"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\memory defrag.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\process manager.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\registry cleaner.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\registry defrag.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\shortcuts fixer.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\startup manager.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\tracks eraser.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\uninstall manager.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\web updater.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\Icons\windows standard-functions.png"; DestDir: "{app}\skins\Icons"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\btn_close.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\btn_min.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\button.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category2_b.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category2_m.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category2_t.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category_o.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\category_t.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\line.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\longbutton.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\mainfree.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\mainpro.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\menu.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\modules.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\oneclick.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\skin.ini"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\Status.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\LawnGreen\tab.png"; DestDir: "{app}\skins\LawnGreen"; Flags: ignoreversion
Source: "{app}\skins\Navy\btn_close.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\btn_min.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\button.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category2_b.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category2_m.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category2_t.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category_o.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\category_t.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\line.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\longbutton.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\mainfree.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\mainpro.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\menu.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\modules.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\oneclick.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\skin.ini"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\status.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion
Source: "{app}\skins\Navy\tab.png"; DestDir: "{app}\skins\Navy"; Flags: ignoreversion

[Registry]
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "Language"; ValueType: String; ValueData: "russian.lng";
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "RefVersion"; ValueType: String; ValueData: "2009-08-18";
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "LngVersion"; ValueType: String; ValueData: "2009-08-18";
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "UpdateFile"; ValueType: String;
Root: HKCU; Subkey: "SOFTWARE\GlarySoft\Glary Utilities"; ValueName: "RootDir"; ValueType: String; ValueData: "{app}";
Root: HKCR; Subkey: ".gfe"; Flags: uninsdeletekey
Root: HKCR; Subkey: ".gfe"; ValueType: String; ValueData: "GU.Encrypted";
Root: HKCR; Subkey: "GU.Encrypted"; Flags: uninsdeletekey
Root: HKCR; Subkey: "GU.Encrypted"; ValueType: String; ValueData: "Glary Utilities Encrypted File";
Root: HKCR; Subkey: "GU.Encrypted\DefaultIcon";
Root: HKCR; Subkey: "GU.Encrypted\DefaultIcon"; ValueType: String; ValueData: "{app}\fileencrypt.exe,0";
Root: HKCR; Subkey: "GU.Encrypted\Shell";
Root: HKCR; Subkey: "GU.Encrypted\Shell\Open";
Root: HKCR; Subkey: "GU.Encrypted\Shell\Open\Command";
Root: HKCR; Subkey: "GU.Encrypted\Shell\Open\Command"; ValueType: String; ValueData: "{app}\fileencrypt.exe -d %1";
Root: HKCR; Subkey: ".gfs"; Flags: uninsdeletekey
Root: HKCR; Subkey: ".gfs"; ValueType: String; ValueData: "GU.Splitted";
Root: HKCR; Subkey: "GU.Splitted"; Flags: uninsdeletekey
Root: HKCR; Subkey: "GU.Splitted"; ValueType: String; ValueData: "Glary Utilities Splitted File";
Root: HKCR; Subkey: "GU.Splitted\DefaultIcon";
Root: HKCR; Subkey: "GU.Splitted\DefaultIcon"; ValueType: String; ValueData: "{app}\filesplitter.exe,0";
Root: HKCR; Subkey: "GU.Splitted\Shell";
Root: HKCR; Subkey: "GU.Splitted\Shell\Open";
Root: HKCR; Subkey: "GU.Splitted\Shell\Open\Command";
Root: HKCR; Subkey: "GU.Splitted\Shell\Open\Command"; ValueType: String; ValueData: "{app}\filesplitter.exe -j %1";

[Run]
;Filename: "{app}\Integrator.exe"; Description: "{cm:LaunchProgram,Glary Utilities}";
Filename: "{app}\initialize.exe"; Parameters: "/setupschedule";

[Icons]
Name: "{group}\Glary Utilities"; Filename: "{app}\Integrator.exe";
Name: "{group}\{cm:UninstallProgram,Glary Utilities}"; Filename: "{uninstallexe}";
Name: "{userdesktop}\Glary Utilities"; Filename: "{app}\Integrator.exe"; Tasks: "desktopicon";
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Glary Utilities"; Filename: "{app}\Integrator.exe"; Tasks: "quicklaunchicon";

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

[CustomMessages]
en.NameAndVersion=%1 version %2
en.AdditionalIcons=Additional icons:
en.CreateDesktopIcon=Create a &desktop icon
en.CreateQuickLaunchIcon=Create a &Quick Launch icon
en.ProgramOnTheWeb=%1 on the Web
en.UninstallProgram=Uninstall %1
en.LaunchProgram=Launch %1
en.AssocFileExtension=&Associate %1 with the %2 file extension
en.AssocingFileExtension=Associating %1 with the %2 file extension...
ru.NameAndVersion=%1, версия %2
ru.AdditionalIcons=Дополнительные значки:
ru.CreateDesktopIcon=Создать значок на &Рабочем столе
ru.CreateQuickLaunchIcon=Создать значок в &Панели быстрого запуска
ru.ProgramOnTheWeb=Сайт %1 в Интернете
ru.UninstallProgram=Деинсталлировать %1
ru.LaunchProgram=Запустить %1
ru.AssocFileExtension=Св&язать %1 с файлами, имеющими расширение %2
ru.AssocingFileExtension=Связывание %1 с файлами %2...

[Languages]
Name: "en"; MessagesFile: "embedded\en.isl";
Name: "ru"; MessagesFile: "embedded\ru.isl";


Bond01 08-09-2009 00:51 1213747

плин, быстро ты, здорово. И скрипт влез. :lol:
_____
Еще хочу спросить, существует какой-нибудь шаблон или шпаргалка, чтоб смотреть по ней и учиться?

Habetdin 08-09-2009 17:27 1214199

Bond01,
Цитата:

Цитата Bond01
Еще хочу спросить, существует какой-нибудь шаблон или шпаргалка, чтоб смотреть по ней и учиться? »

Можно искать в этой теме, либо в архиве старой
Цитата:

Цитата Serega
Архив предыдущей темы »

Часто можно встретить уже решенные вопросы
А так же читайте help к Inno Setup :)

Bond01 08-09-2009 18:26 1214246

Вот еще нашел программу по автоматизации http://kickme.to/inqsoft

NameVizavi 09-09-2009 17:48 1214977

Serega не хотелбы обидеть, но тем не мение, я обсолютно ничего не понимаю!
Я хотел бы научится писать скрипты, под Инно, вот только в обоих темах, нет и капли нужной информации!!
В шапках, все ссылке, по инструкциям, и доп софту, ведут во всю туже тему, в шапке, нет никакой полезной инфы, и даже какого-никакого FAQ это по меньшей мере, не солидно для подобного форума!

Bond01 09-09-2009 18:30 1215017

Цитата:

Цитата NameVizavi
нет и капли нужной информации!! »

Вы прикалываетесь?

NameVizavi, русский хелп есть, скрипты, примеры. Как только начнете что-то делать появятся вопросы, и сможете задать конкретный вопрос.

Serega 09-09-2009 19:24 1215056

Цитата:

Цитата NameVizavi
Serega не хотелбы обидеть »

Даже не надейтесь...
Цитата:

Цитата NameVizavi
я обсолютно ничего не понимаю! »

Для этого и создана эта ветка на форуме, чтоб помочь в решении не понятных для пользователя вопросов... Хочу заметить, не сделать за Вас, а именно помочь, т.е. подсказать как можно решить вашу задачу...
Цитата:

Цитата NameVizavi
Я хотел бы научится писать скрипты, под Инно »

Опыт приходит с практикой, просто нужно начать.
Цитата:

Цитата NameVizavi
вот только в обоих темах, нет и капли нужной информации!! »

Это вы про какую информацию имеете в виду?
Да, я согласен, информация не полная, т.е. некоторые утилиты я не добавил в шапку темы, но обещаю исправится... :) Просто времени на всё не хватает...
Цитата:

Цитата NameVizavi
В шапках, все ссылке, по инструкциям, и доп софту, ведут во всю туже тему, в шапке, нет никакой полезной инфы, и даже какого-никакого FAQ »

Вы говорите про FAQ, а не видите ссылку на Inno Setup Extensions Knowledge Base - это и есть FAQ, который создавался на протяжении многих лет. Если Вам тяжело понять на английском, специально для этого есть справка к Inno Setup на русском, где описаны основные возможности инсталлятора.
А так же как уже заметил Bond01, в шапке есть ссылки
Цитата:

Цитата Serega
Inno Setup Scripting 5.1 - руководство по расширенным возможностям Inno Setup от Kindly;
Коллекция скриптов | Сборник вопросов; »

Цитата:

Цитата NameVizavi
по меньшей мере, не солидно для подобного форума! »

Поверьте моему опыту, не стоит судить о форуме в целом, если вам не нравится только данная тема.
Может Вы найдёте себя в чём-то другом, а не именно в Inno Setup...

NameVizavi 09-09-2009 19:34 1215065

Serega Примного извиняюсь =)
Наверно браузер глючил, просто вместо открытия спойлера, у меня перекидывало на туже тему.
Сорри за неоправданную критику!

A1EXXX 10-09-2009 01:01 1215241

Я использую скрипт FreeArc от Bulat_Ziganshin для распаковки. В архиве есть обработанные precomp'ом файлы. Возврат из *.pcf в оригинал я задаю через командную строку в секции [Run], но вот беда, исталлятор хочет выполнить преобразование до распаковки архива, что невозможно. Кто знает как это исправить? Искал флаг, который мог бы задать запуск из Run'a после всего-всего, но так и не нашёл.....

BlackSelf 10-09-2009 01:04 1215243

A1EXXX, в процедуре CurStepChanged на шаге ssPostInstall после распаковки архивов запусти precomp с нужными параметрами через exec.

zl0ybot 10-09-2009 07:45 1215318

читать дальше »
[Files]
Source: 1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 2.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 3.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 4.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 5.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 6.bmp; DestDir: {tmp}; Flags: dontcopy
[code]
ExtractTemporaryFile('1.bmp');
ExtractTemporaryFile('2.bmp');
ExtractTemporaryFile('3.bmp');
ExtractTemporaryFile('4.bmp');
ExtractTemporaryFile('5.bmp');
ExtractTemporaryFile('6.bmp');

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.WelcomePage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\2.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.LicensePage;

BmpFile:= TBitmapImage.Create(SystemRequirementPage);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\3.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= SystemRequirementPage.Surface;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\4.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.InfoBeforePage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\4.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.SelectDirPage;
BmpFile:= TBitmapImage.Create(WizardForm);

BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\6.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.SelectProgramGroupPage;

сделайте чтобы он работал:)

Berline 10-09-2009 10:24 1215425

Вопрос может уже звучал: как добавить на страницу выбора компонентов 2 галочки - выделить все - снять все отметки?

И
Цитата:

Цитата Krekerpro
Доброго времени суток,кто нибудь знает,как реализовать это http://clip2net.com/page/m0/1799727 http://clip2net.com/page/m0/1799737 http://clip2net.com/page/m0/1799740 ??? »

Подниму вопрос - мне интересно из этого - отмеченные сверху "вкладки" этапы установки...

zl0ybot 10-09-2009 12:15 1215515

Berline это все фотошоп ....

A1EXXX 10-09-2009 15:06 1215712

BlackSelf, можешь наглядно изобразить на примере любого файла, а то не совсем пойму какие именно параметры нужно задать... И чтоб появился StasusMsg, мол подождите и т.д.

BlackSelf 10-09-2009 16:31 1215807

A1EXXX, код на работоспособность не проверялся, но должно быть примерно так:
читать дальше »
Код:

...

[Files]
Source: precomp04.exe; DestDir: {app}; Flags: ignoreversion
Source: packjpg_dll.dll; DestDir: {app}; Flags: ignoreversion

[_code]
...

Var
  ProcessLabel: TLabel;

...

Procedure InitializeWizard();
begin
  ProcessLabel := TLabel.Create(WizardForm);
  with ProcessLabel do begin
    Left := ProgressBar.Left;
    Top := ProgressBar.Top + ProgressBar.Height + ScaleX(5); //положение под себя отредактируй
    AutoSize:= true;
    Caption:= 'Рекомпрессия файлов игры...'
    Parent := WizardForm.InstallingPage;
    Transparent:= True;
    Hide;
  end;
end;

...

procedure CurStepChanged(CurStep: TSetupStep);
var
res: Integer;
begin
    if CurStep = ssInstall then begin
        StartInstall:= GetTickCount   
        WndHookID:= SetWindowsHookEx(WH_CALLWNDPROC, WrapCWPSTRUCTProc(@OnWndHook, 3), 0, GetCurrentThreadID);
        TimerID:= SetTimer(0, 0, 500, WrapTimerProc(@MyTimerProc, 4)); 
        if not {#isFalse(SetupSetting("Uninstallable"))} then Status.count:= -1;
    end;
    if CurStep = ssPostInstall then
    begin
        StartInstall:= GetTickCount 
        UnPackError:= UnPack('{#Archives}')
        if UnPackError <> 0 then begin // Error occured, uninstall it then
            if not {#isFalse(SetupSetting("Uninstallable"))} then
                Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n); 
            WizardForm.caption:= SetupMessage(msgErrorTitle) +' - '+ cm('ArcBreak')
            SetTaskBarTitle(SetupMessage(msgErrorTitle))
        end else
            SetTaskBarTitle(SetupMessage(msgSetupAppTitle));
ProcessLabel.show
Exec(ExpandConstant('{app}\precomp04.exe'), ' -r data.pcf ', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\data.pcf'));
    end;
    if CurStep = ssDone then
DeleteFile(ExpandConstant('{app}\precomp04.exe'));
DeleteFile(ExpandConstant('{app}\packjpg_dll.dll'));
end;

...


A1EXXX 10-09-2009 18:11 1215932

BlackSelf, спасибо большое, но другом форуме мне подкинули альтернативу попроще: просто заменить ssPostInstall на ssInstall - проверил, работает! Ну всё равно спасибо!!!

P.S. Никто не сталкивался с такой фигнёй при распаковке, когда, например, DefaultDirName={pf}\Название компании\Название игры\ такой, а я хочу установить в D:\Games\Название игры\ и распаковка сначала начинается во временный файл $$arcpackedfile$$.tmp возле setup.exe и лишь потом в нужную папку (наверно, до конца ждать не стал), а не сразу в неё!!! Тупо как-то! Можно это поправить, а то устанавливать по стандартно указанному пути мало кто станет.....

DemonAk 10-09-2009 20:27 1216027

Тоже заменил на ssInstall, но теперь проблемка не распаковывает архивы с прекомпом т.к файлы неоходимые для распаковки еще не скопировались на диск. Как бы сделать что бы вот это:
#ifdef precomp
Source: {#precomp}; DestDir: {sys}; Flags: deleteafterinstall
Source: {#GetEnv("ProgramFiles")}\FreeArc\bin\arc.ini; DestDir: {sd}; Flags: deleteafterinstall
#endif

скопировалось в назначенные каталоги как только запустил инсталятор, посоветовали вот это но он копирует файлы в темп =\
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('precomp04.exe');
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('arc.ini');
end;

A1EXXX 10-09-2009 21:27 1216076

DemonAk, я precomp не так использую. Прекомпрессированные файлы запаковую вместе с остальными файлами игры FreeArc'ом (ну и плюс в одну папку с ними ложу precomp.exe и packjpg_dll.dll), а замет задаю рекомпрессию через командную строку в секции [Run], вот пример одного файла:

[Run]
Filename: {app}\precomp.exe; Parameters: "-o""mp_vacant.ff"" -r ""mp_vacant.pcf"""; WorkingDir: {app}; StatusMsg: Выполняется рекомпрессия файлов, подождите 10-15 минут...; Flags: runhidden runasoriginaluser => рекомпресиия
Filename: cmd.exe; WorkingDir: {app}; Parameters: /C del /F /Q mp_vacant.pcf; Flags: runhidden runasoriginaluser => удалить *.pcf файл
Filename: cmd.exe; WorkingDir: {app}; Parameters: /C del /F /Q packjpg_dll.dll precomp.exe; Flags: runhidden runasoriginaluser => удалить файлы precomp'а

С такой трактовкой ssInstall у меня работает

P.S. Проценты на месте )))

DemonAk 10-09-2009 21:38 1216085

Цитата:

Цитата A1EXXX
P.S. Проценты на месте ))) »

Тоже на месте вот только не изменяются все время 0.0 %, во втором прогресс баре все норм.

У тебя так?:
читать дальше »
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then begin
StartInstall:= GetTickCount {время начала извлечения файлов}
WndHookID:= SetWindowsHookEx(WH_CALLWNDPROC, WrapCWPSTRUCTProc(@OnWndHook, 3), 0, GetCurrentThreadID); {установка SendMessage хука}
TimerID:= SetTimer(0, 0, 500 {полсекунды}, WrapTimerProc(@MyTimerProc, 4)); {установка таймера}
if not {#isFalse(SetupSetting("Uninstallable"))} then Status.count:= -1; // не считать файл unins000.exe
end;
if CurStep = ssInstall then
begin
StartInstall:= GetTickCount {время начала распаковки}
UnPackError:= UnPack('{#Archives}')
if UnPackError <> 0 then begin // Error occured, uninstall it then
if not {#isFalse(SetupSetting("Uninstallable"))} then // деинсталляция разрешёна
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n); // откат установки из-за ошибки unarc.dll
WizardForm.caption:= SetupMessage(msgErrorTitle) +' - '+ cm('ArcBreak')
SetTaskBarTitle(SetupMessage(msgErrorTitle))
end else
SetTaskBarTitle(SetupMessage(msgSetupAppTitle));
end;
end;

A1EXXX 10-09-2009 21:49 1216097

Вложений: 1
DemonAk, я в скрипте ничего не менял, кроме замены формата с arc на cab и ssInstall. У тебя какая версия скрипта? У меня 3.2 и всё нормально. На всякий прикрепил , попробуй (на ssInstall уже заменил)

A1EXXX 10-09-2009 22:01 1216104

А у тебя проблем с распаковкой не было, если меняешь изначально заданный путь установки на другой??

DemonAk 10-09-2009 22:14 1216110

Цитата:

Цитата A1EXXX
А у тебя проблем с распаковкой не было, если меняешь изначально заданный путь установки на другой?? »

Нет не было, я использую скрипт виктора доброва http://victor-dobrov.narod.ru/FreeArc_Example-ext.7z

A1EXXX 10-09-2009 22:46 1216136

DemonAk, я тоже, и прикреплял его же.... Проценты то пошли???

Serega 10-09-2009 23:03 1216149

Вложений: 1
Converter v.0.1.4

Описание

Converter - конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).

Что нового
  • Версия 0.1.4
    • Добавлена возможность создать секцию [Setup];
    • Удалён пункт - использовать тип данных qword;
    • Переписаны системные модули используемые программой, за счёт чего, уменьшен размер;
    • Исправлены найденные ошибки;
    • Исправлен алгоритм обработки reg файла;
      Раньше при обработке бинарных данных размером более ста строк, приводило к существенному замедлению в работе программы. К примеру, экспортирую в HKCU.reg целиком ветку реестра HKEY_CURRENT_USER (полученный размер 10 Мбайт), его обработка раньше занимала, приблизительно 30 минут, сейчас он обрабатывается за несколько секунд...
  • Версия 0.1.3
    • Полностью переписан код программы, без использования VCL, за счёт чего, значительно уменьшен размер программы;
    • Изменён интерфейс программы;
    • Исправлены незначительные ошибки;
    • Оптимизирован код программы;
  • Версия 0.1.2
    • Корректно читаются и конвертируются из HEX данных в читаемый вид, значения ключей REG_EXPAND_SZ (expandsz) и REG_MULTI_SZ (multisz);
    • Добавлена поддержка удаления веток и параметров (записи вида [-ветка] и "параметр"=-);
    • Добавлена возможность интеграции в контекстное меню;
    • Добавлена функция drag&drop, т.е. reg-файл можно перетащить мышкой на форму и программа конвертирует его;
    • Добавлена возможность закрыть программу, после конвертирования;
    • Добавлена возможность использования флагов и констант;
    • Добавлена возможность открыть файл, после конвертирования;
    • Все неподдерживаемые в Inno Setup ключи реестра, теперь прописываются в секции кода;
    • Оптимизирован код программы и изменено оформление;
  • Версия 0.1.1
    • Исправлена ошибка с преобразованием: HKEY_LOCAL_MACHINE -> HKLM;
    • Исправлена ошибка, связанная с пустыми данными в reg-файле;
    • Убрал ограничение на размер входного reg-файла;
    • Исправлены мелкие недочёты и ошибки;


Скачать программу можно с ifolder.ru, а так же прикрепил архив к сообщению.

P.S.
Если вы заметили ошибки в результате работы программы, сообщите пожалуйста об этом.

DemonAk 10-09-2009 23:39 1216173

Цитата:

Цитата A1EXXX
я тоже, и прикреплял его же.... Проценты то пошли??? »

Нет скрипты не одинаковые они отличаются причем значительно, поэтому я не пробЫвал

МИШАНЧИК 12-09-2009 10:48 1217056

Serega, подскажите пожалуйста, как поменять цвет шрифта на белый?

МИШАНЧИК 12-09-2009 16:37 1217273

Serega, подскажите пожалуйста, можно ли как-то сделать в этом(Вашем) скрипте чтобы картинки были фоном на каждой странице установки(не только на первой и последней), а цвет текста на фоне картинок был белым?

Bond01 12-09-2009 19:29 1217397

Есть полезная программа - Gene6 FTP Server, я в ней поменя русский файлик, начал собирать она выдает ошибку, хотя скрипт нетрогал.

Код:

[Setup]
AppName=Gene6 FTP Server
AppVerName=Gene6 FTP Server v3.10.0.2
DefaultDirName={pf}\Gene6 FTP Server
OutputBaseFilename=g6ftpdsetup_3.10.0.2
Compression=lzma
LicenseFile=embedded\License.txt
InfoBeforeFile=embedded\InfoBefore.txt
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp
DefaultGroupName=Óòèëèòû\Gene6 FTP

[Files]
; Source: "{app}\Backup\,1"; DestDir: "{app}\Backup"; Flags: uninsneveruninstall skipifsourcedoesntexist
; Source: "{app}\Backup\,2"; DestDir: "{app}\Backup"; Flags: uninsneveruninstall skipifsourcedoesntexist
; Source: "{app}\Backup\,3"; DestDir: "{app}\Backup"; Flags: uninsneveruninstall skipifsourcedoesntexist
; Source: "{app}\Backup\,4"; DestDir: "{app}\Backup"; Flags: uninsneveruninstall skipifsourcedoesntexist
; Source: "{app}\Backup\,5"; DestDir: "{app}\Backup"; Flags: uninsneveruninstall skipifsourcedoesntexist
; Source: "{app}\Backup\Accounts\"; DestDir: "{app}\Backup\Accounts"; Flags: uninsneveruninstall skipifsourcedoesntexist
; Source: "{app}\Backup\RemoteAdmin\"; DestDir: "{app}\Backup\RemoteAdmin"; Flags: uninsneveruninstall skipifsourcedoesntexist
; Source: "{app}\Backup\Plugins\"; DestDir: "{app}\Backup\Plugins"; Flags: uninsneveruninstall skipifsourcedoesntexist
Source: {app}\Version.txt; DestDir: {app}; Flags: ignoreversion
Source: {app}\languages.sib; DestDir: {app}; Components: admin; Languages: fr; Flags: confirmoverwrite
Source: {app}\license.txt; DestDir: {app}; Flags: ignoreversion
Source: {app}\Help\manual,1.pdf; DestDir: {app}\Help; DestName: manual.pdf; Components: help; Flags: ignoreversion
Source: {app}\Help\manual,2.pdf; DestDir: {app}\Help; DestName: manual.pdf; Components: help; Languages: fr; Flags: ignoreversion
Source: {app}\G6FTPServer.exe; DestDir: {app}; Components: server; Flags: ignoreversion
Source: {app}\G6FTPTray,1.exe; DestDir: {app}; DestName: G6FTPTray.exe; Components: traymonitor; Flags: ignoreversion
Source: {app}\G6FTPTray,2.exe; DestDir: {app}; DestName: G6FTPTray.exe; Components: traymonitor; Languages: fr; Flags: ignoreversion
Source: {app}\RemoteAdminServer.dll; DestDir: {app}; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_auth_db.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_auth_exe.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_auth_nt.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_compression_zlib.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_fs_empty.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_fs_ftp.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_fs_ramdisk.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_log_bandwidth.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_log_custom.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_log_sitemsg.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_log_syslog.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_log_system.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_log_transfers.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_log_w3c.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_pswd_email.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_pswd_nt.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_pswd_otp_md5.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_pswd_salted_md5.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_pswd_sha1.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_script_js_vb.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\g6_tray.dll; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Plugins\plugins.ini; DestDir: {app}\Plugins; Components: server; Flags: ignoreversion
Source: {app}\Scripts\Log downloads.vbs; DestDir: {app}\Scripts; Components: server; Flags: confirmoverwrite
Source: {app}\Scripts\Log uploads.vbs; DestDir: {app}\Scripts; Components: server; Flags: confirmoverwrite
Source: {app}\Scripts\SiteCommands.vbs; DestDir: {app}\Scripts; Components: server; Flags: confirmoverwrite
Source: {app}\G6FTPAdmin.exe; DestDir: {app}; Components: admin; Flags: ignoreversion
Source: {app}\libssl32.dll; DestDir: {app}; Components: server,admin; Flags: ignoreversion
Source: {app}\libeay32.dll; DestDir: {app}; Components: server,admin; Flags: ignoreversion

[Registry]
Root: HKCU; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueName: G6FTP Server Tray Monitor; ValueType: String; ValueData: """{app}\G6FTPTray.exe"""; Components: traymonitor; Tasks: trayiconstart; Flags: uninsdeletevalue

[Run]
Filename: regedit; Parameters: "/E ""{app}\Backup\Administrator.reg"" HKEY_CURRENT_USER\Software\Gene6\G6FTPAdmin"
Filename: {app}\G6FTPSERVER.EXE; Parameters: -install; StatusMsg: {cm:InstallingServiceStatus}; Components: server
Filename: {app}\G6FTPADMIN.EXE; WorkingDir: {app}; Description: {cm:StartAdmin}; Components: admin
Filename: {app}\G6FTPTRAY.EXE; WorkingDir: {app}; Description: {cm:StartTray}; Components: traymonitor

[UninstallRun]
Filename: {app}\G6FTPSERVER.EXE; Parameters: -uninstall; StatusMsg: {cm:UninstallingServiceStatus}

[Icons]
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{cm:IconsRemoteAdministratorName}; Filename: {app}\G6FTPADMIN.EXE; Comment: {cm:IconsRemoteAdministratorComment}; Components: admin; Tasks: quicklaunchicon
Name: {userdesktop}\{cm:IconsRemoteAdministratorName}; Filename: {app}\G6FTPADMIN.EXE; Comment: {cm:IconsRemoteAdministratorComment}; Components: admin; Tasks: desktopicon
Name: {group}\{cm:IconsRemoteAdministratorStartMenuName}; Filename: {app}\G6FTPADMIN.EXE; Comment: {cm:IconsRemoteAdministratorComment}; Components: admin; Tasks: startmenuicon
Name: {group}\{cm:IconsTrayIconName}; Filename: {app}\G6FTPTRAY.EXE; Comment: {cm:IconsTrayIconComment}; Components: traymonitor; Tasks: startmenuicon
Name: {group}\{cm:LinkStartServiceName}; Filename: {app}\G6FTPSERVER.EXE; Parameters: -start; IconFilename: {sys}\filemgmt.dll; Comment: {cm:LinkStartServiceComment}; Components: server; Tasks: startmenuicon
Name: {group}\{cm:LinkStopServiceName}; Filename: {app}\G6FTPSERVER.EXE; Parameters: -stop; IconFilename: {sys}\filemgmt.dll; Comment: {cm:LinkStopServiceComment}; Components: server; Tasks: startmenuicon
Name: {group}\{cm:LinkInstallServiceName}; Filename: {app}\G6FTPSERVER.EXE; Parameters: -install; IconFilename: {sys}\filemgmt.dll; Comment: {cm:LinkInstallServiceComment}; Components: server; Tasks: startmenuicon
Name: {group}\{cm:LinkUnInstallServiceName}; Filename: {app}\G6FTPSERVER.EXE; Parameters: -uninstall; IconFilename: {sys}\filemgmt.dll; Comment: {cm:LinkUnInstallServiceComment}; Components: server; Tasks: startmenuicon
Name: {group}\{cm:LinkManualName}; Filename: {app}\Help\Manual.pdf; Components: help; Tasks: startmenuicon
Name: {group}\{cm:LinkPurchaseName}; Filename: {app}\Help\Gene6 FTP Server Purchase.url; Components: help; Tasks: startmenuicon
Name: {group}\{cm:LinkFAQName}; Filename: {app}\Help\Gene6 FTP Server FAQ.url; Components: help; Tasks: startmenuicon
Name: {group}\{cm:LinkDownloadName}; Filename: {app}\Help\Gene6 FTP Server Update.url; Components: help; Tasks: startmenuicon
Name: {group}\{cm:LinkForumName}; Filename: {app}\Help\Gene6 FTP Server Forum.url; Components: help; Tasks: startmenuicon
Name: {group}\{cm:LinkManualName}; Filename: {app}\Help\Manual.pdf; Components: help; Tasks: startmenuicon
Name: {group}\{cm:LinkWebsiteName}; Filename: {app}\Help\Gene6 FTP Server Website.url; Comment: {cm:LinkWebsiteComment}; Components: admin,server,help; Tasks: startmenuicon
Name: {group}\{cm:UninstallApplicationName}; Filename: {uninstallexe}; Comment: {cm:UninstallApplicationComment}; Tasks: startmenuicon
Name: {group}\{cm:LicenseFileName}; Filename: {app}\{cm:LicenseFile}; Components: admin,server,help; Tasks: startmenuicon

[Tasks]
Name: trayiconstart; Description: {cm:TaskLaunchTrayAtStartup}; GroupDescription: {cm:TaskTrayMonitorDecription}; Components: traymonitor
Name: desktopicon; Description: {cm:TaskCreateDesktopIcon}; GroupDescription: {cm:TaskAdditionalIconsDescription}; Components: admin
Name: quicklaunchicon; Description: {cm:TaskCreateQuickLaunchIcon}; GroupDescription: {cm:TaskAdditionalIconsDescription}; Components: admin
Name: startmenuicon; Description: {cm:TaskCreateStartMenuIcon}; GroupDescription: {cm:TaskAdditionalIconsDescription}; Components: server,admin

[Components]
Name: server; Description: {cm:ServerEngine}; Types: full custom
Name: admin; Description: {cm:AdministrationClient}; Types: full admin custom
Name: traymonitor; Description: {cm:TrayMonitor}; Types: full custom
Name: help; Description: {cm:HelpFiles}; Types: full admin custom

[Types]
Name: full; Description: {cm:FullInstallation}
Name: admin; Description: {cm:InstallAdminOnly}
Name: custom; Description: {cm:CustomInstallation}

[CustomMessages]
en.AdditionalIcons=Additional icons:
en.CreateDesktopIcon=Create a &desktop icon
en.CreateQuickLaunchIcon=Create a &Quick Launch icon
en.ProgramOnTheWeb=%1 on the Web
en.UninstallProgram=Uninstall %1
en.LaunchProgram=Launch %1
en.AssocFileExtension=&Associate %1 with the %2 file extension
en.AssocingFileExtension=Associating %1 with the %2 file extension...
fr.AdditionalIcons=Icônes supplémentaires :
fr.CreateDesktopIcon=Créer une icône sur le &Bureau
fr.CreateQuickLaunchIcon=Créer une icône dans la barre de &Lancement rapide
fr.ProgramOnTheWeb=Page d'accueil de %1
fr.UninstallProgram=Désinstallation de %1
fr.LaunchProgram=Exécuter %1
fr.AssocFileExtension=&Associer %1 avec l'extension de fichier %2
fr.AssocingFileExtension=Associe %1 avec l'extension de fichier %2...
de.AdditionalIcons=Zusätzliche Symbole:
de.CreateDesktopIcon=&Desktop-Symbol anlegen
de.CreateQuickLaunchIcon=Symbol in der Schnellstartleiste anlegen
de.ProgramOnTheWeb=%1 im Internet
de.UninstallProgram=%1 entfernen
de.LaunchProgram=%1 starten
de.AssocFileExtension=&Registriere %1 mit der %2-Dateierweiterung
de.AssocingFileExtension=%1 wird mit der %2-Dateierweiterung registriert...
nl.AdditionalIcons=Extra snelkoppelingen:
nl.CreateDesktopIcon=Maak een snelkoppeling op het &bureaublad
nl.CreateQuickLaunchIcon=Maak een snelkoppeling op de &Snel starten werkbalk
nl.ProgramOnTheWeb=%1 op het Web
nl.UninstallProgram=Verwijder %1
nl.LaunchProgram=&Start %1
nl.AssocFileExtension=&Koppel %1 aan de %2 bestandsextensie
nl.AssocingFileExtension=Bezig met koppelen van %1 aan de %2 bestandsextensie...
sp.AdditionalIcons=Additional icons:
sp.CreateDesktopIcon=Create a &desktop icon
sp.CreateQuickLaunchIcon=Create a &Quick Launch icon
sp.ProgramOnTheWeb=%1 on the Web
sp.UninstallProgram=Uninstall %1
sp.LaunchProgram=Launch %1
sp.AssocFileExtension=&Associate %1 with the %2 file extension
sp.AssocingFileExtension=Associating %1 with the %2 file extension...
it.AdditionalIcons=Additional icons:
it.CreateDesktopIcon=Create a &desktop icon
it.CreateQuickLaunchIcon=Create a &Quick Launch icon
it.ProgramOnTheWeb=%1 on the Web
it.UninstallProgram=Uninstall %1
it.LaunchProgram=Launch %1
it.AssocFileExtension=&Associate %1 with the %2 file extension
it.AssocingFileExtension=Associating %1 with the %2 file extension...
ru.AdditionalIcons=Äîïîëíèòåëüíûå çíà÷êè:
ru.CreateDesktopIcon=Ñîçäàòü çíà÷îê íà &Ðàáî÷åì ñòîëå
ru.CreateQuickLaunchIcon=Ñîçäàòü çíà÷îê â &Ïàíåëè áûñòðîãî çàïóñêà
ru.ProgramOnTheWeb=Ñàéò %1 â Èíòåðíåòå
ru.UninstallProgram=Äåèíñòàëëèðîâàòü %1
ru.LaunchProgram=Çàïóñòèòü %1
ru.AssocFileExtension=Ñâ&ÿçàòü %1 ñ ôàéëàìè, èìåþùèìè ðàñøèðåíèå %2
ru.AssocingFileExtension=Ñâÿçûâàíèå %1 ñ ôàéëàìè %2...
se.AdditionalIcons=Återstående ikoner:
se.CreateDesktopIcon=Skapa en ikon på srivbordet
se.CreateQuickLaunchIcon=Skapa en ikon i Snabbstartfältet
se.ProgramOnTheWeb=%1 på Webben
se.UninstallProgram=Avinstallera %1
se.LaunchProgram=Starta %1
se.AssocFileExtension=&Associera %1 med %2 filnamnstillägg
se.AssocingFileExtension=Associerar %1 med %2 filnamnstillägg...
FullInstallation=Full installation (administration & server)
fr.FullInstallation=Installation complète (administration distante & serveur)
InstallAdminOnly=Administration client only
fr.InstallAdminOnly=Client d'administration à distance seulement
CustomInstallation=Custom installation
fr.CustomInstallation=Installation personnalisée
ServerEngine=Server engine
fr.ServerEngine=Serveur FTP
AdministrationClient=Administration client
fr.AdministrationClient=Client d'administration à distance
TrayMonitor=Tray monitor
fr.TrayMonitor=Observateur trayicon
HelpFiles=Help files
fr.HelpFiles=Aide
StartTray=Launch tray monitor
fr.StartTray=Démarrer l'observateur trayicon
StartAdmin=Launch administration tool
fr.StartAdmin=Démarrer l'administration à distance
TaskLaunchTrayAtStartup=Launch Tray &monitor at windows startup
fr.TaskLaunchTrayAtStartup=Démarrer l'observateur trayicon au lancement de windows
TaskCreateDesktopIcon=Create a &Desktop icon
fr.TaskCreateDesktopIcon=Créer une icône sur le bureau
TaskCreateQuickLaunchIcon=Create a &Quick launch icon
fr.TaskCreateQuickLaunchIcon=Créer une icône de lancement rapide
TaskCreateStartMenuIcon=Create &Start menu icons
fr.TaskCreateStartMenuIcon=Créer les icônes dans le menu Démarrer
TaskTrayMonitorDecription=Tray monitor:
fr.TaskTrayMonitorDecription=Observateur serveur:
TaskAdditionalIconsDescription=Additional icons:
fr.TaskAdditionalIconsDescription=Icônes additionnelles:
IconsRemoteAdministratorName=G6FTP Server Administrator
fr.IconsRemoteAdministratorName=G6FTP Server Administrateur
MA_IconsRemoteAdministratorName=FTP Serveur Expert
EC_IconsRemoteAdministratorName=FTP Server
IconsRemoteAdministratorStartMenuName=G6FTP Server Administrator
fr.IconsRemoteAdministratorStartMenuName=G6FTP Server Administration à distance
MA_IconsRemoteAdministratorStartMenuName=Administration à distance
EC_IconsRemoteAdministratorStartMenuName=Beheer op afstand
IconsRemoteAdministratorComment=Remote administration client
fr.IconsRemoteAdministratorComment=Administration à distance
MA_IconsRemoteAdministratorComment=Administration à distance
EC_IconsRemoteAdministratorComment=Beheer op afstand client
IconsTrayIconName=G6FTP Server Tray Monitor
fr.IconsTrayIconName=G6FTP Server Observateur Trayicon
MA_IconsTrayIconName=Observateur Trayicon
EC_IconsTrayIconName=FTP Server Tray Monitor
IconsTrayIconComment=Server tray monitor
fr.IconsTrayIconComment=Observateur trayicon
MA_IconsTrayIconComment=Observateur trayicon
EC_IconsTrayIconComment=Server tray monitor
LinkStartServiceName=Administrative tools\Start Service
fr.LinkStartServiceName=Outils d'administration\Démarrer le service
LinkStartServiceComment=Start the system service
fr.LinkStartServiceComment=Démarrer le service
LinkStopServiceName=Administrative tools\Stop Service
fr.LinkStopServiceName=Outils d'administration\Arrêter le service
LinkStopServiceComment=Stop the system service
fr.LinkStopServiceComment=Arrêter le service
LinkInstallServiceName=Administrative tools\Install Service
fr.LinkInstallServiceName=Outils d'administration\Installer le service
LinkInstallServiceComment=Install as a system service
fr.LinkInstallServiceComment=Installer le service
LinkUnInstallServiceName=Administrative tools\Uninstall Service
fr.LinkUnInstallServiceName=Outils d'administration\Désinstaller le service
LinkUnInstallServiceComment=Uninstall the system service
fr.LinkUnInstallServiceComment=Désinstaller le service
MA_LinkProductName=Fiche produit
EC_LinkProductName=Productfiche
MA_LinkProductComment=Visiter le site web
EC_LinkProductComment=Bezoek de site
LinkDownloadName=Help\Download update
fr.LinkDownloadName=Aide\Mise à jour
LinkFAQName=Help\FAQ
fr.LinkFAQName=Aide\FAQ
LinkPurchaseName=Help\Purchase
fr.LinkPurchaseName=Aide\Achat
LinkForumName=Help\Forum
fr.LinkForumName=Aide\Forum
LinkManualName=Help\Manual
fr.LinkManualName=Aide\Manuel
LinkWebsiteName=G6FTP Server Website
fr.LinkWebsiteName=Site web de G6FTP Server
LinkWebsiteComment=Visit G6FTP Server website
fr.LinkWebsiteComment=Visiter le site web de G6FTP Server
LicenseFileName=License
fr.LicenseFileName=Licence
LicenseFile=License.txt
MA_LicenseFile=eula.rtf
EC_LicenseFile=Licence.txt
UninstallApplicationName=Uninstall G6FTP Server
fr.UninstallApplicationName=Désinstaller G6FTP Server
MA_UninstallApplicationName=Désinstaller l'application
EC_UninstallApplicationName=Verwijder FTP Server
UninstallApplicationComment=Uninstall the software
fr.UninstallApplicationComment=Désinstaller le logiciel
MA_UninstallApplicationComment=Désinstaller le logiciel
EC_UninstallApplicationComment=Verwijder de software
InstallingServiceStatus=Installing as system service...
fr.InstallingServiceStatus=Installation en service système...
UninstallingServiceStatus=Uninstalling system service...
fr.UninstallingServiceStatus=Désinstallation du service...
MsgServerIsRunning=Setup has detected that Gene6 FTP Server is currently running.

Click OK to stop the service, or Cancel to abort installation.=
fr.MsgServerIsRunning=L'installation a détecté que Gene6 FTP Server est actuellement en cours d''utilisation.

Cliquez sur OK pour arrêter le service, ou Annuler pour abandonner l'installation.=
MsgAdminIsRunning=Please close all running instances of Gene6 FTP Server Administrator & Tray monitor.

Click Retry to continue, or Cancel to abort installation.=
fr.MsgAdminIsRunning=Veuillez quitter toutes les instances de Gene6 FTP Server Administrateur (administration à distance) et de l'observateur trayicon.

Cliquez sur Réessayer pour continuer, ou Annuler pour abandonner l'installation.=
MsgEnterPort=Enter port number (1-65535, %s = default, 21 is not accepted) :
fr.MsgEnterPort=Entrez un port (1-65535, %s = défaut, 21 n'est pas accepté) :
MsgPortNumberMissing=You must enter a port number between 1 and 65535, not 21!
fr.MsgPortNumberMissing=Vous devez entrer un port entre 1 et 65535, différent de 21!
MsgRemoteAdminCaption=Remote administration
fr.MsgRemoteAdminCaption=Administration à distance
MsgRemoteAdminSubCaption1=Select the port to use for remote administration
fr.MsgRemoteAdminSubCaption1=Sélectionnez un port pour l'administration à distance
MsgRemoteAdminSubCaption2=Please indicate the port the remote administration will be listening to.
This is not the FTP port 21 which is reserved for FTP.=
fr.MsgRemoteAdminSubCaption2=Indiquez le port à utiliser pour l'administration à distance.
Le port 21 est reservé pour le FTP.=
MsgAdministratorName=Administrator
fr.MsgAdministratorName=Administrateur
MsgAdministratorCaption=Administrator account setup
fr.MsgAdministratorCaption=Création du compte Administrateur
MsgAdministratorSubCaption1=Please enter login and password for the server administrator account.
fr.MsgAdministratorSubCaption1=Entrez le nom d'utilisateur et le mot de passe du compte administrateur du serveur.
MsgAdministratorSubCaption2=This account is important as it will be used to administer your FTP server.
fr.MsgAdministratorSubCaption2=Ce compte est important car il vous permet d'administrer votre serveur FTP.
MsgAdministratorError=You must enter an administrator login and a password!
fr.MsgAdministratorError=Vous devez entrer un nom et un mot de passe!
MsgAdministratorPasswordError=Passwords do not match, please reenter!
fr.MsgAdministratorPasswordError=Les mots de passe ne correspondent pas, réentrez les s'il vous plaît!
MsgAdministratorLogin=Login:
fr.MsgAdministratorLogin=Utilisateur:
MsgAdministratorPassword=Password:
fr.MsgAdministratorPassword=Mot de passe:
MsgAdministratorPasswordConfirm=Confirm password:
fr.MsgAdministratorPasswordConfirm=Confirmation du mot de passe:
MsgLicenseUpdateExpired=Setup has detected that your current license update period has expired.
You should update your license before attempting to upgrade.=

Click OK to continue, or Cancel to abort installation.=
fr.MsgLicenseUpdateExpired=L'installation a détecté que votre période de mise à jour a expiré.
Vous devriez mettre à jour votre license avant de continuer l'installation.=

Cliquez sur OK pour continuer, ou Annuler pour abandonner l'installation.=
MsgEnterSerial=Your serial number :
fr.MsgEnterSerial=Votre numéro de série :
MsgSerialCaption=Serial number
fr.MsgSerialCaption=Numéro de série
MsgSerialSubCaption1=Please enter you serial number.
fr.MsgSerialSubCaption1=Veuillez s'il vous plaît entrer votre numéro de série.
MsgSerialSubCaption2=Your serial number is printed on the software Cdrom, it looks like :

ABCDEF-GHIJK-LMNOP-QRSTU-VWXYZ-01234=
fr.MsgSerialSubCaption2=Vous pourrez trouver ce numéro de série sur le CD de votre logiciel, il est de la forme :

ABCDEF-GHIJK-LMNOP-QRSTU-VWXYZ-01234=
MsgSerialInvalid=The serial number you have entered is not valid, please check that you entered it correctly.
fr.MsgSerialInvalid=Le numéro de série que vous avez entré est invalide, vérifiez votre saisie s'il vous plaît.
LocalMachine=Local Machine
fr.LocalMachine=Administration Locale
LocalMachineDescription=Local FTP server administration
fr.LocalMachineDescription=Administration du serveur FTP local
MsgG6WebAdminWrongVersion=Your web administration plugin is not compatible with this version of Gene6 FTP Server, please update it after installation.
Current version will be moved to the backup folder and deactivated.=
fr.MsgG6WebAdminWrongVersion=La version installée de l'administration web n'est pas compatible avec cette version de Gene6 FTP Server, veuillez la mettre à jour après l'installation.
La version actuelle sera déplacée dans le dossier de sauvegarde et désactivée.=

[Languages]
; These files are stubs
; To achieve better results after recompilation, use the real language files
Name: en; MessagesFile: embedded\en.isl
Name: fr; MessagesFile: embedded\fr.isl
Name: de; MessagesFile: embedded\de.isl
Name: nl; MessagesFile: embedded\nl.isl
Name: sp; MessagesFile: embedded\sp.isl
Name: it; MessagesFile: embedded\it.isl
Name: ru; MessagesFile: embedded\ru.isl
Name: se; MessagesFile: embedded\se.isl

Ошибку найти немогу. Показывает на Click OK to stop the service, or Cancel to abort installation.=

Habetdin 12-09-2009 20:11 1217427

Bond01, скриншот ошибки можно увидеть?

Bond01 12-09-2009 20:15 1217432

Это всегда пожалуйста :)

Serega 12-09-2009 20:23 1217442

Цитата:

Цитата Berline
Вопрос может уже звучал: как добавить на страницу выбора компонентов »

Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

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

[Components]
Name: a; Description: Моя программа™; Types: full custom
Name: a\a; Description: Руководство пользователя; Types: full
Name: a\a\a; Description: Русский; Flags: exclusive
Name: a\a\b; Description: English; Flags: exclusive
Name: a\b; Description: Справка; Types: full

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: a
Source: compiler:Examples\Readme-ru.txt; DestDir: {app}; Components: a\a\a
Source: compiler:Examples\Readme-en.txt; DestDir: {app}; Components: a\a\b
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Components: a\b

[Code]
var
  btn1, btn2: TButton;

procedure btnClick(Sender: TObject);
var
  i: Integer;
begin
  // не знаю почему, но при WizardForm.SelectComponentsPage.ControlCount-1 выскакивает сообщение:
  // 'List index out of bounds.'
  for i:= 0 to WizardForm.SelectComponentsPage.ControlCount-2 do
    case TButton(Sender) of
      btn1: WizardForm.ComponentsList.Checked[i]:= True;
      btn2: WizardForm.ComponentsList.Checked[i]:= False;
    end;
end;

procedure InitializeWizard();
begin
  btn1:= TButton.Create(WizardForm);
  with btn1 do
    begin
      SetBounds(260,210,75,25);
      Caption:= 'Выбрать все';
      OnClick:= @btnClick;
      Parent:= WizardForm.SelectComponentsPage;
    end;

  btn2:= TButton.Create(WizardForm);
  with btn2 do
    begin
      SetBounds(340,210,75,25);
      Caption:= 'Снять выбор';
      OnClick:= @btnClick;
      Parent:= WizardForm.SelectComponentsPage;
    end;
end;



Цитата:

Цитата МИШАНЧИК
подскажите пожалуйста, можно ли как-то сделать в этом(Вашем) скрипте »

Это не мой, я только чего-то в нём исправлял, уже точно не помню что конкретно...

Цитата:

Цитата Bond01
Показывает на Click OK to stop the service, or Cancel to abort installation.= »

закоментируйте (; ) в скрипте (секция [CustomMessages]) те строчки, на которые ругается компилятор...

Bond01 12-09-2009 20:32 1217446

Закоментировал, следующие появились...

Serega 12-09-2009 21:07 1217474

Цитата:

Цитата Bond01
следующие появились... »

Правильно ругается, замените знак ',' на 'or'

Bond01 12-09-2009 21:26 1217492

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

Serega 12-09-2009 22:16 1217528

Когда только начинал знакомиться с Inno Setup и переупаковывал для себя некоторые игрушки, то по умолчанию ставил путь установки в {pf}\Games\... (C:\Program Files\Games\...), а фактически ставил их в D:\Games\...
Так меня постоянно мучал вопрос, какую переменную задать, чтоб Inno понимал, что ставить надо на диск D.
Самый простой способ - это прописать в DefaultDirName=D:\Games\..., но это не универсально и вдруг на другом компьютере будет только один диск.
Одним словом решения я тогда не нашёл, но недавно увидел похожий вопрос на другом форуме и вспомнил интересовавшую меня проблему.
В результате, вот скрипт, который определяет логические диски на компьютере и предлагает установить на первый логический диск не являющийся системным (если их несколько, в противном случае будет предложен системный диск).
Скрипт
Код:

; скрипт, который определяет логические диски на компьютере и предлагает установить на первый
; логический диск не являющийся системным (если их несколько, в противном случае будет предложен
; системный диск).
; Автор: Serega, http://forum.oszone.net/member.php?userid=88670

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={code:NoSD}\Games\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
function GetLogicalDrives: DWORD; external 'GetLogicalDrives@kernel32.dll stdcall';
function GetDriveType(lpRootPathName: PChar): Cardinal; external 'GetDriveTypeA@kernel32.dll stdcall';

const
  DRIVE_FIXED = 3;

function NoSD(s: string): string;
var
  x, bit, i: Integer;
  tp: Cardinal;
  sd: string;
begin
  sd:= ExpandConstant('{sd}');
  Result:= sd;
  // Вызываем функцию WinAPI
  // Функция возвращает битовую маску установленных логических дисков.
  // Бит 0 определяет наличие диска А:, бит 1 - диска B и т.д.
  x:= GetLogicalDrives;
  if x <> 0 then
  // цикл по полученным битам переменной X
  for i:= 1 to 64 do
    begin
      // Накладываем битовую маску для выделения бита с поряковым номером 0
      bit:= x and 1;
      // нашли логический диск...
      if bit = 1 then
        begin
          // определяем тип логического диска
          tp:= GetDriveType(PChar(Chr(64 + i) + ':'));
          if tp = DRIVE_FIXED then
          // если диск не является системным
          if Chr(64 + i) <> Copy(sd, 1, 1) then
            begin
              Result:= Chr(64 + i) + ':';
              Break;
            end;
        end;
      // побитовый сдвиг вправо
      x:= x shr 1;
    end;
end;


A1EXXX 12-09-2009 23:05 1217563

Serega, интересно, мне пригодится!!!!

Ты, случайно, не знаешь, в чём может быть проблема... При распаковке FreeArc, когда, например, DefaultDirName={pf}\Название компании\Название игры\ такой, а я хочу установить в D:\Games\Название игры\ и распаковка сначала начинается во временный файл $$arcpackedfile$$.tmp возле setup.exe (а если exe'шник уже в образе, выбивает ошибку приложения)!!! Может есть какой-то нюанс, который может такое вызвать??? Проверил скрипт FeeArc'а отдельно - всё ОК, а когда все свои скрипты сливаю в один, получается такая фигня! Даже не знаю от чего отталкиваться, парадокс, блин!

Serega 12-09-2009 23:36 1217582

Цитата:

Цитата A1EXXX
Может есть какой-то нюанс, который может такое вызвать??? »

Обязательно должен быть.
Цитата:

Цитата A1EXXX
а когда все свои скрипты сливаю в один, получается такая фигня! »

Попробуйте добавлять по одному скрипту, т.е. чтоб выяснить проблемный и уже потом в нём смотреть где не так...
Я бы первым делом запустил поиск во всех скриптах, на наличие слова $$arcpackedfile$$.tmp, т.к. это не стандартная фраза и скорей всего прописана в одном из них, а уже потом изучил из-за чего такое получается.

МИШАНЧИК 13-09-2009 04:04 1217661

Serega,
Цитата:

Цитата Serega
Это не мой, я только чего-то в нём исправлял »

Прошу прощения, если чем-то задел.
Но всё-таки можно ли в нём сделать текст белым цветом и отображение картинок на всех страницах инсталятора?

Serega 13-09-2009 13:05 1217799

Цитата:

Цитата МИШАНЧИК
сделать текст белым цветом »

Если в стандартном инсталляторе, т.е. не создавая новые контролы, то
Код:

  WizardForm.Font.Color:= clWhite;
  WizardForm.PageNameLabel.Font.Color:= clWhite;
  WizardForm.WelcomeLabel1.Font.Color:= clWhite;

если же создаёте контролы, то у каждого текстового есть в свойствах значение Font.Color, соответственно задаёте значение clWhite
Цитата:

Цитата МИШАНЧИК
отображение картинок на всех страницах инсталятора »

Поищите в предыдущей теме, что-то похожее уже было.

A1EXXX 13-09-2009 14:32 1217867

Новая версия скриптов для распаковки архивов FreeArc: FreeArc4InnoSetup3_3.zip

Версия 3.3 ext от Victor_Dobrov, 13-09-2009
- arc.ini ищется в c:\
- купирована ошибка индикатора прогресса при использовании внешних распаковщиков
- пофиксена потеря количества извлечённых/распакованных файлов

Версия 3.3 от Bulat Ziganshin, 13-09-2009
- ускорение распаковки на 10%
- FreeArcExtract() поддерживает опцию '-wPATH' для задания каталога для временных файлов
- при прерывании распаковки стирает временные файлы
- исправлена ошибка в unarc.dll - вылетала при распаковке с использованием временных файлов

кто уже скачал, перекачайте, т.к. Bulat Ziganshin немного исправил скрипты (скорость распакови была увеличена, но при этом были небольшие паузы в процессе распаковки)

Serega 13-09-2009 17:45 1218002

Наверное каждый при сборке инсталлятора сталкивался с тем, что не хватает стандартных констант в Inno Setup.
Допустим нужно установить какой-нибудь файл, в папку "Мои рисунки", а константы такой нет...
Ниже приведённый скрипт облегчит определение стандартных папок Windows:
Пример
Код:

; Данный скрипт позволяет получить путь к стандартным папкам Windows

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
const
  MAX_PATH = 260;
  // ниже приведён список id папок, путь которой хотим получить...
  // Виртуальный каталог, представляющий Рабочий стол. (Корень в проводнике)
  CSIDL_DESKTOP                = $0000;
  // Виртуальный каталог для Internet Explorer.
  CSIDL_INTERNET                = $0001;
  // Меню Пуск -> Программы
  CSIDL_PROGRAMS                = $0002;
  // Виртуальный каталог, содержащий иконки пунктов панели управления
  CSIDL_CONTROLS                = $0003;
  // Виртуальный каталог, содержащий установленные принтеры
  CSIDL_PRINTERS                = $0004;
  // Виртуальный каталог, представляющий папку "Мои документы"
  CSIDL_PERSONAL                = $0005;
  // До Vista ссылался на какталог "Мои документы" на жёстком диске
  // Избранное. (обычно C:\Documents and Settings\username\Favorites)
  CSIDL_FAVORITES              = $0006;
  // Пуск -> Программы -> Автозагрузка
  CSIDL_STARTUP                = $0007;
  // Недавние документы (обычно C:\Documents and Settings\username\My Recent Documents
  CSIDL_RECENT                  = $0008;
  // Папка, содержащая ярлыки меню "Отправить" (Sent to...) (обычно C:\Documents and Settings\username\SendTo)
  CSIDL_SENDTO                  = $0009;
  // Виртуальный каталог, содержащий файлы в корзине текущего пользователя
  CSIDL_BITBUCKET              = $000a;
  // Элементы меню Пуск текущего пользователя (обычно C:\Documents and Settings\username\Start Menu)
  CSIDL_STARTMENU              = $000b;
  // Рабочий стол текущего пользователя (обычно C:\Documents and Settings\username\Desktop)
  CSIDL_DESKTOPDIRECTORY        = $0010;
  // Виртуальный каталог, представляющий папку "Мой компьютер"
  CSIDL_DRIVES                  = $0011;
  // Виртуальный каталог, представляющий "Сетевое окружение"
  CSIDL_NETWORK                = $0012;
  // Папка "My Nethood Places" (обычно C:\Documents and Settings\username\NetHood)
  // В неё ссылки на избранные расшаренные ресурсы
  CSIDL_NETHOOD                = $0013;
  // Папка, содержащая установленные шрифты. (обычно C:\Windows\Fonts)
  CSIDL_FONTS                  = $0014;
  // Шаблоны документов. (Обычно Settings\username\Templates)
  CSIDL_TEMPLATES              = $0015;
  // Элементы меню Пуск для всех пользователей. (обычно C:\Documents and Settings\All Users\Start Menu)
  // Константы, начинающиеся на CSIDL_COMMON_ существуют только в NT версиях
  CSIDL_COMMON_STARTMENU        = $0016;
  // Меню Пуск -> программы для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs)
  CSIDL_COMMON_PROGRAMS        = $0017;
  // Меню Пуск -> Программы -> Автозагрузка для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs\Startup)
  CSIDL_COMMON_STARTUP          = $0018;
  // Элементы Рабочего стола для всех пользователей (обычно C:\Documents and Settings\All Users\Desktop)
  CSIDL_COMMON_DESKTOPDIRECTORY = $0019;
  // Папка, в которой рограммы должны хранить свои данные(C:\Documents and Settings\username\Application Data)
  CSIDL_APPDATA                = $001a;
  // Установленные принтеры. (обычно C:\Documents and Settings\username\PrintHood)
  CSIDL_PRINTHOOD              = $001b;
  // user's nonlocalized Startup program group. Устарело.
  CSIDL_ALTSTARTUP              = $001d;        // DBCS
  // Устарело
  CSIDL_COMMON_ALTSTARTUP      = $001e;        // DBCS
  // Ссылки "Избранное" для всех пользователей
  CSIDL_COMMON_FAVORITES        = $001f;
  // Временные Internet файлы (обычно C:\Documents and Settings\username\Local Settings\Temporary Internet Files)
  CSIDL_INTERNET_CACHE          = $0020;
  // Папка для хранения Cookies (обычно C:\Documents and Settings\username\Cookies)
  CSIDL_COOKIES                = $0021;
  // Хранит ссылки интернет истории IE
  CSIDL_HISTORY                = $0022;
  // Административные инструменты текущего пользователя (например консоль MMC). Win2000+
  CSIDL_ADMINTOOLS              = $30;
  // Папка для файлов, подготовленных к записи на CD/DVD
  // (Обычно C:\Documents and Settings\username\Local Settings\Application Data\Microsoft\CD Burning)
  CSIDL_CDBURN_AREA            = $3b;
  // Папка, содержащая инструменты администрирования
  CSIDL_COMMON_ADMINTOOLS      = $2f;
  // Папака AppData для всех пользователей. (обычно C:\Documents and Settings\All Users\Application Data)
  CSIDL_COMMON_APPDATA          = $23;
  // Папка "Общие документы" (обычно C:\Documents and Settings\All Users\Documents)
  CSIDL_COMMON_DOCUMENTS        = $2e;
  // Папка шаблонов документов для всех пользователей (Обычно C:\Documents and Settings\All Users\Templates)
  CSIDL_COMMON_TEMPLATES        = $2d;
  // Папка "Моя музыка" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Music)
  CSIDL_COMMON_MUSIC            = $35;
  // Папка "Мои рисунки" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Pictures)
  CSIDL_COMMON_PICTURES        = $36;
  // Папка "Моё видео" для всех пользователей (C:\Documents and Settings\All Users\Documents\My Videos)
  CSIDL_COMMON_VIDEO            = $37;
  // Виртуальная папка, представляет список компьютеров в вашей рабочей группе
  CSIDL_COMPUTERSNEARME        = $3d;
  // Виртуальная папка, представляет список сетевых подключений
  CSIDL_CONNECTIONS            = $31;
  // AppData для приложений, которые не переносятся на другой компьютер (обычно C:\Documents and Settings\username\Local Settings\Application Data)
  CSIDL_LOCAL_APPDATA          = $1c;
  // Виртуальный каталог, представляющий папку "Мои документы"
  CSIDL_MYDOCUMENTS            = $0c;
  // Папка "Моя музыка"
  CSIDL_MYMUSIC                = $0d;
  // Папка "Мои рисунки"
  CSIDL_MYPICTURES              = $27;
  // Папка "Моё видео"
  CSIDL_MYVIDEO                = $0e;
  // Папка пользователя (обычно C:\Documents and Settings\username)
  CSIDL_PROFILE                = $28;
  // Папка Program Files (обычно C:\Program Files)
  CSIDL_PROGRAM_FILES          = $26;
  CSIDL_PROGRAM_FILESX86        = $2a;
  // Папка Program Files\Common (обычно C:\Program Files\Common)
  CSIDL_PROGRAM_FILES_COMMON    = $2b;
  CSIDL_PROGRAM_FILES_COMMONX86 = $2c;
  // Папка для ресерсов. Vista и выше (обычно C:\Windows\Resources)
  CSIDL_RESOURCES              = $38;
  CSIDL_RESOURCES_LOCALIZED    = $39;
  // Папака System (обычно C:\Windows\System32 или C:\Windows\System)
  CSIDL_SYSTEM                  = $25;
  CSIDL_SYSTEMX86              = $29;
  // Папка Windows. Она же %windir% или %SYSTEMROOT% (обычно C:\Windows)
  CSIDL_WINDOWS                = $24;

function SHGetSpecialFolderPath(hwndOwner: HWND; lpszPath: PChar; nFolder: Integer; fCreate: BOOL): BOOL;
  external 'SHGetSpecialFolderPathA@shell32.dll stdcall';

function GetSpecialPath(CSIDL: Word): string;
var
  s:  string;
begin
  SetLength(s, MAX_PATH);
  if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, True) then s := '';
  Result:= PChar(s);
end;

procedure InitializeWizard;
begin
  // определим расположение папки "Мои рисунки"
  MsgBox(GetSpecialPath(CSIDL_MYPICTURES), mbInformation, MB_OK);
end;


msatmb 13-09-2009 21:10 1218155

Цитата:

Цитата BlackSelf
A1EXXX, код на работоспособность не проверялся, но должно быть примерно так: »

Делаю как ты написал
читать дальше »

procedure CurStepChanged(CurStep: TSetupStep);
var
res: Integer;
begin
if CurStep = ssInstall then begin
StartInstall:= GetTickCount {время начала извлечения файлов}
WndHookID:= SetWindowsHookEx(WH_CALLWNDPROC, WrapCWPSTRUCTProc(@OnWndHook, 3), 0, GetCurrentThreadID); {установка SendMessage хука}
TimerID:= SetTimer(0, 0, 500 {полсекунды}, WrapTimerProc(@MyTimerProc, 4)); {установка таймера}
if not {#isFalse(SetupSetting("Uninstallable"))} then Status.count:= -1; // не считать файл unins000.exe
end;
if CurStep = ssPostInstall then
begin
StartInstall:= GetTickCount {время начала распаковки}
UnPackError:= UnPack('{#Archives}')
if UnPackError <> 0 then begin // Error occured, uninstall it then
if not {#isFalse(SetupSetting("Uninstallable"))} then // деинсталляция разрешёна
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n); // откат установки из-за ошибки unarc.dll
WizardForm.caption:= SetupMessage(msgErrorTitle) +' - '+ cm('ArcBreak')
SetTaskBarTitle(SetupMessage(msgErrorTitle))
end else
SetTaskBarTitle(SetupMessage(msgSetupAppTitle));
ProcessLabel.show
Exec(ExpandConstant('{app}\run.bat'), '', '', SW_SHOW, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\run.bat'));
end;
end;

по завершению работы инсталлятора получаю ошибку
читать дальше »

2009-09-13 11:54:29.562 CurStepChanged raised an exception.
2009-09-13 11:54:29.562 Exception message:
2009-09-13 11:54:29.562 Message box (OK):
Runtime Error (at 157:2795):

Access violation at address 0049F883 in module 'setup.tmp'. Read of address 00000000.
2009-09-13 12:05:20.296 User chose OK.
2009-09-13 12:05:20.296 Need to restart Windows? No
2009-09-13 12:05:20.375 Exception message:
2009-09-13 12:05:20.375 Message box (OK):
Out Of Range.
2009-09-13 12:05:21.265 User chose OK.
2009-09-13 12:05:22.296 Deinitializing Setup.
2009-09-13 12:05:22.328 Log closed.

В чем может быть проблема?

Цитата:

Цитата A1EXXX
- FreeArcExtract() поддерживает опцию '-wPATH' для задания каталога для временных файлов »

И как это прописать? :)

Berline 14-09-2009 09:41 1218406

Цитата:

Цитата Serega
Вопрос может уже звучал: как добавить на страницу выбора компонентов »
Пример »

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

DemonAk 14-09-2009 17:59 1218871

[Files]
#ifdef precomp
Source: {#precomp}; DestDir: {sys}; Flags: deleteafterinstall
Source: {#GetEnv("ProgramFiles")}\FreeArc\bin\arc.ini; DestDir: C:\; Flags: deleteafterinstall
#endif

Как сделать что бы как только запустил исталятор, файлы которые указаны в files копировались в назначенный каталог.
Эта процедура копирует их в темп, а надо sys и C:\:

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('precomp04.exe');
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('arc.ini');
end;

pa60t9ra 14-09-2009 18:21 1218880

Я по поводу выбора компонентов.
Вот тот самый код:

[code]

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

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

[Components]
Name: a; Description: Моя программа™; Types: full custom
Name: a\a; Description: Руководство пользователя; Types: full
Name: a\a\a; Description: Русский; Flags: exclusive
Name: a\a\b; Description: English; Flags: exclusive
Name: a\b; Description: Справка; Types: full

[Files]
Source: Examples\MyProg.exe; DestDir: {app}; Components: a
Source: Examples\Readme-ru.txt; DestDir: {app}; Components: a\a\a
Source: Examples\Readme-en.txt; DestDir: {app}; Components: a\a\b
Source: Examples\MyProg.chm; DestDir: {app}; Components: a\b

Код:

var
  btn1, btn2: TButton;

procedure btnClick(Sender: TObject);
var
  i: Integer;
begin
  // не знаю почему, но при WizardForm.SelectComponentsPage.ControlCount-1 выскакивает сообщение:
  // 'List index out of bounds.'
  for i:= 0 to WizardForm.SelectComponentsPage.ControlCount-2 do
    case TButton(Sender) of
      btn1: WizardForm.ComponentsList.Checked[i]:= True;
      btn2: WizardForm.ComponentsList.Checked[i]:= False;
    end;
end;

procedure InitializeWizard();
begin
  btn1:= TButton.Create(WizardForm);
  with btn1 do
    begin
      SetBounds(260,210,75,25);
      Caption:= 'Выбрать все';
      OnClick:= @btnClick;
      Parent:= WizardForm.SelectComponentsPage;
    end;

  btn2:= TButton.Create(WizardForm);
  with btn2 do
    begin
      SetBounds(340,210,75,25);
      Caption:= 'Снять выбор';
      OnClick:= @btnClick;
      Parent:= WizardForm.SelectComponentsPage;
    end;
end;

Вопрос в следущем-как сделать, чтобы выделился и анлийский и руссикй язык? То есть-если я хочу, чтобы было оба языка, а не только 1.

A1EXXX 14-09-2009 18:34 1218887

Решил поменять шрифт инсталлятора:

procedure InitializeWizard();
begin
WizardForm.Font.Name:='Tahoma'
end;


но мне нужно сделать так, чтобы шрифт менялся на всех страницах, кроме страниц инфы перед установкой и лицензионного соглашения!

A1EXXX 14-09-2009 22:26 1219069

:( :( :help: :help:

Serega 15-09-2009 01:07 1219167

Цитата:

Цитата Berline
за одним исключением - учитывали вы это ил инет - идеально работает если компоненты не имеют вид дерева »

меняйте значение в этой строке:
Код:

  for i:= 0 to WizardForm.SelectComponentsPage.ControlCount-2 do
т.е. измените 2 на 1, если не поможет, то убирите эту цифру... одним словом поиграйте с этим значением.

Цитата:

Цитата DemonAk
файлы которые указаны в files копировались в назначенный каталог. »

самое простое, это измените так:
Код:

function InitializeSetup(): Boolean;
begin
  ExtractTemporaryFile('precomp04.exe');
  FileCopy(ExpandConstant('{tmp}\precomp04.exe'), ExpandConstant('{sd}\precomp04.exe'), False);
  ExtractTemporaryFile('packjpg_dll.dll');
  FileCopy(ExpandConstant('{tmp}\packjpg_dll.dll'), ExpandConstant('{sd}\packjpg_dll.dll'), False);
  ExtractTemporaryFile('arc.ini');
  FileCopy(ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{sd}\arc.ini'), False);
end;

и добавьте:
Код:

procedure DeInitializeSetup();
begin
  DelayDeleteFile(ExpandConstant('{sd}\precomp04.exe'), 4);
  DelayDeleteFile(ExpandConstant('{sd}\packjpg_dll.dll'), 4);
  DelayDeleteFile(ExpandConstant('{sd}\arc.ini'), 4);
end;

Цитата:

Цитата pa60t9ra
чтобы выделился и анлийский и руссикй язык? »

В секции [Components] убирите флаги: Flags: exclusive

Цитата:

Цитата A1EXXX
Решил поменять шрифт инсталлятора: »

посмотрите в Справке про секцию [LangOptions]
Цитата:

Цитата A1EXXX
кроме страниц инфы перед установкой и лицензионного соглашения! »

попробуйте так:
Код:

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpInfoBefore then WizardForm.Font.Name:= 'Verdana';
  if CurPageID = wpLicense then WizardForm.Font.Name:= 'Verdana';
end;


A1EXXX 15-09-2009 08:25 1219272

Цитата:

Цитата Serega
попробуйте так:
Код:
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpInfoBefore then WizardForm.Font.Name:= 'Verdana';
if CurPageID = wpLicense then WizardForm.Font.Name:= 'Verdana';
end; »

Почти то, но мне надо поставить не другой шрифт, о ставить стандартный (т.к. почему-то шрифт меняется и в rtf документе)...
Может есть какое-то обозначение для стандартного шрифта, чтоб поставить его вместо Vеrdana???

Или задать процедуру игнорирования смены шрифта на указанных страницах???

Berline 15-09-2009 14:31 1219490

В общем, проблемы пока с кнопками выделить все отменить все...
Смысл следующий - галочки ставятся - замечательно - но! размер не перессчитывается(если руками галочки проставить - все ок), и если галочки проставлены кнопкой - компоненты не устанавливаются - если руками - все ок!

pa60t9ra 15-09-2009 15:10 1219511

И вдовесок
http://pic.ipicture.ru/uploads/090915/pXIVjEvVUu.jpg
Не совсем корректно отображается...

BlackSelf 15-09-2009 19:58 1219706

Снова здравствуйте. Возможно сделать обводку текста? То есть создается лэйбл с белым шрифтом и сделать вокруг этого лэйбла обводку, например, в 1 пиксель черного цвета.

msatmb 15-09-2009 21:22 1219778

BlackSelf,
Попробуй так
Код:

procedure InitializeWizard();
var
Panel1: TPanel;
begin
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Panel1.Parent := WizardForm;
Panel1.Left := ScaleX(1);
Panel1.Top := ScaleY(315);
Panel1.Width := ScaleX(165);
Panel1.Height := ScaleY(46);
Panel1.TabOrder := 0;
Panel1.Color := clWhite;
Panel1.BevelInner := bvLowered;
Panel1.BevelOuter := bvRaised;
Panel1.BorderStyle := bsSingle;
end;
end;

Или ты имел ввиду по контору букв? Если про буквы то незнаю, я только учусь :)

И посмотри пожалуйста мое сообщение

BlackSelf 15-09-2009 21:24 1219781

msatmb, по контуру букв (изначально неправильно выразился).

Serega 15-09-2009 23:35 1219853

A1EXXX, попробуйте:
Код:

procedure CurPageChanged(CurPageID: Integer);
begin
  WizardForm.Font.Name:= 'Tahoma';
  if CurPageID = wpInfoBefore then WizardForm.Font.Name:= 'Microsoft Sans Serif';
  if CurPageID = wpLicense then WizardForm.Font.Name:= 'Microsoft Sans Serif';
end;

Цитата:

Цитата Berline
Смысл следующий - галочки ставятся - замечательно - но! размер не перессчитывается »

пока не знаю, намдо подумать.
Цитата:

Цитата Berline
и если галочки проставлены кнопкой - компоненты не устанавливаются »

у меня всё нормально устанавливается...

Цитата:

Цитата pa60t9ra
Не совсем корректно отображается... »

Пример скрипта, это всего лишь - пример того, что можно сделать.
Вам никто не мешает двигать кнопки.

Цитата:

Цитата BlackSelf
Возможно сделать обводку текста? То есть создается лэйбл с белым шрифтом и сделать вокруг этого лэйбла обводку, например, в 1 пиксель черного цвета. »

Теоретически возможно, с помощью API'шных функций, но ниразу не делал...

A1EXXX 16-09-2009 00:09 1219878

Цитата:

Цитата Serega
A1EXXX, попробуйте:
Код:
procedure CurPageChanged(CurPageID: Integer);
begin
WizardForm.Font.Name:= 'Tahoma';
if CurPageID = wpInfoBefore then WizardForm.Font.Name:= 'Microsoft Sans Serif';
if CurPageID = wpLicense then WizardForm.Font.Name:= 'Microsoft Sans Serif';
end; »

Всё равно не то.... блин... я уже не знаю... а можно с помощью подобного кода, сменить шрифт не на всей странице, а только в документе, который будет отображаться???


Serega, спасибо за помощь!!! Придумал способ решения своей проблемы!!! (твой код меня вдохновил :) ) Сделаю так:

Цитата:

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpWelcome then WizardForm.Font.Name:= 'Tahoma';
if CurPageID = wpSelectDir then WizardForm.Font.Name:= 'Tahoma';
end;
для всех страниц, кроме wpLicense и wpInfoBefore, тогда всё будет как я хотел!!!

Denkxx 16-09-2009 14:09 1220200

Привет. Такая задача. Нужно что бы когда создавался ярлык к нему дописывался параметр запуска. К примеру: в ярлыке в строке объект "C:\Crystal.exe" нужно дописывать movie.avi
тогда при запуске сразу начинается проигрывание файла movie.avi, находящегося в папке с программой.
Кто подскажет как дописывать параметр при создании ярлыка? Поиск не помог (

A1EXXX 16-09-2009 15:37 1220263

Вложений: 1
Цитата:

Цитата Denkxx
Привет. Такая задача. Нужно что бы когда создавался ярлык к нему дописывался параметр запуска. К примеру: в ярлыке в строке объект "C:\Crystal.exe" нужно дописывать movie.avi
тогда при запуске сразу начинается проигрывание файла movie.avi, находящегося в папке с программой.
Кто подскажет как дописывать параметр при создании ярлыка? Поиск не помог ( »

Можешь написать бантик с именами файлов, которые необходимо открыть, и затем создавать ярлык для него...

Denkxx 16-09-2009 15:42 1220269

A1EXXX, спасибо. Нашел решение.

Цитата:

[Icons] Name: "{group}\Видео"; Filename: "{app}\Crystal.exe"; Parameters: "movie.avi"; WorkingDir: "{app}"; Tasks: groupicon

Berline 17-09-2009 14:36 1221042

Serega, не совсем ясно я объяснил... ранее, без добавления ваших измнений. т.е. кнопок - я благополучно выделял галочки руками, у меня менялся сразу необходимый размер на диске, и при повторном запуске этого инсталлятора - он мне отображал уже установленные галочки тех компонентов, что я выбрал.
Такое не изменилось после добавления кнопок, но они не корректны, а именно, повторюсь: при выделениее всех компонент, размер не перессчитывается. хотя действительно, компоненты установились, и при повторной установке поверх - инсталлятор не отображает компоненты, которые я уже установил...

_Monster_ 18-09-2009 20:07 1222037

Здравствуйте! 3 вопроса
1) как сделать мини прогресс бар http://pic.ipicture.ru/uploads/090918/aE767v7uzj.png
2) как изменить цвет самого инстолятора (полностью черный например)
3) когда я захожу пуск-> прграммы у меня присутствует только главный файл запуска http://pic.ipicture.ru/uploads/090918/3fUug68pGr.png
а как сделать чтобы можно отсюда же и удалить программу
Жду ваших ответов!спасибо

A1EXXX 19-09-2009 13:08 1222468

Кто знает, как сделать отступ между "Созданием ярлыков" и "Языком игры" ???

_Monster_ 19-09-2009 17:07 1222612

A1EXXX кстати нашел твой пост где цвет инсталятора можно поменять спасибо.

_Monster_ 19-09-2009 17:43 1222632

кто подскажет? как можно изменить эту белую папку на мою серую с черным фоном :)

A1EXXX 19-09-2009 18:58 1222683

_Monster_, два варианта:

1) прикрутить внешнюю bmp картинку
читать дальше »

[Files]
Source: C:\papka.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
procedure InitializeWizard();
begin
ExtractTemporaryFile('papka.bmp');
WizardForm.SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
WizardForm.SelectDirBitmapImage.AutoSize:=true;
WizardForm.SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
WizardForm.SelectGroupBitmapImage.AutoSize:=true;
end;
например, вот эту...

2) Либо вот этим кодом:
читать дальше »

[code]
function GetModuleHandle(lpModuleName: LongInt): LongInt;
external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt;
external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
external 'DrawIconEx@user32.dll stdcall';

procedure InitializeWizard();
var
Rect: TRect;
HIcon: LongInt;
begin
hIcon := ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 3);
with WizardForm.SelectDirBitmapImage do
begin
with Bitmap do
begin
Width := ScaleX(32);
Height := ScaleY(32);
Rect.Right := ScaleX(32);
Rect.Bottom := ScaleY(32);
Rect.Left := ScaleX(0);
Rect.Top := ScaleY(0);
Canvas.Brush.Color := clBlack;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
end;
end;
end;

Serega 19-09-2009 20:27 1222740

Цитата:

Цитата _Monster_
как сделать мини прогресс бар »

Рисуете свою форму и в момент инсталляции скрываете форму инсталлятора и активируете свою, после инсталляции прячете свою форму, а форму мастера делаете видимой.
Цитата:

Цитата _Monster_
а как сделать чтобы можно отсюда же и удалить программу »

Добавьте в секцию [Icons]:
Код:

Name: {group}\Удалить программу; Filename: {uninstallexe}

_Monster_ 19-09-2009 20:58 1222766

ну вот опять вопрос :( не могу соеденить черный фон с серой папкой которую дал A1EXXX (ругается на procedure InitializeWizard(); т.к их в секции 2-ое, по отдельности каждый код работает)
Цитата:

[code]
[Files]
Source: C:\papka.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
procedure InitializeWizard();
begin
ExtractTemporaryFile('papka.bmp');
WizardForm.SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
WizardForm.SelectDirBitmapImage.AutoSize:=true;
WizardForm.SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
WizardForm.SelectGroupBitmapImage.AutoSize:=true;
end;

const
Color = clblack;

procedure InitializeWizard();
begin
WizardForm.Font.Color:=clWhite;
WizardForm.Color:=Color;
WizardForm.WelcomePage.Color:=Color;
WizardForm.InnerPage.Color:=Color;
WizardForm.FinishedPage.Color:=Color;
WizardForm.LicensePage.Color:=Color;
WizardForm.PasswordPage.Color:=Color;
WizardForm.InfoBeforePage.Color:=Color;
WizardForm.UserInfoPage.Color:=Color;
WizardForm.SelectDirPage.Color:=Color;
WizardForm.SelectComponentsPage.Color:=Color;
WizardForm.SelectProgramGroupPage.Color:=Color;
WizardForm.SelectTasksPage.Color:=Color;
WizardForm.ReadyPage.Color:=Color;
WizardForm.PreparingPage.Color:=Color;
WizardForm.InstallingPage.Color:=Color;
WizardForm.InfoAfterPage.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.DiskSpaceLabel.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.GroupEdit.Color:=Color;
WizardForm.PasswordLabel.Color:=Color;
WizardForm.PasswordEdit.Color:=Color;
WizardForm.PasswordEditLabel.Color:=Color;
WizardForm.ReadyMemo.Color:=Color;
WizardForm.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
WizardForm.InfoBeforeClickLabel.Color:=Color;
WizardForm.MainPanel.Color:=Color;
WizardForm.PageNameLabel.Color:=Color;
WizardForm.PageDescriptionLabel.Color:=Color;
WizardForm.ReadyLabel.Color:=Color;
WizardForm.FinishedLabel.Color:=Color;
WizardForm.YesRadio.Color:=Color;
WizardForm.NoRadio.Color:=Color;
WizardForm.WelcomeLabel2.Color:=Color;
WizardForm.LicenseLabel1.Color:=Color;
WizardForm.InfoAfterClickLabel.Color:=Color;
WizardForm.ComponentsList.Color:=Color;
WizardForm.ComponentsDiskSpaceLabel.Color:=Color;
WizardForm.BeveledLabel.Color:=Color;
WizardForm.StatusLabel.Color:=Color;
WizardForm.FilenameLabel.Color:=Color;
WizardForm.SelectDirLabel.Color:=Color;
WizardForm.SelectStartMenuFolderLabel.Color:=Color;
WizardForm.SelectComponentsLabel.Color:=Color;
WizardForm.SelectTasksLabel.Color:=Color;
WizardForm.LicenseAcceptedRadio.Color:=Color;
WizardForm.LicenseNotAcceptedRadio.Color:=Color;
WizardForm.UserInfoNameLabel.Color:=Color;
WizardForm.UserInfoNameEdit.Color:=Color;
WizardForm.UserInfoOrgLabel.Color:=Color;
WizardForm.UserInfoOrgEdit.Color:=Color;
WizardForm.PreparingLabel.Color:=Color;
WizardForm.FinishedHeadingLabel.Color:=Color;
WizardForm.UserInfoSerialLabel.Color:=Color;
WizardForm.UserInfoSerialEdit.Color:=Color;
WizardForm.TasksList.Color:=Color;
WizardForm.RunList.Color:=Color;
WizardForm.SelectDirBrowseLabel.Color:=Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;
end;

A1EXXX 19-09-2009 21:33 1222785



Новый FreeArc v0.52...


_Monster_, пробуй...
читать дальше »

[Files]
Source: C:\papka.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
const
Color = clblack;

procedure InitializeWizard();
begin
ExtractTemporaryFile('papka.bmp');
WizardForm.SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
WizardForm.SelectDirBitmapImage.AutoSize:=true;
WizardForm.SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
WizardForm.SelectGroupBitmapImage.AutoSize:=true;
WizardForm.Font.Color:=clWhite;
WizardForm.Color:=Color;
WizardForm.WelcomePage.Color:=Color;
WizardForm.InnerPage.Color:=Color;
WizardForm.FinishedPage.Color:=Color;
WizardForm.LicensePage.Color:=Color;
WizardForm.PasswordPage.Color:=Color;
WizardForm.InfoBeforePage.Color:=Color;
WizardForm.UserInfoPage.Color:=Color;
WizardForm.SelectDirPage.Color:=Color;
WizardForm.SelectComponentsPage.Color:=Color;
WizardForm.SelectProgramGroupPage.Color:=Color;
WizardForm.SelectTasksPage.Color:=Color;
WizardForm.ReadyPage.Color:=Color;
WizardForm.PreparingPage.Color:=Color;
WizardForm.InstallingPage.Color:=Color;
WizardForm.InfoAfterPage.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.DiskSpaceLabel.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.GroupEdit.Color:=Color;
WizardForm.PasswordLabel.Color:=Color;
WizardForm.PasswordEdit.Color:=Color;
WizardForm.PasswordEditLabel.Color:=Color;
WizardForm.ReadyMemo.Color:=Color;
WizardForm.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
WizardForm.InfoBeforeClickLabel.Color:=Color;
WizardForm.MainPanel.Color:=Color;
WizardForm.PageNameLabel.Color:=Color;
WizardForm.PageDescriptionLabel.Color:=Color;
WizardForm.ReadyLabel.Color:=Color;
WizardForm.FinishedLabel.Color:=Color;
WizardForm.YesRadio.Color:=Color;
WizardForm.NoRadio.Color:=Color;
WizardForm.WelcomeLabel2.Color:=Color;
WizardForm.LicenseLabel1.Color:=Color;
WizardForm.InfoAfterClickLabel.Color:=Color;
WizardForm.ComponentsList.Color:=Color;
WizardForm.ComponentsDiskSpaceLabel.Color:=Color;
WizardForm.BeveledLabel.Color:=Color;
WizardForm.StatusLabel.Color:=Color;
WizardForm.FilenameLabel.Color:=Color;
WizardForm.SelectDirLabel.Color:=Color;
WizardForm.SelectStartMenuFolderLabel.Color:=Color;
WizardForm.SelectComponentsLabel.Color:=Color;
WizardForm.SelectTasksLabel.Color:=Color;
WizardForm.LicenseAcceptedRadio.Color:=Color;
WizardForm.LicenseNotAcceptedRadio.Color:=Color;
WizardForm.UserInfoNameLabel.Color:=Color;
WizardForm.UserInfoNameEdit.Color:=Color;
WizardForm.UserInfoOrgLabel.Color:=Color;
WizardForm.UserInfoOrgEdit.Color:=Color;
WizardForm.PreparingLabel.Color:=Color;
WizardForm.FinishedHeadingLabel.Color:=Color;
WizardForm.UserInfoSerialLabel.Color:=Color;
WizardForm.UserInfoSerialEdit.Color:=Color;
WizardForm.TasksList.Color:=Color;
WizardForm.RunList.Color:=Color;
WizardForm.SelectDirBrowseLabel.Color:=Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;
end;

_Monster_ 19-09-2009 22:12 1222803

спасибо! помогло

Aurochs 20-09-2009 02:14 1222966

Вложений: 2
Помогите разобраться.

жму 15 гигов в 11.5 кусками по 650 метров и на выходе сетап не запускается - просто окно внизу, не разворачивается.
(см скрины в приложении, на втором скрине 2 процесса - DOW_Setup.exe и DOW_Setup.tmp, на первом - внизу окошко предпросмотра Win 7 и все, не разворачивается)

делаю тот же скрипт на тестовых файлах (50 метров файлов) - все работает. чтото с размером связанное

Цитата:

diskspanning=true
compression=lzma/ultra64
; compression=none
;compression=lzma
ShowUndisplayableLanguages=true
compressionthreads=auto
solidcompression=true
slicesperdisk=1
diskslicesize=1550000000
DisableProgramGroupPage=false
PrivilegesRequired=none
AllowRootDirectory=false
В чем беда? запарился 15 гигов жать уже раз 5.

ps - сейчас без сжатия и с размером 1.4 гига сделал - та же проблема

Aurochs 20-09-2009 12:03 1223084

Решил проблему но как не понял. Убрал solid compression, выставил 3 1.4-гиговых куска на диск (по-правильному а был 1 кусок на диск. И убрал sorce directory=.\ Если честно не знаю что это такое - было у меня в сэмплом скрипте на котором я все остальные писал.

A1EXXX 20-09-2009 12:09 1223090

Aurochs, дело не в степени сжатия и не в том, по сколько у тебя сетапы будут! Всему виной секция [Files]: все файлы, которые ты добавлял отдельно, перенеси на начало секции, а папку с игрой в самый низ! Например,

[Files]
Source: C:\1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\1.mp3; DestDir: {tmp}; Flags: dontcopy
Source: C:\Program Files\Inno Setup 5\InnoCallback.dll; Flags: dontcopy noencryption solidbreak;
Source: C:\2.bmp; DestDir: {tmp}; Flags: dontcopy

Source: "D:\Games\Call Of Duty 4\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

A1EXXX 20-09-2009 12:32 1223119

Aurochs, попробуй вернуть всё, что убрал, и сделать как у меня... просто файлы из [Files] распаковываются один за другим, и если папка с игрой вверху где-то, то инталлятор пытается распаковать файлы игры, и только потом всё отсальное...

Oleg48 20-09-2009 14:09 1223214

Подскажите пожалуйста, а можно ли слепить на IS инсталлятор с полностью тихой установкой, на NSIS это не проблема.

S.E.K.T.O.R. 20-09-2009 23:28 1223592

Народ, если кто знает подскажите!!!

Как отключить сообщение "Недостаточно места на диске"

S.E.K.T.O.R. 21-09-2009 00:08 1223625

Цитата:

Цитата Oleg48
Подскажите пожалуйста, а можно ли слепить на IS инсталлятор с полностью тихой установкой, на NSIS это не проблема. »

Можно
Держи пример

[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableReadyPage=yes
DisableFinishedPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Files]
Source: "C:\My Program\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[code]
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;

Oleg48 21-09-2009 01:21 1223655

S.E.K.T.O.R. Спасибо, попробую :)

Serega 21-09-2009 19:23 1224236

Цитата:

Цитата Oleg48
а можно ли слепить на IS инсталлятор с полностью тихой установкой »

Все инсталляторы Inno Setup по умолчанию поддерживают установку в тихом режиме.
Для запуска инсталлятора в тихом режиме, запустите его с ключом /verysilent. Более подробно, можете прочитать в Справке по Inno Setup - "Параметры командной строки инсталлятора".

Цитата:

Цитата S.E.K.T.O.R.
Как отключить сообщение "Недостаточно места на диске" »

Мне кажется - никак.

NameVizavi 21-09-2009 21:06 1224307

Есть пару вопросов , по поводу создания инстала, не с папки, а с архифа Freearc...
Знаю, что можно, но вот принцип для меня потемки (нашол в поиске, по теме пару ссылок на скрипты, для разпаковки фриарк архивов, но они по несколько страниц, и мне их не осилить :( )
А вот что мне интересно,
1-е кончено же каким образом (каким скриптом) извлеч из архива все данные во временную, папку, а уже с нее делать инсталяцию (возможно какимто другим образом, если так, пожалуйста обьясните)
2-е как создать ярлыки... когда компилируеш установщик, с папки все понтно... просто выбрал с какого файла ярлык, делать и куда помещать.
P/s
Кто знает, помогите разобратся в этом, пожалуйста, оч интересно, но я в этом покаместь совсем чайник.
PP/s
если будете кидать скрипты, пожалуйста кидайте по проще, я только учусь.

_Monster_ 22-09-2009 20:00 1224982

Смотрите, прилепил я допусти в левый нижний угол внешнюю картинку

код я знаю. А что нужно добавить чтобы по нажатию на эту картину перенапрвляло на какой-нибудь сайт :)

A1EXXX 22-09-2009 21:25 1225040

_Monster_, попробуй этот код...
читать дальше »

[Files]
Source: C:\logo.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
var
LogoImage:TBitmapImage;
LogoLabel: TLabel;
LogoPanel: TPanel;

procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://сайт.ру', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('logo.bmp');
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(5);
Top := ScaleY(320);
Width := ScaleX(165);
Height := ScaleY(35);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent := LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoOnClick;
end;
end;

Serega 22-09-2009 21:34 1225043

Цитата:

Цитата _Monster_
что нужно добавить чтобы по нажатию на эту картину перенапрвляло на какой-нибудь сайт »

Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
procedure imgClick(Sender: TObject);
var
  res: Integer;
begin
  ShellExec('open', 'http://forum.oszone.net', '', '', SW_SHOWNORMAL, ewNoWait, res);
end;

procedure initializeWizard();
begin
  // рисунок в левом нижнем углу
  with TBitmapImage.Create(WizardForm) do
    begin
      Bitmap:= WizardForm.WizardSmallBitmapImage.Bitmap;
      SetBounds(0, 315, 200, 48);
      Parent:= WizardForm;
      Stretch:= True;
    end;
  // создаём Label, на который вешаем ссылку
  with TLabel.Create(WizardForm) do
    begin
      AutoSize:= False;
      SetBounds(0, 315, 200, 48);
      OnClick:= @imgClick;
      Cursor:= crHand;
      Transparent:= True;
      Parent:= WizardForm;
    end;
end;



Упс... не успел, извиняюсь за повтор.

A1EXXX 22-09-2009 23:18 1225108

Serega, случайно не знаешь, как сделать такие переходы:

Serega 23-09-2009 00:04 1225136

Цитата:

Цитата A1EXXX
как сделать такие переходы »

Как-то так:
Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
var
  lbl1, lbl2, lbl3, lbl4, lbl5: TLabel;

procedure initializeWizard();
begin
  WizardForm.PageDescriptionLabel.Hide;
  // создаём Label'ы, на который вешаем ссылку
  lbl1:= TLabel.Create(WizardForm);
  with lbl1 do
    begin
      AutoSize:= False;
      SetBounds(20, 40, 50, 13);
      Caption:= '|';
      Transparent:= True;
      Parent:= WizardForm.MainPanel;
    end;
  lbl2:= TLabel.Create(WizardForm);
  with lbl2 do
    begin
      AutoSize:= False;
      SetBounds(50, 40, 50, 13);
      Caption:= 'lbl2';
      Transparent:= True;
      Parent:= WizardForm.MainPanel;
    end;
  lbl3:= TLabel.Create(WizardForm);
  with lbl3 do
    begin
      AutoSize:= False;
      SetBounds(100, 40, 50, 13);
      Caption:= '|';
      Transparent:= True;
      Parent:= WizardForm.MainPanel;
    end;
  lbl4:= TLabel.Create(WizardForm);
  with lbl4 do
    begin
      AutoSize:= False;
      SetBounds(130, 40, 50, 13);
      Caption:= 'lbl4';
      Transparent:= True;
      Parent:= WizardForm.MainPanel;
    end;
  lbl5:= TLabel.Create(WizardForm);
  with lbl5 do
    begin
      AutoSize:= False;
      SetBounds(180, 40, 50, 13);
      Caption:= '|';
      Transparent:= True;
      Parent:= WizardForm.MainPanel;
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectDir then
    begin
      lbl1.Font.Color:= clBlack;
      lbl1.Font.Style:= [fsBold];
      lbl2.Font.Color:= clBlack;
      lbl2.Font.Style:= [fsBold];
      lbl3.Font.Color:= clBlack;
      lbl3.Font.Style:= [fsBold];
      lbl4.Font.Color:= clGray;
      lbl4.Font.Style:= [];
      lbl5.Font.Color:= clGray;
      lbl5.Font.Style:= [];
    end;
  if CurPageID = wpReady then
    begin
      lbl1.Font.Color:= clGray;
      lbl1.Font.Style:= [];
      lbl2.Font.Color:= clGray;
      lbl2.Font.Style:= [];
      lbl3.Font.Color:= clBlack;
      lbl3.Font.Style:= [fsBold];
      lbl4.Font.Color:= clBlack;
      lbl4.Font.Style:= [fsBold];
      lbl5.Font.Color:= clBlack;
      lbl5.Font.Style:= [fsBold];
    end;
end;


A1EXXX 23-09-2009 01:21 1225175

Serega, спасибо! :)

A1EXXX 23-09-2009 17:49 1225770

ISPack v5.3.5 & ISPack v5.3.5 Unicode

A1EXXX 24-09-2009 14:56 1226458

Русификатор для Inno Setup 5.3.5
Содержит версии: cтандарт, ISPP (для 2х версий один файл), стандарт unicode, ISPP unicode (для 2х версий один файл, лежит в папке unicode).

_Monster_ 24-09-2009 19:51 1226696

Господа, как читал на другом форуме, что для более лучшего сжатия можно использовать программу FreeArc. Раскажите пожалуйста о том как ей воспльзоваться.

EN130 24-09-2009 22:52 1226815

Цитата:

Цитата Serega
Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
Последняя версия: 0.1.3 [11.09.2009] - Скачать; »

А наоборот как?

Habetdin 24-09-2009 22:57 1226820

_Monster_, поиск использовать надо ;)
Цитата:

Цитата ALTAIR OC
Cкрипт для распаковки arc архивов


Serega 24-09-2009 23:27 1226836

Цитата:

Цитата EN130
А наоборот как? »

Если хотите наоборот, то используйте ISTool. Ссылка есть в шапке темы.

NameVizavi 25-09-2009 16:27 1227322

народ, обьясниет принципе связки Freearc+Precomp...
Ведь они сжимают по сходным алгоритмам или всетаки нет?
и ещо как в консоли, для прекомпа, задать не один файл, а директиву (папку) в целом, или все файлы из определенной папки?

A1EXXX 25-09-2009 17:02 1227338

Цитата:

Цитата NameVizavi
задать не один файл, а директиву (папку) в целом, или все файлы из определенной папки? »

Я создаю бантик со списком нужных мне файлов, выглядит примерно так:

precomp -slow 1.xxx
precomp -slow 2.xxx
precomp -slow 3.xxx

NameVizavi 25-09-2009 19:05 1227406

A1EXXX,
тоесть сначало паковать фриарком, а потом прикомпом О_о
по поводу батника, я и сам додумался...
вот только при перепаковку игр, все файлы будеш прописывать, покаместь пальцы до костей не протреш :)

A1EXXX 25-09-2009 19:42 1227436

NameVizavi, я сначала прекомпом, а потом фриарком. Да и обычно файлов для обработки прекомпом не так уж и много (в среднем до 10 больших файлов...)
Есть вот такие коды для рекомпрессии:
читать дальше »

Для примера приведенного ниже, необходимо названия "прекомпрессированных" файлов привести к виду "имя_файла.расширение.pcf"

[Files]
Source: "precomp\*"; DestDir: "{tmp}"; Flags: ignoreversion overwritereadonly
Source: "Data\*"; DestDir: "{app}"; Flags: overwritereadonly recursesubdirs ignoreversion createallsubdirs sortfilesbyextension; AfterInstall: RecompressPCF

[code]
procedure RecompressPCF;
var
Tmp, Text,
InputFile, OutputFile: string;
n, ResultCode: Integer;
begin
if ExtractFileExt(CurrentFileName)='.pcf' then
begin
InputFile:=ExpandConstant(CurrentFileName);
n:=Length(InputFile);
while InputFile[n]<>'.' do
n:=n-1;
OutputFile:=Copy(InputFile, 1, n-1);
Text:=WizardForm.StatusLabel.Caption;
WizardForm.StatusLabel.Caption:='Рекомпрессия извлеченного файла...';
WizardForm.FileNameLabel.Caption:=OutputFile;
Tmp:=ExpandConstant('{tmp}\');
Exec(Tmp+'precomp.exe', '-d -o"'+OutputFile+'" "'+InputFile+'"', Tmp, SW_HIDE, ewWaitUntilTerminated, ResultCode);
DeleteFile(InputFile);
WizardForm.StatusLabel.Caption:=Text;
end;



2-ой вариант


[code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssInstall
then
begin
Exec(ExpandConstant('{app}\precomp.exe'), ' -r data.pcf ', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\data.pcf'));
сам ими не пользовался, т.к. привык задавать всё через командную строку....

Qarmaa 25-09-2009 19:51 1227439

Как-то уже задавал подобный вопрос, но рабочего решения не нашли. Попробую ещё раз: Как, при установке, когда выполняются внешние программы сделать передвигаемым окно самого инсталлятора?

МИШАНЧИК 26-09-2009 13:26 1227809

Подскажите пожалуйста! Пытаюсь при деинсталяции завершить 2 процесса. Так вот один убивается, а второй ни в какую.
Завершать посредством батника не хочется. Как бы сделать?
Код:

[Files]
Source: compiler:ISTask.dll; DestDir: {app}; Flags: ignoreversion
[_Code]
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
  external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';

function KillTask(ExeFileName: string): Integer;
  external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usUninstall then
  begin
    if RunTask('USBSafelyRemove.exe', false) then
      KillTask('USBSafelyRemove.exe');
    if RunTask('USBSRService.exe', false) then  -  это не убивается
      KillTask('USBSRService.exe');
    UnloadDll(ExpandConstant('{app}\ISTask.dll'));
    end;
end;


Habetdin 26-09-2009 13:35 1227817

Цитата:

Цитата МИШАНЧИК
if RunTask('USBSRService.exe', false) then - это не убивается »

Видимо, дело в том что этот процесс запущен службой и считается "системным" :)
Можно убить запуском команды
Код:

taskkill /f /im USBSRService.exe
Правда на Windows XP Home Edition не прокатит - там нет taskkill

МИШАНЧИК 26-09-2009 14:50 1227867

Habetdin,
Цитата:

Цитата Habetdin
Можно убить запуском команды »

А это можно как-то в код добавить? Чтоб без батника.

serg aka lain 26-09-2009 15:58 1227932

Цитата:

Цитата МИШАНЧИК
А это можно как-то в код добавить? Чтоб без батника. »

Ага
Код:

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  ErrorCode: Integer;
begin
  if CurUninstallStep = usUninstall then
  begin
    if RunTask('USBSRService.exe', false) then
      Exec('taskkill', '/f /im USBSRService.exe', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
     
    UnloadDll(ExpandConstant('{app}\ISTask.dll'));
  end;
end;


МИШАНЧИК 26-09-2009 16:21 1227954

serg aka lain, спасибо заработало.

Подскажите пожалуйста, вот для удаления всего каталога при деинсталяции есть команда:
[UninstallDelete]
Type: filesandordirs; Name: {app}

А есть что-то подобное чтоб удалить в реестре всю ветку с подразделами, допустим HKEY_CURRENT_USER\Software\SafelyRemove?
P.S.Добавил:
Код:

[Registry]
Root: HKCU; SubKey: Software\SafelyRemove; ValueType: string; ValueName: YouCanHideIcon; ValueData: 1; Flags: uninsdeletekey

Удаляет всё.

serg aka lain 26-09-2009 16:35 1227967

Цитата:

Цитата МИШАНЧИК
А есть что-то подобное чтоб удалить в реестре всю ветку с подразделами »

Код:

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin 
  if CurUninstallStep = usPostUninstall then
    RegDeleteKeyIncludingSubkeys(HKCU, 'Software\SafelyRemove');
end;


S.E.K.T.O.R. 26-09-2009 18:09 1228027

Serega подскажи как сделать вот это



т.е. если игра установлена появлялось это окошко. Я так понял, что в Сталкере инсталл через этот
ключь
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-SHOC"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}";
проверяет наличие экзешки (XR_3DA.exe), и если она есть запускается окошко, если нет - установка.

Serega 26-09-2009 19:50 1228107

Цитата:

Цитата S.E.K.T.O.R.
подскажи как сделать вот это »

Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

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

[Registry]
Root: HKLM; Subkey: Software\My Program; ValueType: string; ValueName: InstallPath; ValueData: {app}; Flags: uninsdeletekey

[Code]
function InitializeSetup: Boolean;
var
  path: string;
  res: Integer;
begin
  Result:= True;
  if RegValueExists(HKLM, 'Software\My Program', 'InstallPath') then
    if RegQueryStringValue(HKLM, 'Software\My Program', 'InstallPath', path) then
      if FileExists(path + '\MyProg.exe') then
  if MsgBox('Запустить My Program?', mbConfirmation, MB_YESNO) = IDYES then
    begin
      Exec(path + '\MyProg.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
      Result:= False;
    end;
end;


S.E.K.T.O.R. 26-09-2009 20:28 1228140

Serega большое спасибо :)

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

Lancer2404 26-09-2009 22:18 1228240

Привет всем как соединять несколько скриптов?У меня два кода а как соединить не знаю

код1
читать дальше »
[code]
Procedure InitializeWizard();
begin
InitializeSkin
end;

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


код2

читать дальше »
[code]
var
Page: TInputDirWizardPage;
ArcDir: String;

procedure CreateBackup();
var
SrcFile, DestFile: string;
begin
if IsTaskSelected('arc') then
begin

ForceDirectories(ArcDir);
SrcFile:= AddBackslash(ExpandConstant('{app}')) + ExtractFileName(CurrentFileName);
DestFile:= AddBackslash(ArcDir) + ExtractFileName(CurrentFileName);
FileCopy(SrcFile, DestFile, False);
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
If (CurPageID = Page.ID) then
ArcDir := Page.Values[0];
Result:= True;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
If (PageID = Page.ID) and
(Not IsTaskSelected('arc')) then
Result:= True
else Result:= False;
end;

procedure InitializeWizard();
begin
Page:= CreateInputDirPage(wpSelectTasks, 'Chose folder.',
'Chose folder that you install files',
'For continue press NEXT.' + #10#13#10#13 +
'Find folder.',
False, 'Backup');
Page.Add('');
//Page.Values[0] := ExpandConstant('{sd}\Backup');
Page.Values[0] := AddBackslash(ExpandConstant('{sd}\Backup\GTA4'));

end;

S.E.K.T.O.R. 26-09-2009 22:26 1228250

Цитата:

Цитата Lancer2404
как соединять несколько скриптов?У меня два кода а как соединить не знаю »

Используй программу InnoSetup Script Joiner. Ссылка есть в шапке.

S.E.K.T.O.R. 27-09-2009 00:53 1228353

Serega помоги пожалуйста сделать следующее:

Проверку операционной системы из зтого
скрипта
[code]
var state: boolean;

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;

var
ListBox: TListBox;
Text: TNewStaticText;

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

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

function GetVideoCardName(): PChar;
external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

function GetSoundCardName(): PChar;
external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';

function DetectHardware(): Integer;
external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: integer): PChar;
external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetSoundCards(): Integer;
external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';

function GetSystemPage(): Integer;
external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';

function GetSystemPhys(): Integer;
external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';

function GetVidMemLocal(): Integer;
external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';

function GetVidMemNonLocal(): Integer;
external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';

function GetVideoCardDev(): Integer;
external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';

function GetVideoCardVen(): Integer;
external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';

function DelSp(const s: string): string; // функция удаления пробелов в начале строки
var
c, i: integer;
stt, st, st1: string;
begin
c := 0;
st := s;

for i := 1 to Length(st) do
begin

stt := copy(st, i, 1);
if (stt = ' ') and (c >= 1) then
begin
st1 := st1;
c := c + 1;
end
else if (stt = ' ') and (c = 0) then
begin
c := c + 1;
st1 := st1 + stt;
end
else if (stt <> ' ') then
begin
c := 0;
st1 := st1 + stt;
end
end;

Result := st1;
end;



procedure ListBoxOnClick(Sender: TObject);
var
NewLetter, OldString: string;
i: Integer;
begin
for i := 0 to ListBox.Items.Count - 1 do
begin
if ListBox.Selected[i] then
begin
NewLetter := Copy(ListBox.Items[i], 0, 1);
OldString := Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
WizardForm.DirEdit.Text := NewLetter + OldString;
end;
end;
end;


procedure InitializeWizard();
var
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;
begin
Text := TNewStaticText.Create(WizardForm);
Text.Top := 102;
Text.Width := 332;
Text.Height := 14;
Text.Caption := 'Список жестких дисков и свободного места';
Text.Parent := WizardForm.SelectDirPage;

ListBox := TListBox.Create(WizardForm);
ListBox.Top := 120;
ListBox.Width := 332;
ListBox.Height := ScaleY(90);
ListBox.Parent := WizardForm.SelectDirPage;
ListBox.OnClick := @ListBoxOnClick;
ListBox.Font.Name := 'Courier New';
ListBox.Font.Size := 10;
ListBox.Font.Style := [fsBold];
ListBox.Color := clBtnFace;

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);
if FreeMB>1024 then ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + floatToStr(round(FreeMB/1024*100)/100) + ' GB')
else ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + IntToStr(FreeMB) + ' MB');
end;
end;
end;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
var
Path,s: 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*1024) then
begin
if FreeMB>1024 then
begin
s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ floatToStr(round(FreeMB/1024*100)/100) + ' GB!'
end
else s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ + IntToStr(FreeMB)+' MB';
MsgBox(s, mbCriticalError, MB_OK)
Result := False;
end;
end;
end;




procedure CurPageChanged(CurPageID: Integer);
var
Page: TWizardPage;
Text: TNewStaticText;
Memo,Windows,SP,Version,Build,registered,WindowsName,SP_Num,Version_Num,Build_num,registered_name: TMemo;
Os,OS1: string; // строка с названием необходимой ОС
// state: boolean;

ProcessorName: string;
Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel: TMemo;
ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;
ProcessorMHZ: Cardinal;
StaticText, StaticText2: TNewStaticText;
VidRam: integer;

begin
if CurPageID = wpUserInfo then
begin
//подменяем сраницу информации о пользователе на информацию об ОС
wizardForm.UserInfoNameEdit.visible:=false;
wizardForm.UserInfoNameEdit.text:='Игрок'; //на случай, когда имя пользователя не указано в системе
wizardForm.UserInfoNameLabel.visible:=false;
wizardForm.UserInfoOrgLabel.visible:=false;
wizardForm.UserInfoOrgEdit.visible:=false;
wizardForm.UserInfoOrgEdit.text:='Группа игроков ';//на случай, когда организация не указано в системе
wizardForm.PageNameLabel.Caption := 'Аппаратное обеспечение и Операционная система';
wizardForm.PageDescriptionLabel.Caption := 'Программа установки обнаружила следующие необходимые компоненты и Операционную систему ';
RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);

OS:=' Microsoft Windows XP Service Pack 2'; //строка является суммой из записей в реестре о Наименовании ОС и сервис-паке
OS1:=' Microsoft Windows 2000 Service Pack 4'; //строка является суммой из записей в реестре о Наименовании ОС и сервис-паке

Windows := TMemo.Create(WizardForm);

StaticText := TNewStaticText.Create(TNewStaticText.Create(WizardForm));
with StaticText do begin
Left := 0;
Top := 52;
Width := 417;
Height := 14;
Caption := 'Все компоненты удовлетворяют требованиям игры.';
Parent := WizardForm.UserInfoPage;
StaticText.font.color:=clGreen;
end


with Windows do
begin
Text := ' Операц. система';
Parent := WizardForm.UserInfoPage;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(20);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end
Processor := TMemo.Create(WizardForm);
with Processor do begin
Text := ' Процессор';
Parent := WizardForm.UserInfoPage;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(77);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end
VideoCardPanel := TMemo.Create(WizardForm);
with VideoCardPanel do begin
Text := ' Видеоадаптер';
Parent := WizardForm.UserInfoPage;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(104);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end
AudioCardPanel := TMemo.Create(WizardForm);
with AudioCardPanel do begin
Text := ' Звуковая карта';
Parent := WizardForm.UserInfoPage;
Color := clBtnFace;
Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(131);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;

end
RAMPanel := TMemo.Create(WizardForm);
with RAMPanel do begin
Text := ' ОЗУ';
Parent := WizardForm.UserInfoPage;
Color := clBtnFace;
Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(158);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.


ReadOnly := True;

end

PageFilePanel := TMemo.Create(WizardForm);
with PageFilePanel do begin
Text := ' Файл подкачки';
Parent := WizardForm.UserInfoPage;
Color := clBtnFace;
Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(185);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.


ReadOnly := True;

ProcessorNamePanel := TMemo.Create(WizardForm);
with ProcessorNamePanel do begin

Text := DelSP(ProcessorName) + ' ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
Parent := WizardForm.UserInfoPage;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(77);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;

if ProcessorMHZ < 1800 then
begin
ProcessorNamePanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
end;

VideoCardNamePanel := TMemo.Create(WizardForm);
with VideoCardNamePanel do begin
Text := ' ' + GetVideoCardName; //+' ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ'
Parent := WizardForm.UserInfoPage;
VidrAM := GetVidMemLocal / 1000000;

if VidRam > 127 then
begin
if VidRam < 200 then text := text + ' ОЗУ - 128 МB'
else if VidRam < 300 then text := text + ' ОЗУ - 256 МB'
else if VidRam < 400 then text := text + ' ОЗУ - 384 МB'
else if VidRam > 500 then text := text + ' ОЗУ - 512 МB';
end;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(104);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;

if GetVidMemLocal < 127000000 then //128 MB
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
VideoCardNamePanel.Color := $ccccff;
end;


end
AudioCardNamePanel := TMemo.Create(WizardForm);
with AudioCardNamePanel do begin
Text := ' ' + GetSoundCardName;
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;
Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(131);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R

ReadOnly := True;

end
RAMTotalPanel := TMemo.Create(WizardForm);
with RAMTotalPanel do begin
Text := ' ' + IntToStr(GetSystemPhys + 1) + ' MB';
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(158);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
if GetSystemPhys + 1 < 1024 then
begin
RAMTotalPanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
end;
end;

PageFileTotalPanel := TMemo.Create(WizardForm);
with PageFileTotalPanel do begin
Text := ' ' + IntToStr(GetSystemPage) + ' MB';
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(185);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
if GetSystemPage < 1247 then
begin
PageFileTotalPanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
end;
end;


end

if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')='' then
begin

WindowsName := TMemo.Create(WizardForm);
with WindowsName do begin
Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CSDVersion|}');
Parent := WizardForm.UserInfoPage;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(20);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;
end

end

end;

// Проверка Windows 9x
if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')<>'' then
begin
WindowsName := TMemo.Create(WizardForm);
with WindowsName do begin
Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,CSDVersion|}');
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;
Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(20);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;

end

end;


if OS=(WindowsName.Text) then state:=true else
if OS1=(WindowsName.Text) then state:=true else state:=false;

Text := TNewStaticText.Create(WizardForm);
with Text do begin
Left := 0;
Top := 0;
Width := 417;
Height := 14;
if state then
begin
Font.Color:=clGreen;
WindowsName.color:=$CCFFCC;
// SP_Num.color:=$CCFFCC;
Caption := 'Операционная система соответствует требованиям игры.';
end
else
begin
Font.Color:=clREd;
WindowsName.color:=clRed;

WindowsName.Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
WindowsName.Top := ScaleY(20);
WindowsName.Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
WindowsName.Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
WindowsName.ReadOnly := True;



Caption := 'Операционная система не соответствует требованиям игры.';
end
Parent := WizardForm.UserInfoPage;
end
Text := TNewStaticText.Create(TNewStaticText.Create(WizardForm));
with Text do begin
Left := 0;
Top := 220;
Width := 417;
Height := 14;
Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».';
Parent := WizardForm.UserInfoPage;
end




if not state then
begin
wizardForm.Nextbutton.enabled:=false;
end;
end;
end;
добавить в этот
скрипт
[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;

var
ListBox: TListBox;
Text: TNewStaticText;

function GetVideoCardName(): PChar;
external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

function GetSoundCardName(): PChar;
external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';

function DetectHardware(): Integer;
external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: integer): PChar;
external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetSoundCards(): Integer;
external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';

function GetSystemPage(): Integer;
external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';

function GetSystemPhys(): Integer;
external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';

function GetVidMemLocal(): Integer;
external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';

function GetVidMemNonLocal(): Integer;
external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';

function GetVideoCardDev(): Integer;
external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';

function GetVideoCardVen(): Integer;
external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';

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

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

function DelSp(const s: string): string; //функция удаления табуляции и пробелов в начале строки
var
c, i: integer;
stt, st, st1: string;
begin
c := 0;
st := s;

for i := 1 to Length(st) do
begin

stt := copy(st, i, 1);
if (stt = ' ') and (c >= 1) then
begin
st1 := st1;
c := c + 1;
end
else if (stt = ' ') and (c = 0) then
begin
c := c + 1;
st1 := st1 + stt;
end
else if (stt <> ' ') then
begin
c := 0;
st1 := st1 + stt;
end
end;

Result := st1;
end;

function CheckSystemPage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
ProcessorName: string;

Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel: TMemo;
ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;

ProcessorMHZ: Cardinal;
StaticText, StaticText2: TNewStaticText;
VidRam: integer;
begin
RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);
GetVidMemLocal;
GetSoundCards;

Page := CreateCustomPage(PreviousPageId, 'Аппаратное Обеспечение', 'Программа установки обнаружила следующие необходимые компоненты');

StaticText := TNewStaticText.Create(Page);
with StaticText do
begin
Parent := Page.Surface;
Caption := 'Все компоненты удовлетворяют требованиям игры.';
Left := 0;
Top := 0;
AutoSize := True;
end;

StaticText2 := TNewStaticText.Create(Page);
with StaticText2 do
begin
Parent := Page.Surface;
Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».';
Left := 0;
Top := 220;
AutoSize := True;
end;

//******************************************* [Начало - Процессор] ***************************************************//

Processor := TMemo.Create(Page);
with Processor do
begin
Text := ' Процессор';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(30);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end;


ProcessorNamePanel := TMemo.Create(Page);
with ProcessorNamePanel do
begin
Text := DelSP(ProcessorName) + ' ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
//Caption :=ProcessorName+' '+IntToStr(ProcessorMHZ)+'MHz' ;
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(30);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;
end;

if ProcessorMHZ < 1800 then //Минимальное количество частоты в MHz
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
ProcessorNamePanel.Color := $CCCCFF;
end;


//******************************************* [Конец - Процессор] ****************************************************//


//******************************************* [Начало - Видеоадаптер] ************************************************//

VideoCardPanel := TMemo.Create(Page);
with VideoCardPanel do
begin
Text := ' Видеоадаптер';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := Processor.Top + 27;
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end;

VideoCardNamePanel := TMemo.Create(Page);
with VideoCardNamePanel do
begin
Text := ' ' + GetVideoCardName; //+' ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ';
//Caption:=' ОЗУ-'+inttostr(GetVidMemLocal)+' МБ';
Alignment := taLeftJustify;
Parent := Page.Surface;

VidrAM := GetVidMemLocal / 1000000;

if VidRam > 127 then
begin
if VidRam < 200 then Text := Text + '128 МB'
else if VidRam < 300 then Text := Text + '256 МB'
else if VidRam < 400 then Text := Text + '384 МB'
else if VidRam > 500 then Text := Text + '512 МB';
end;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := VideoCardPanel.Top;
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;
end;

if GetVidMemLocal < 127000000 then //Минимальное объем ОЗУ [в байтах] у видеоадаптера 128 MB
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
VideoCardNamePanel.Color := $CCCCFF;
end;

//******************************************* [Конец - Видеоадаптер] *************************************************//


//******************************************* [Начало - Звуковая карта] **********************************************//

AudioCardPanel := TMemo.Create(Page);
with AudioCardPanel do
begin
Text := ' Звуковая карта';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := VideoCardPanel.Top + 27;
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end;

AudioCardNamePanel := TMemo.Create(Page);
with AudioCardNamePanel do
begin
Text := ' ' + GetSoundCardName;
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := AudioCardPanel.Top;
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;
end;

if
GetSoundCards = 0 then
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
AudioCardNamePanel.Color := $CCCCFF;
end;

//******************************************* [Конец - Звуковая карта] ***********************************************//


//******************************************* [Начало - ОЗУ] *********************************************************//

RAMPanel := TMemo.Create(Page);
with RAMPanel do
begin
Text := ' Память';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := AudioCardPanel.Top + 27;
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end;

RAMTotalPanel := TMemo.Create(Page);
with RAMTotalPanel do
begin
Text := ' ' + IntToStr(GetSystemPhys + 1) + ' MB';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := RAMPanel.Top;
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;
end;

if GetSystemPhys + 1 < 1024 then //Минимальное объем ОЗУ 1 Гб или 1024 Мб
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
RAMTotalPanel.Color := $CCCCFF;
end;

//******************************************* [Конец - ОЗУ] **********************************************************//


//******************************************* [Начало - Файл подкачки] ***********************************************//

PageFilePanel := TMemo.Create(Page);
with PageFilePanel do
begin
Text := ' Файл подкачки';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := RAMPanel.Top + 27;
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end;

PageFileTotalPanel := TMemo.Create(Page);
with PageFileTotalPanel do
begin
Text := ' ' + IntToStr(GetSystemPage) + ' MB';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := PageFilePanel.Top;
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;
end;

if GetSystemPage < 2048 then //Минимальное объем файла [в мегабайтах] подкачки 1 Гб или 1024 Мб
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
PageFileTotalPanel.Color := $CCCCFF;
end;

Result := Page.ID;
end;

//******************************************* [Конец - Файл подкачки] ************************************************//

procedure ListBoxOnClick(Sender: TObject);
var
NewLetter, OldString: string;
i: Integer;
begin
for i := 0 to ListBox.Items.Count - 1 do
begin
if ListBox.Selected[i] then
begin
NewLetter := Copy(ListBox.Items[i], 0, 1);
OldString := Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
WizardForm.DirEdit.Text := NewLetter + OldString;
end;
end;
end;

procedure InitializeWizard();
var
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;
begin
CheckSystemPage(wpLicense);

Text := TNewStaticText.Create(WizardForm);
Text.Top := 110;
Text.Width := 332;
Text.Height := 14;
Text.Caption := 'Список жестких дисков и свободного места';
Text.Parent := WizardForm.SelectDirPage;

ListBox := TListBox.Create(WizardForm);
ListBox.Top := 128;
ListBox.Width := 208;
ListBox.Height := ScaleY(84);
ListBox.Parent := WizardForm.SelectDirPage;
ListBox.OnClick := @ListBoxOnClick;
ListBox.Font.Name := 'Courier New';
ListBox.Font.Size := 10;
ListBox.Font.Style := [fsBold];
ListBox.Color := clBtnFace;

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);
if FreeMB>1024 then ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + floatToStr(round(FreeMB/1024*100)/100) + ' GB')
else ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + IntToStr(FreeMB) + ' MB');
end;
end;
end;
end;
чтобы получилось вот так



и если можно объединить код с проверкой ОС, типа этого


Заранее большое спасибо :) :) :)

Lancer2404 27-09-2009 09:12 1228451

S.E.K.T.O.R. Спасибо з помощь

msatmb 27-09-2009 20:51 1228892

Подскажите пожалуйста.
Имеется код
Код:

[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
 
[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"
 
[CustomMessages]
Russian.NeedTmpSpaceMsg=Для работы инсталлятора недостаточно свободного места на системном диске. %nТребуется не менее %1 Мб. %nДоступно %2 Мб.
 
[_code]
function InitializeSetup(): Boolean;
var
  TmpDirFreeMB, TmpDirTotalMB, TmpDirNeedMB: Cardinal;
 
begin
  TmpDirNeedMB:= 5000000; // сколько МЬ требуется
    Result := True;
  GetSpaceOnDisk(ExpandConstant('{tmp}'), True, TmpDirFreeMB, TmpDirTotalMB);
  if TmpDirFreeMB < TmpDirNeedMB then begin MsgBox(FmtMessage(ExpandConstant('{cm:NeedTmpSpaceMsg}'), [inttostr(TmpDirNeedMB),inttostr(TmpDirFreeMB)]), mbError, MB_Ok); Result := False; exit;; end;
end;

Как сделать при помощи функции ByteOrTB от Виктора Доброва чтобы показывалось сообщение в Гб

BlackSelf 27-09-2009 21:24 1228908

msatmb, думаю, так:
читать дальше »

Код:

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

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

[CustomMessages]
Russian.NeedTmpSpaceMsg=Для работы инсталлятора недостаточно свободного места на системном диске. %nТребуется не менее %1. %nДоступно %2.

[_code]
const
    oneMB=1024*1024;
     
Function NumToStr(Float: Extended): String;
Begin
    Result:= Format('%.2n', [Float]); StringChange(Result, ',', '.');
    while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
        SetLength(Result, Length(Result)-1);
End;
 
Function ByteOrTB(Bytes: Extended; noMB: Boolean): String;
    Begin
        if not noMB then Result:= NumToStr(Int(Bytes)) +' Mb' else
            if Bytes*oneMB < 1024 then if Bytes = 0 then Result:= '0' else Result:= NumToStr(round(Bytes*oneMB/1024)) +' Bt' else
                if Bytes*oneMB/1024 < 1024 then Result:= NumToStr(round((Bytes*oneMB/1024)*10)/10) +' Kb' else
                    If Bytes*oneMB/oneMB < 1024 then Result:= NumToStr(round(Bytes*oneMB/oneMB*100)/100) +' Mb' else
                        If Bytes*oneMB/oneMB/1000 < 1024 then Result:= NumToStr(round(Bytes*oneMB/oneMB/1024*1000)/1000) +' Gb' else
                            Result:= NumToStr(round(Bytes*oneMB/oneMB/oneMB*1000)/1000) +' Tb';
End;

function InitializeSetup(): Boolean;
var
  TmpDirFreeMB, TmpDirTotalMB, TmpDirNeedMB: Cardinal;
begin
  TmpDirNeedMB:= 5000000; // сколько Mb требуется
    Result := True;
  GetSpaceOnDisk(ExpandConstant('{tmp}'), True, TmpDirFreeMB, TmpDirTotalMB);
  if TmpDirFreeMB < TmpDirNeedMB then begin MsgBox(FmtMessage(ExpandConstant('{cm:NeedTmpSpaceMsg}'), [ByteOrTB(TmpDirNeedMB,true),ByteOrTB(TmpDirFreeMB,true)]), mbError, MB_Ok); Result := False; exit;; end;
end;


msatmb 27-09-2009 21:40 1228923

BlackSelf, Спасибо, только пришлось умножить на oneMB, а то он мне в Мегах и килобайтах показывал :)
т.е.
ByteOrTB(TmpDirNeedMB*oneMB,true),ByteOrTB(TmpDirFreeMB*oneMB,true) Вроде правильно показал :)
И я почемуто думал, что нужно обязательно делить на oneMB как в других скриптах. А оказывается можно и так :)
и вопрос.
Если конечно пользовался скриптом для распаковки архивов FreeArcВерсия 3.3 от Bulat Ziganshin, 13-09-2009
- FreeArcExtract() поддерживает опцию '-wPATH' для задания каталога для временных файлов

Каким образом прописать эту опцию в скрипте :)

Lancer2404 27-09-2009 23:59 1229050

Скажите можно ли сделать так чтобы пользователь при установке указал букву диска,а инсталлятор уже в зависимости от буквы диска прописал в реестр ключ.Например install path: С:\Games\Driver\driver.exe. Возможно сделать такое?

A1EXXX 28-09-2009 00:27 1229074

Lancer2404, если я правильно понял, тебе нужно, чтобы в реестр заносился ключ в зависимости от указанного пути. Вместо С:\Games\Driver\driver.exe напиши {app}, например:
Цитата:

Root: HKLM; Subkey: "SOFTWARE\Activision\Call of Duty 4"; ValueName: "InstallPath"; ValueType: String; ValueData: "{app}";

user_123 28-09-2009 12:16 1229340

Serega, K.I.S. 2010 сообщает, что REG-Converter содержит вирус virus.Win32.induc.a! Это правда?!!
Перезакачивал архив - рекакция антивируса на этот архив та же.

И в самом деле программа функционирует подозрительно... Крошечный reg-файл из нескольких строк конвертирует секунд 7 - 10 и при этом CPU загружает на 100%!

p.s. когда будет свободное время отформатирую жёсткий диск...

A1EXXX 28-09-2009 14:56 1229450

user_123, каспер - зло! Мой NOD32 молчит, а прога нормально работает, файлы конвертит мгновенно! Если сомневаешься, отправь файл в Лабораторию или на virusinfo....

Lancer2404 28-09-2009 17:05 1229543

A1EXXX Спасибо.А можно так сделать чтобы при установке на win xp один путь а при установке на висту другой.Так возможно сделать?

Stef1979 28-09-2009 18:31 1229600

Подскажите, пожалуйста.
Как добавить страницу, содержащую несколько радио буттонов, и в зависимости от сделанного выбора с инсталлятора должен копироваться тот или иной файл.

Поискав по форуму, нашел:

[Tasks]
Name: chk1; Description: Ключ 1; GroupDescription: Дополнительно:; Flags: exclusive
Name: chk2; Description: Ключ 2; GroupDescription: Дополнительно:; Flags: exclusive

А как теперь связать выбор с тем или иным файлом и скопировать именно его destination, никак не могу понять.

A1EXXX 28-09-2009 19:10 1229627

Stef1979, после нужного файла добавляй Tasks: "chk1"; - для первого, Tasks: "chk2"; - для второго, например:
Цитата:

[Tasks]
Name: chk1; Description: Ключ 1; GroupDescription: Дополнительно:; Flags: exclusive
Name: chk2; Description: Ключ 2; GroupDescription: Дополнительно:; Flags: exclusive

[Files]
Source: C:\1.bmp; DestDir: {app}; Flags: ignoreversion; Tasks: "chk1";
Source: C:\2.mp3; DestDir: {app}; Flags: ignoreversion; Tasks: "chk2";

Serega 28-09-2009 19:46 1229652

Цитата:

Цитата user_123
K.I.S. 2010 сообщает, что REG-Converter содержит вирус virus.Win32.induc.a! Это правда?!! »

Я так понимаю вы говорите про Converter v.0.1.2, если да, то советую прочитать это сообщение.
Я даже и не думал, что до сих пор скачивают Converter v.0.1.2, в то время, когда уже есть Converter v.0.1.3.
Цитата:

Цитата user_123
Крошечный reg-файл из нескольких строк конвертирует секунд 7 - 10 и при этом CPU загружает на 100%! »

Если там действительно несколько строк, то откровенно говоря вы лукавите про 7-10 секунд...
Цитата:

Цитата user_123
p.s. 2
Убери-ка быстро от-туда вирус и не обманывай простых пользователей!!! »

Вы наверное меня с кем-то спутали?
Мы с Вами на ТЫ не переходили и я Вам не мальчик, чтоб говорить со мной в таком тоне.
Выбирайте выражения.
Я никого не заставляю пользоваться своей программой, не нравиться - не используйте, а делайте все руками.

P.S.
Проверка Converter v.0.1.3 на Virustotal и Антивирусный сканер Jotti.

Stef1979 29-09-2009 07:27 1230033

Цитата:

Цитата A1EXXX
Stef1979, после нужного файла добавляй Tasks: "chk1"; - для первого, Tasks: "chk2"; - для второго, например: »

Спасибо большое!

S.E.K.T.O.R. 29-09-2009 18:33 1230517

Serega помогите пожалуйста сделать следующее:

Проверку операционной системы из зтого
скрипта
[code]
var state: boolean;

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;

var
ListBox: TListBox;
Text: TNewStaticText;

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

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

function GetVideoCardName(): PChar;
external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

function GetSoundCardName(): PChar;
external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';

function DetectHardware(): Integer;
external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: integer): PChar;
external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetSoundCards(): Integer;
external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';

function GetSystemPage(): Integer;
external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';

function GetSystemPhys(): Integer;
external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';

function GetVidMemLocal(): Integer;
external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';

function GetVidMemNonLocal(): Integer;
external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';

function GetVideoCardDev(): Integer;
external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';

function GetVideoCardVen(): Integer;
external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';

function DelSp(const s: string): string; // функция удаления пробелов в начале строки
var
c, i: integer;
stt, st, st1: string;
begin
c := 0;
st := s;

for i := 1 to Length(st) do
begin

stt := copy(st, i, 1);
if (stt = ' ') and (c >= 1) then
begin
st1 := st1;
c := c + 1;
end
else if (stt = ' ') and (c = 0) then
begin
c := c + 1;
st1 := st1 + stt;
end
else if (stt <> ' ') then
begin
c := 0;
st1 := st1 + stt;
end
end;

Result := st1;
end;



procedure ListBoxOnClick(Sender: TObject);
var
NewLetter, OldString: string;
i: Integer;
begin
for i := 0 to ListBox.Items.Count - 1 do
begin
if ListBox.Selected[i] then
begin
NewLetter := Copy(ListBox.Items[i], 0, 1);
OldString := Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
WizardForm.DirEdit.Text := NewLetter + OldString;
end;
end;
end;


procedure InitializeWizard();
var
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;
begin
Text := TNewStaticText.Create(WizardForm);
Text.Top := 102;
Text.Width := 332;
Text.Height := 14;
Text.Caption := 'Список жестких дисков и свободного места';
Text.Parent := WizardForm.SelectDirPage;

ListBox := TListBox.Create(WizardForm);
ListBox.Top := 120;
ListBox.Width := 332;
ListBox.Height := ScaleY(90);
ListBox.Parent := WizardForm.SelectDirPage;
ListBox.OnClick := @ListBoxOnClick;
ListBox.Font.Name := 'Courier New';
ListBox.Font.Size := 10;
ListBox.Font.Style := [fsBold];
ListBox.Color := clBtnFace;

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);
if FreeMB>1024 then ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + floatToStr(round(FreeMB/1024*100)/100) + ' GB')
else ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + IntToStr(FreeMB) + ' MB');
end;
end;
end;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
var
Path,s: 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*1024) then
begin
if FreeMB>1024 then
begin
s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ floatToStr(round(FreeMB/1024*100)/100) + ' GB!'
end
else s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ + IntToStr(FreeMB)+' MB';
MsgBox(s, mbCriticalError, MB_OK)
Result := False;
end;
end;
end;




procedure CurPageChanged(CurPageID: Integer);
var
Page: TWizardPage;
Text: TNewStaticText;
Memo,Windows,SP,Version,Build,registered,WindowsName,SP_Num,Version_Num,Build_num,registered_name: TMemo;
Os,OS1: string; // строка с названием необходимой ОС
// state: boolean;

ProcessorName: string;
Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel: TMemo;
ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;
ProcessorMHZ: Cardinal;
StaticText, StaticText2: TNewStaticText;
VidRam: integer;

begin
if CurPageID = wpUserInfo then
begin
//подменяем сраницу информации о пользователе на информацию об ОС
wizardForm.UserInfoNameEdit.visible:=false;
wizardForm.UserInfoNameEdit.text:='Игрок'; //на случай, когда имя пользователя не указано в системе
wizardForm.UserInfoNameLabel.visible:=false;
wizardForm.UserInfoOrgLabel.visible:=false;
wizardForm.UserInfoOrgEdit.visible:=false;
wizardForm.UserInfoOrgEdit.text:='Группа игроков ';//на случай, когда организация не указано в системе
wizardForm.PageNameLabel.Caption := 'Аппаратное обеспечение и Операционная система';
wizardForm.PageDescriptionLabel.Caption := 'Программа установки обнаружила следующие необходимые компоненты и Операционную систему ';
RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);

OS:=' Microsoft Windows XP Service Pack 2'; //строка является суммой из записей в реестре о Наименовании ОС и сервис-паке
OS1:=' Microsoft Windows 2000 Service Pack 4'; //строка является суммой из записей в реестре о Наименовании ОС и сервис-паке

Windows := TMemo.Create(WizardForm);

StaticText := TNewStaticText.Create(TNewStaticText.Create(WizardForm));
with StaticText do begin
Left := 0;
Top := 52;
Width := 417;
Height := 14;
Caption := 'Все компоненты удовлетворяют требованиям игры.';
Parent := WizardForm.UserInfoPage;
StaticText.font.color:=clGreen;
end


with Windows do
begin
Text := ' Операц. система';
Parent := WizardForm.UserInfoPage;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(20);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end
Processor := TMemo.Create(WizardForm);
with Processor do begin
Text := ' Процессор';
Parent := WizardForm.UserInfoPage;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(77);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end
VideoCardPanel := TMemo.Create(WizardForm);
with VideoCardPanel do begin
Text := ' Видеоадаптер';
Parent := WizardForm.UserInfoPage;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(104);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end
AudioCardPanel := TMemo.Create(WizardForm);
with AudioCardPanel do begin
Text := ' Звуковая карта';
Parent := WizardForm.UserInfoPage;
Color := clBtnFace;
Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(131);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;

end
RAMPanel := TMemo.Create(WizardForm);
with RAMPanel do begin
Text := ' ОЗУ';
Parent := WizardForm.UserInfoPage;
Color := clBtnFace;
Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(158);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.


ReadOnly := True;

end

PageFilePanel := TMemo.Create(WizardForm);
with PageFilePanel do begin
Text := ' Файл подкачки';
Parent := WizardForm.UserInfoPage;
Color := clBtnFace;
Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(185);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.


ReadOnly := True;

ProcessorNamePanel := TMemo.Create(WizardForm);
with ProcessorNamePanel do begin

Text := DelSP(ProcessorName) + ' ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
Parent := WizardForm.UserInfoPage;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(77);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;

if ProcessorMHZ < 1800 then
begin
ProcessorNamePanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
end;

VideoCardNamePanel := TMemo.Create(WizardForm);
with VideoCardNamePanel do begin
Text := ' ' + GetVideoCardName; //+' ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ'
Parent := WizardForm.UserInfoPage;
VidrAM := GetVidMemLocal / 1000000;

if VidRam > 127 then
begin
if VidRam < 200 then text := text + ' ОЗУ - 128 МB'
else if VidRam < 300 then text := text + ' ОЗУ - 256 МB'
else if VidRam < 400 then text := text + ' ОЗУ - 384 МB'
else if VidRam > 500 then text := text + ' ОЗУ - 512 МB';
end;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(104);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;

if GetVidMemLocal < 127000000 then //128 MB
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
VideoCardNamePanel.Color := $ccccff;
end;


end
AudioCardNamePanel := TMemo.Create(WizardForm);
with AudioCardNamePanel do begin
Text := ' ' + GetSoundCardName;
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;
Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(131);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R

ReadOnly := True;

end
RAMTotalPanel := TMemo.Create(WizardForm);
with RAMTotalPanel do begin
Text := ' ' + IntToStr(GetSystemPhys + 1) + ' MB';
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(158);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
if GetSystemPhys + 1 < 1024 then
begin
RAMTotalPanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
end;
end;

PageFileTotalPanel := TMemo.Create(WizardForm);
with PageFileTotalPanel do begin
Text := ' ' + IntToStr(GetSystemPage) + ' MB';
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(185);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
if GetSystemPage < 1247 then
begin
PageFileTotalPanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
end;
end;


end

if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')='' then
begin

WindowsName := TMemo.Create(WizardForm);
with WindowsName do begin
Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CSDVersion|}');
Parent := WizardForm.UserInfoPage;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(20);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;
end

end

end;

// Проверка Windows 9x
if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')<>'' then
begin
WindowsName := TMemo.Create(WizardForm);
with WindowsName do begin
Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,CSDVersion|}');
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;
Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(20);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;

end

end;


if OS=(WindowsName.Text) then state:=true else
if OS1=(WindowsName.Text) then state:=true else state:=false;

Text := TNewStaticText.Create(WizardForm);
with Text do begin
Left := 0;
Top := 0;
Width := 417;
Height := 14;
if state then
begin
Font.Color:=clGreen;
WindowsName.color:=$CCFFCC;
// SP_Num.color:=$CCFFCC;
Caption := 'Операционная система соответствует требованиям игры.';
end
else
begin
Font.Color:=clREd;
WindowsName.color:=clRed;

WindowsName.Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
WindowsName.Top := ScaleY(20);
WindowsName.Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
WindowsName.Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
WindowsName.ReadOnly := True;



Caption := 'Операционная система не соответствует требованиям игры.';
end
Parent := WizardForm.UserInfoPage;
end
Text := TNewStaticText.Create(TNewStaticText.Create(WizardForm));
with Text do begin
Left := 0;
Top := 220;
Width := 417;
Height := 14;
Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».';
Parent := WizardForm.UserInfoPage;
end




if not state then
begin
wizardForm.Nextbutton.enabled:=false;
end;
end;
end;
добавить в этот
скрипт
[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;

var
ListBox: TListBox;
Text: TNewStaticText;

function GetVideoCardName(): PChar;
external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

function GetSoundCardName(): PChar;
external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';

function DetectHardware(): Integer;
external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: integer): PChar;
external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetSoundCards(): Integer;
external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';

function GetSystemPage(): Integer;
external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';

function GetSystemPhys(): Integer;
external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';

function GetVidMemLocal(): Integer;
external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';

function GetVidMemNonLocal(): Integer;
external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';

function GetVideoCardDev(): Integer;
external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';

function GetVideoCardVen(): Integer;
external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';

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

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

function DelSp(const s: string): string; //функция удаления табуляции и пробелов в начале строки
var
c, i: integer;
stt, st, st1: string;
begin
c := 0;
st := s;

for i := 1 to Length(st) do
begin

stt := copy(st, i, 1);
if (stt = ' ') and (c >= 1) then
begin
st1 := st1;
c := c + 1;
end
else if (stt = ' ') and (c = 0) then
begin
c := c + 1;
st1 := st1 + stt;
end
else if (stt <> ' ') then
begin
c := 0;
st1 := st1 + stt;
end
end;

Result := st1;
end;

function CheckSystemPage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
ProcessorName: string;

Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel, WindowsPanel: TMemo;
ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel, WindowsNamePanel: TMemo;

ProcessorMHZ: Cardinal;
StaticText, StaticText2: TNewStaticText;
VidRam: integer;
begin
RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);
GetVidMemLocal;
GetSoundCards;

Page := CreateCustomPage(PreviousPageId, 'Аппаратное Обеспечение', 'Программа установки обнаружила следующие необходимые компоненты');

StaticText := TNewStaticText.Create(Page);
with StaticText do
begin
Parent := Page.Surface;
Caption := 'Все компоненты удовлетворяют требованиям игры.';
Left := 0;
Top := 0;
AutoSize := True;
end;

StaticText2 := TNewStaticText.Create(Page);
with StaticText2 do
begin
Parent := Page.Surface;
Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».';
Left := 0;
Top := 220;
AutoSize := True;
end;

//******************************************* [Начало - Операционная система] ***************************************************//

WindowsPanel := TMemo.Create(Page);
with WindowsPanel do
begin
Text := ' Операц. система';
Parent := Page.Surface;

Left := ScaleX(0);
Top := ScaleY(165);
Width := ScaleX(106);
Height := ScaleY(22);

ReadOnly := True;
Color := clBtnFace;
end;

WindowsNamePanel := TMemo.Create(Page);
with WindowsNamePanel do
begin

if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')='' then
begin

WindowsNamePanel := TMemo.Create(Page);
with WindowsNamePanel do
begin
Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CSDVersion|}');
Parent := Page.Surface;

Left := ScaleX(110);
Top := ScaleY(165);
Width := ScaleX(304);
Height := ScaleY(22);

ReadOnly := True;
Color := $CCFFCC;
end
end
end;

//******************************************* [Конец - Операционная система] ***************************************************//


//******************************************* [Начало - Процессор] ***************************************************//

Processor := TMemo.Create(Page);
with Processor do
begin
Text := ' Процессор';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0);
Top := ScaleY(30);
Width := ScaleX(106);
Height := ScaleY(22);

ReadOnly := True;
Color := clBtnFace;
end;


ProcessorNamePanel := TMemo.Create(Page);
with ProcessorNamePanel do
begin
Text := DelSP(ProcessorName) + ' ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
//Caption :=ProcessorName+' '+IntToStr(ProcessorMHZ)+'MHz' ;
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110);
Top := ScaleY(30);
Width := ScaleX(304);
Height := ScaleY(22);

ReadOnly := True;
Color := $CCFFCC;
end;

if ProcessorMHZ < 1800 then //Минимальное количество частоты в MHz
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
ProcessorNamePanel.Color := $CCCCFF;
end;


//******************************************* [Конец - Процессор] ****************************************************//


//******************************************* [Начало - Видеоадаптер] ************************************************//

VideoCardPanel := TMemo.Create(Page);
with VideoCardPanel do
begin
Text := ' Видеоадаптер';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0);
Top := Processor.Top + 27;
Width := ScaleX(106);
Height := ScaleY(22);

ReadOnly := True;
Color := clBtnFace;
end;

VideoCardNamePanel := TMemo.Create(Page);
with VideoCardNamePanel do
begin
Text := ' ' + GetVideoCardName; //+' ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ';
//Caption:=' ОЗУ-'+inttostr(GetVidMemLocal)+' МБ';
Alignment := taLeftJustify;
Parent := Page.Surface;

VidrAM := GetVidMemLocal / 1000000;

if VidRam > 127 then
begin
if VidRam < 200 then Text := Text + '128 МB'
else if VidRam < 300 then Text := Text + '256 МB'
else if VidRam < 400 then Text := Text + '384 МB'
else if VidRam > 500 then Text := Text + '512 МB';
end;

Left := ScaleX(110);
Top := VideoCardPanel.Top;
Width := ScaleX(304);
Height := ScaleY(22);

ReadOnly := True;
Color := $CCFFCC;
end;

if GetVidMemLocal < 127000000 then //Минимальное объем ОЗУ [в байтах] у видеоадаптера 128 MB
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
VideoCardNamePanel.Color := $CCCCFF;
end;

//******************************************* [Конец - Видеоадаптер] *************************************************//


//******************************************* [Начало - Звуковая карта] **********************************************//

AudioCardPanel := TMemo.Create(Page);
with AudioCardPanel do
begin
Text := ' Звуковая карта';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0);
Top := VideoCardPanel.Top + 27;
Width := ScaleX(106);
Height := ScaleY(22);

ReadOnly := True;
Color := clBtnFace;
end;

AudioCardNamePanel := TMemo.Create(Page);
with AudioCardNamePanel do
begin
Text := ' ' + GetSoundCardName;
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110);
Top := AudioCardPanel.Top;
Width := ScaleX(304);
Height := ScaleY(22);

ReadOnly := True;
Color := $CCFFCC;
end;

if
GetSoundCards = 0 then
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
AudioCardNamePanel.Color := $CCCCFF;
end;

//******************************************* [Конец - Звуковая карта] ***********************************************//


//******************************************* [Начало - ОЗУ] *********************************************************//

RAMPanel := TMemo.Create(Page);
with RAMPanel do
begin
Text := ' Память';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0);
Top := AudioCardPanel.Top + 27;
Width := ScaleX(106);
Height := ScaleY(22);

ReadOnly := True;
Color := clBtnFace;
end;

RAMTotalPanel := TMemo.Create(Page);
with RAMTotalPanel do
begin
Text := ' ' + IntToStr(GetSystemPhys + 1) + ' MB';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110);
Top := RAMPanel.Top;
Width := ScaleX(304);
Height := ScaleY(22);

ReadOnly := True;
Color := $CCFFCC;
end;

if GetSystemPhys + 1 < 1024 then //Минимальное объем ОЗУ 1 Гб или 1024 Мб
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
RAMTotalPanel.Color := $CCCCFF;
end;

//******************************************* [Конец - ОЗУ] **********************************************************//


//******************************************* [Начало - Файл подкачки] ***********************************************//

PageFilePanel := TMemo.Create(Page);
with PageFilePanel do
begin
Text := ' Файл подкачки';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0);
Top := RAMPanel.Top + 27;
Width := ScaleX(106);
Height := ScaleY(22);

ReadOnly := True;
Color := clBtnFace;
end;

PageFileTotalPanel := TMemo.Create(Page);
with PageFileTotalPanel do
begin
Text := ' ' + IntToStr(GetSystemPage) + ' MB';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110);
Top := PageFilePanel.Top;
Width := ScaleX(304);
Height := ScaleY(22);

ReadOnly := True;
Color := $CCFFCC;
end;

if GetSystemPage < 2048 then //Минимальное объем файла [в мегабайтах] подкачки 1 Гб или 1024 Мб
begin
StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
PageFileTotalPanel.Color := $CCCCFF;
end;

Result := Page.ID;
end;

//******************************************* [Конец - Файл подкачки] ************************************************//

procedure ListBoxOnClick(Sender: TObject);
var
NewLetter, OldString: string;
i: Integer;
begin
for i := 0 to ListBox.Items.Count - 1 do
begin
if ListBox.Selected[i] then
begin
NewLetter := Copy(ListBox.Items[i], 0, 1);
OldString := Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
WizardForm.DirEdit.Text := NewLetter + OldString;
end;
end;
end;

procedure InitializeWizard();
var
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;
begin
CheckSystemPage(wpLicense);

Text := TNewStaticText.Create(WizardForm);
Text.Top := 110;
Text.Width := 332;
Text.Height := 14;
Text.Caption := 'Список жестких дисков и свободного места';
Text.Parent := WizardForm.SelectDirPage;

ListBox := TListBox.Create(WizardForm);
ListBox.Top := 128;
ListBox.Width := 208;
ListBox.Height := ScaleY(84);
ListBox.Parent := WizardForm.SelectDirPage;
ListBox.OnClick := @ListBoxOnClick;
ListBox.Font.Name := 'Courier New';
ListBox.Font.Size := 10;
ListBox.Font.Style := [fsBold];
ListBox.Color := clBtnFace;

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);
if FreeMB>1024 then ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + floatToStr(round(FreeMB/1024*100)/100) + ' GB')
else ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + IntToStr(FreeMB) + ' MB');
end;
end;
end;
end;
Панельки я сделал, проверку реестра добавил, а вот остальное чет не получается. Очень надеюсь на Вашу помощь!

Заранее большое спасибо :) :) :)

Serega 30-09-2009 00:29 1230777

Цитата:

Цитата S.E.K.T.O.R.
а вот остальное чет не получается. »

Что конкретно не получается? Просто get_hw_caps.dll у меня нет и поэтому проверить не могу, как должно выглядеть.

P.S.
Пример проверки системы, без get_hw_caps.dll
Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
type
 PDisplay_Device = record
  cb: DWord;
  DeviceName: array [0..31] of char;
  DeviceString: array [0..127] of char;
  StateFlags: DWord;
  DeviceID, DeviceKey: array [0..127] of char;
 end;

 TMixerCaps = record
  vPid, vDriverVersion: DWord;
  sName: array [0..31] of char;
  Support, cDestinations: DWord;
 end;

// Проверка версии Windows
#if Pos("4.", GetFileVersion(AddBackslash(GetEnv("windir")) + "Explorer.exe")) == 1
        {Win9x}
  TMemoryStatusEx = record
    dwLength, dwMemoryLoad: DWord;
    LoTotalPhys, LoAvailPhys, LoTotalPageFile, LoAvailPageFile,
    LoTotalVirtual, LoAvailVirtual, LoAvailExtendedVirtual, HiTotalPhys,
    HiAvailPhys, HiTotalPageFile, HiAvailPageFile, HiTotalVirtual, HiAvailVirtual,
    HiAvailExtendedVirtual: Integer;
  end;
  function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean;
  external 'GlobalMemoryStatus@kernel32.dll stdcall';
#else
        {WinNT}
  TMemoryStatusEx = record
    dwLength, dwMemoryLoad: DWord;
    LoTotalPhys, HiTotalPhys, LoAvailPhys, HiAvailPhys,
    LoTotalPageFile, HiTotalPageFile, LoAvailPageFile, HiAvailPageFile,
    LoTotalVirtual, HiTotalVirtual, LoAvailVirtual, HiAvailVirtual, LoAvailExtendedVirtual,
    HiAvailExtendedVirtual: Integer;
  end;
  function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean;
  external 'GlobalMemoryStatusEx@kernel32.dll stdcall';
#endif

const
  DISPLAY_DEVICE_PRIMARY_DEVICE = 4;
  oneMB = 1024*1024;
  NeedMHz = 1800;
  NeedVideoRAM = 128;
  NeedSoundCard = 'Creative X-Fi';
  NeedMB = 512;
  NeedPageFile = 1024;

var
  InfoPage: TWizardPage;
  TopText, BottomText: TNewStaticText;
  ChangeText: Boolean;
  SystemPanel, ProcessorPanel, VideoPanel,
  AudioPanel, RAMPanel, PageFilePanel: TMemo;
  SystemVersionPanel, ProcessorMHzPanel, VideoRAMPanel,
  AudioNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;
  lpCaps: TMixerCaps;
  Version: TWindowsVersion;
  MemoryEx: TMemoryStatusEx;
  n, errCode: Integer;
  Keys: TArrayOfString;
  DeviceValue: Cardinal;
  lpDisplayDevice: PDisplay_Device;

function GetSystemMetrics(nIndex: Integer): Integer;
 external 'GetSystemMetrics@user32.dll stdcall';

function GetDeviceCaps(hDC, nIndex: Integer): Integer;
 external 'GetDeviceCaps@GDI32 stdcall';

function CreateDC(lpDriverName, lpDeviceName, lpOutput: String; lpInitData: Integer): Integer;
 external 'CreateDCA@GDI32 stdcall';

function EnumDisplayDevices(lpDevice, iDevNum: DWord; var lpDisplayDevice: PDisplay_Device; dwFlags: DWord): Boolean;
 external 'EnumDisplayDevicesA@user32.dll stdcall';

function mixerGetDevCaps(uDeviceID: LongInt; var lpCaps: TMixerCaps; uSize: LongInt): LongInt;
 external 'mixerGetDevCapsA@winmm.dll stdcall';

function mixerGetNumDevs: Integer;
 external 'mixerGetNumDevs@winmm.dll stdcall';

// Дополнить число до кратного Multiple
function ToMultiple(Bytes, Multiple: Integer): Integer;
begin
  if Abs(Bytes/Multiple) > Bytes/Multiple then
    Result := (Bytes/Multiple + 1)*Multiple
  else
    Result := Bytes
end;

// Перевод числа в значение Бт/Кб/Мб/Гб/Тб (до 3х знаков после запятой)
function ByteOrTB(Bytes: Extended; noMB: Boolean): String;
begin
 if not noMB then
    Result := FloatToStr(Int(Bytes)) + ' Мб'
 else
                if Bytes < 1024 then
      Result := FloatToStr(Int(Bytes)) + ' Бт'
    else
                        if Bytes/1024 < 1024 then
          Result := FloatToStr(round((Bytes/1024)*10)/10) + ' Кб'
      else
                                        if Bytes/oneMB < 1024 then
            Result := FloatToStr(round(Bytes/oneMB*100)/100) + ' Мб'
          else
            if Bytes/oneMB/1000 < 1024 then
                Result := FloatToStr(round(Bytes/oneMB/1024*1000)/1000) + ' Гб'
            else
                                                          Result := FloatToStr(round(Bytes/oneMB/oneMB*1000)/1000) + ' Тб'
 StringChange(Result, ',', '.')
end;

// Удаление начальных, конечных и повторных пробелов
function DelSp(String: String): String;
begin
 while (Pos('  ', String) > 0) do Delete(String, Pos('  ', String), 1)
 Result := Trim(String)
end;

function Size64(Hi, Lo: Integer): Extended;
begin
 Result := Lo
 if Lo < 0 then
    Result := Result + $7FFFFFFF + $7FFFFFFF + 2
 for Hi := Hi-1 downto 0 do Result := Result + $7FFFFFFF + $7FFFFFFF + 2
end;

function CheckCPU(NeedMHz: Integer): Boolean;
var
  String: String;
begin
        String := 'Hardware\Description\System\CentralProcessor'; RegGetSubkeyNames(HKLM, String, Keys)        // Количество ядер
        for n := 0 to GetArrayLength(Keys)-1 do
      RegQueryStringValue(HKLM, String + '\' + Keys[n], 'ProcessorNameString', Keys[n])
        if not RegQueryDWordValue(HKLM, String + '\0', '~MHz', DeviceValue) or (DeviceValue < NeedMHz) then
        Exit
  else
    Result := True
end;

function CheckMemorySize(NeedRAM: Integer): Boolean;
begin
        MemoryEx.dwLength := SizeOf(MemoryEx)
        if not GlobalMemoryStatusEx(MemoryEx) then
        MsgBox('Ошибка функции:' + #13 + 'GlobalMemoryStatusEx', mbError, mb_Ok)
  else
          if (ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16) < NeedRAM) then
        Exit
    else
        Result := True
end;

procedure CreateCheckForm();
begin

  TopText := TNewStaticText.Create(InfoPage)
  with TopText do
  begin
    Parent := InfoPage.Surface
    Left := 0
    AutoSize := True
  end

  BottomText := TNewStaticText.Create(InfoPage)
  with BottomText do
  begin
    Parent := InfoPage.Surface
    Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».'
    Font.Color := clBlack
    Left := 0
    Top := 200
    AutoSize := True
  end

  SystemPanel := TMemo.Create(InfoPage)
  with SystemPanel do
  begin
    Text := 'Система'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := ScaleY(33)
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end

  SystemVersionPanel := TMemo.Create(InfoPage)
  with SystemVersionPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := SystemPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end

  ProcessorPanel := TMemo.Create(InfoPage)
  with ProcessorPanel do
  begin
    Text := 'Процессор'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := SystemPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end

  ProcessorMHzPanel := TMemo.Create(InfoPage)
  with ProcessorMHzPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := ProcessorPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end

  VideoPanel := TMemo.Create(InfoPage)
  with VideoPanel do
  begin
    Text := 'Видеоадаптер'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := ProcessorPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end

  VideoRAMPanel := TMemo.Create(InfoPage)
  with VideoRAMPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := VideoPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end

  AudioPanel := TMemo.Create(InfoPage)
  with AudioPanel do
  begin
    Text := 'Звуковая карта'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := VideoPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end

  AudioNamePanel := TMemo.Create(InfoPage)
  with AudioNamePanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := AudioPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end

  RAMPanel := TMemo.Create(InfoPage)
  with RAMPanel do
  begin
    Text := 'Объём памяти'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := AudioPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end

  RAMTotalPanel := TMemo.Create(InfoPage)
  with RAMTotalPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := RAMPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end

  PageFilePanel := TMemo.Create(InfoPage)
  with PageFilePanel do
  begin
    Text := 'Файл подкачки'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := RAMPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end;

  PageFileTotalPanel := TMemo.Create(InfoPage)
  with PageFileTotalPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := PageFilePanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end

end;

procedure UpdateInfo();
var
  DeviceName, DeviceKey: String;
begin
  ChangeText := False

  GetWindowsVersionEx(Version)

  // Операционная система:
  SystemVersionPanel.Color := $CCFFCC

  DeviceKey := 'Software\Microsoft\Windows NT\CurrentVersion'
  if not UsingWinNT then StringChange(DeviceKey, 'Windows NT', 'Windows')
        RegQueryStringValue(HKLM, DeviceKey, 'ProductName', DeviceName)
  if RegQueryStringValue(HKLM, DeviceKey, 'CSDVersion', DeviceKey) then
    DeviceName := DeviceName + ' ' + DeviceKey
        StringChange(DeviceName, 'Microsoft ', '')
  SystemVersionPanel.Text := ' ' + DeviceName + ' сборка ' + IntToStr(Version.Major) + '.' + IntToStr(Version.Minor) +
                            '.' + IntToStr(Version.Build)

  if (Pos('2000 Service Pack 4', SystemVersionPanel.Text) = 0) and  // Windows 2000 SP4
    (Pos('XP Service Pack 2', SystemVersionPanel.Text) = 0) and  // Windows XP SP2
    (Pos('XP Service Pack 3', SystemVersionPanel.Text) = 0) and  // Windows XP SP3
    (Pos('Vista', SystemVersionPanel.Text) = 0) then  // Windows Vista (c любым SP или без него)
    begin
      SystemVersionPanel.Color := $CCCCFF
      ChangeText := True
    end

  // Процессор:
  ProcessorMHzPanel.Color := $CCFFCC

  if not CheckCPU(NeedMHz) then
    begin
      ProcessorMHzPanel.Color := $CCCCFF
      ChangeText := True
    end

  ProcessorMHzPanel.Text := ' ' + DelSp(Keys[0]) + ' @' + IntToStr(DeviceValue) + ' MHz'
  if GetArrayLength(Keys) > 1 then
    ProcessorPanel.Text := 'Процессоры' // + ' (' + IntToStr(GetArrayLength(Keys)) + ')'

  // Видеокарта:
  VideoRAMPanel.Color := $CCFFCC

  lpDisplayDevice.cb := SizeOf(lpDisplayDevice)
  DeviceKey := ''
        n := 0
  while not (EnumDisplayDevices(0, n, lpDisplayDevice, 0) and
            (lpDisplayDevice.StateFlags and DISPLAY_DEVICE_PRIMARY_DEVICE > 0)) and (n < 127) do n := n + 1
        for n := 0 to 127 do DeviceKey := DeviceKey + lpDisplayDevice.DeviceKey[n]
  Delete(DeviceKey, Pos(Chr(0), DeviceKey), 127)  // Ключ драйвера получаем из API
        StringChange(DeviceKey, '\Registry\Machine\', '')
  errCode := 1
  DeviceValue := 0
  if RegQueryBinaryValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceName) then
                for n := 1 to Length(DeviceName) do
      begin
        DeviceValue := DeviceValue + Ord(DeviceName[n])*errCode
        errCode := errCode*$100
      end
  else
    if RegQueryDWordValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceValue) then
    else
        RegQueryDWordValue(HKLM, DeviceKey + '\Info', 'VideoMemory', DeviceValue)
        DeviceName := ''
  for n := 0 to 127 do DeviceName := DeviceName + lpDisplayDevice.DeviceString[n]
  Delete(DeviceName, Pos(Chr(0), DeviceName), 127)

  if DeviceName <> '' then
    if DeviceValue > 0 then
      VideoRAMPanel.Text := ' ' + DelSp(DeviceName) + ', '+ ByteOrTB(DeviceValue/oneMB, False)
    else
      VideoRAMPanel.Text := ' ' + DelSp(DeviceName) + ' (Standard), '+ ByteOrTB(DeviceValue/oneMB, False)
  else
    begin
      VideoRAMPanel.Text := ' Драйвер устройства не обнаружен'
      VideoRAMPanel.Color := $CCCCFF
      ChangeText := True
    end
  if (DeviceValue/oneMB < NeedVideoRAM) then
    begin
      VideoRAMPanel.Color := $CCCCFF
      ChangeText := True
    end
  VideoRAMPanel.Text := VideoRAMPanel.Text + ', ' + IntToStr(GetSystemMetrics(0)) + 'x' +
                        IntToStr(GetSystemMetrics(1)) + ' (' + IntToStr(GetDeviceCaps(CreateDC('DISPLAY','','',0),14) *
                        GetDeviceCaps(CreateDC('DISPLAY','','',0),12)) + ' bit)'

  // Звуковая карта:
  AudioNamePanel.Color := $CCFFCC

  // for errCode := 0 to 1 do  // Вывод основного звукового устройства
  for errCode := 0 to mixerGetNumDevs do
    begin
                  mixerGetDevCaps(errCode-1, lpCaps, SizeOf(lpCaps))
      DeviceName := ' '
                  for n := 0 to 31 do DeviceName := DeviceName + lpCaps.sName[n]
      Delete(DeviceName, Pos(Chr(0), DeviceName), 31)
      Delete(DeviceName, Pos(' [', DeviceName), 31)
      StringChange(DeviceName, 'SB ', 'Creative ')
      Delete(DeviceName, Pos(' Audio', DeviceName), 31)
                  SetArrayLength(Keys, errCode)
      if errCode > 0 then Keys[errCode-1] := DeviceName
    end

        if GetArrayLength(Keys) > 1 then
    begin
    AudioPanel.Text := 'Звуковые карты'
    // AudioPanel.Text := 'Звуковые карты (' + IntToStr(GetArrayLength(Keys)) +')'
    AudioNamePanel.Text := ''
    for n := 1 to GetArrayLength(Keys) do
        AudioNamePanel.Text := AudioNamePanel.Text + Keys[n-1]  // + '(' + IntToStr(n) + ')'
    end
  else
    if GetArrayLength(Keys) = 0 then
    begin
      AudioNamePanel.Text := ' Драйвер устройства не обнаружен'
      AudioNamePanel.Color := $CCCCFF
      ChangeText := True
    end
      else
      AudioNamePanel.Text := Keys[0]
  if Pos(NeedSoundCard, AudioNamePanel.Text) = 0 then
    AudioNamePanel.Text := AudioNamePanel.Text + ' (рекомендуется ' + NeedSoundCard + ')'

  // Объём памяти:
    RAMTotalPanel.Color := $CCFFCC
  if not CheckMemorySize(NeedMB) then
    begin
      RAMTotalPanel.Color := $CCCCFF
      ChangeText := True
    end
  RAMTotalPanel.Text := ' ' + ByteOrTB(ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16), False) + ' всего, ' +
                              ByteOrTB(ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16) -
                                                        Size64(MemoryEx.HiAvailPhys, MemoryEx.LoAvailPhys)/oneMB, False) + ' используется, ' +
                              ByteOrTB(Size64(MemoryEx.HiAvailPhys, MemoryEx.LoAvailPhys)/oneMB, False) + ' свободно'

  // Виртуальная память:
  PageFileTotalPanel.Color := $CCFFCC
  PageFileTotalPanel.Text := ' ' + ByteOrTB(Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile)/oneMB, False) + ' всего, ' +
                                  ByteOrTB((Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile) -
                                            Size64(MemoryEx.HiAvailPageFile, MemoryEx.LoAvailPageFile))/oneMB, False) + ' занято системным кэшем'
  if Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile)/oneMB < NeedPageFile then
    begin
      PageFileTotalPanel.Color := $CCCCFF
      ChangeText := True
    end

  if ChangeText = True then
    begin
      TopText.Top := 0
      TopText.Caption := 'Не все компоненты удовлетворяют минимальным требованиям.' #13
                        'Пожалуйста, проверьте позиции, выделенные красным цветом.'
      TopText.Font.Color := clRed
      WizardForm.NextButton.Enabled := False
    end
  else
    begin
      TopText.Caption := 'Все компоненты соответствуют минимальным требованиям.'
      TopText.Font.Color := clGreen
      TopText.Top := 8
      WizardForm.NextButton.Enabled := True
    end

end;

procedure InitializeWizard();
begin
  InfoPage := CreateCustomPage(wpLicense, 'Аппаратное и программное обеспечение',
                                          'Программа установки обнаружила следующие наобходимые компоненты.')
  CreateCheckForm()  // Создание объектов TMemo, в которых будет выводится информация о системе
  UpdateInfo()  // Обновление информации о системе
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = InfoPage.ID then UpdateInfo()  // Обновление информации о системе
end;


S.E.K.T.O.R. 30-09-2009 03:35 1230871

Вложений: 1
Ну во-первых, Serega, спасибо, что откликнулись!

Может я неправильно изложил суть проблемы, так вот: у меня есть скрипт проверки сист.требований, но без проверки ОС

Для этого я нашел скрипт с проверкой ОС и хочю добавить нужные строки в свой скрипт (т.е. строки для проверки ОС), чтобы в итоге получить вот это

Панели я создал (WindowsPanel, WindowsNamePanel), а вот добавить к ним все остальное нужное для проверки ОС не получается. Просьба: помогите добавить проверку ОС из
скрипта 1
Код:

var  state: boolean;

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;

var
  ListBox: TListBox;
  Text: TNewStaticText;

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

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

function GetVideoCardName(): PChar;
  external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

function GetSoundCardName(): PChar;
  external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';

function DetectHardware(): Integer;
  external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
  external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: integer): PChar;
  external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
  external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
  external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetSoundCards(): Integer;
  external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';

function GetSystemPage(): Integer;
  external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';

function GetSystemPhys(): Integer;
  external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';

function GetVidMemLocal(): Integer;
  external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';

function GetVidMemNonLocal(): Integer;
  external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';

function GetVideoCardDev(): Integer;
  external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';

function GetVideoCardVen(): Integer;
  external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';

function DelSp(const s: string): string; // функция удаления пробелов в начале строки
var
  c, i: integer;
  stt, st, st1: string;
begin
  c := 0;
  st := s;

  for i := 1 to Length(st) do
  begin

    stt := copy(st, i, 1);
    if (stt = ' ') and (c >= 1) then
    begin
      st1 := st1;
      c := c + 1;
    end
    else if (stt = ' ') and (c = 0) then
    begin
      c := c + 1;
      st1 := st1 + stt;
    end
    else if (stt <> ' ') then
    begin
      c := 0;
      st1 := st1 + stt;
    end
  end;

  Result := st1;
end;

procedure CurPageChanged(CurPageID: Integer);
var
  Page: TWizardPage;
  Text: TNewStaticText;
  Memo,Windows,SP,Version,Build,registered,WindowsName,SP_Num,Version_Num,Build_num,registered_name: TMemo;
  Os,OS1: string; // строка с названием необходимой ОС
  // state: boolean;

  ProcessorName: string;
  Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel: TMemo;
  ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;
  ProcessorMHZ: Cardinal;
  StaticText, StaticText2: TNewStaticText;
  VidRam: integer;

begin
 if CurPageID = wpUserInfo then
  begin
  //подменяем сраницу информации о пользователе на информацию об ОС
    wizardForm.UserInfoNameEdit.visible:=false;
    wizardForm.UserInfoNameEdit.text:='Игрок'; //на случай, когда имя пользователя не указано в системе
    wizardForm.UserInfoNameLabel.visible:=false;
    wizardForm.UserInfoOrgLabel.visible:=false;
    wizardForm.UserInfoOrgEdit.visible:=false;
    wizardForm.UserInfoOrgEdit.text:='Группа игроков ';//на случай, когда организация не указано в системе
    wizardForm.PageNameLabel.Caption := 'Аппаратное обеспечение и Операционная система';
    wizardForm.PageDescriptionLabel.Caption := 'Программа установки обнаружила следующие необходимые компоненты и Операционную систему ';
    RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
    RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);

  OS:=' Microsoft Windows XP Service Pack 2'; //строка является суммой из записей в реестре о Наименовании ОС и сервис-паке
  OS1:=' Microsoft Windows 2000 Service Pack 4'; //строка является суммой из записей в реестре о Наименовании ОС и сервис-паке

  Windows := TMemo.Create(WizardForm);

  StaticText := TNewStaticText.Create(TNewStaticText.Create(WizardForm));
  with StaticText do begin
    Left := 0;
    Top := 52;
    Width := 417;
    Height := 14;
    Caption := 'Все компоненты удовлетворяют требованиям игры.';
    Parent := WizardForm.UserInfoPage;
    StaticText.font.color:=clGreen;
  end


  with Windows do
  begin
    Text := ' Операц. система';
    Parent := WizardForm.UserInfoPage;

    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(20);
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;
    Color := clBtnFace;
  end
    Processor := TMemo.Create(WizardForm);
  with Processor do begin
    Text := ' Процессор';
    Parent := WizardForm.UserInfoPage;

    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(77);
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;
    Color := clBtnFace;
  end
    VideoCardPanel := TMemo.Create(WizardForm);
  with VideoCardPanel do begin
    Text := ' Видеоадаптер';
    Parent := WizardForm.UserInfoPage;

    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(104);
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;
    Color := clBtnFace;
  end
    AudioCardPanel := TMemo.Create(WizardForm);
  with AudioCardPanel do begin
    Text := ' Звуковая карта';
    Parent := WizardForm.UserInfoPage;
    Color := clBtnFace;
    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(131);
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;

  end
    RAMPanel := TMemo.Create(WizardForm);
  with RAMPanel do begin
    Text := ' ОЗУ';
    Parent := WizardForm.UserInfoPage;
    Color := clBtnFace;
    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(158);
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.


    ReadOnly := True;

  end

  PageFilePanel := TMemo.Create(WizardForm);
  with PageFilePanel do begin
    Text := ' Файл подкачки';
    Parent := WizardForm.UserInfoPage;
    Color := clBtnFace;
    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(185);
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.


    ReadOnly := True;

    ProcessorNamePanel := TMemo.Create(WizardForm);
  with ProcessorNamePanel do begin

    Text := DelSP(ProcessorName) + '  ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
    Parent := WizardForm.UserInfoPage;

    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(77);
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;
    Color := $CCFFCC;

    if ProcessorMHZ < 1800 then
  begin
    ProcessorNamePanel.Color := $ccccff;
    StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
    StaticText.font.color:=clRed;
  end;

  VideoCardNamePanel := TMemo.Create(WizardForm);
  with VideoCardNamePanel do begin
    Text :=  ' ' + GetVideoCardName; //+'    ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ'
    Parent := WizardForm.UserInfoPage;
    VidrAM := GetVidMemLocal / 1000000;

    if VidRam > 127 then
    begin
      if VidRam < 200 then text := text + ' ОЗУ - 128 МB'
      else if VidRam < 300 then text := text + ' ОЗУ - 256 МB'
      else if VidRam < 400 then text := text + ' ОЗУ - 384 МB'
      else if VidRam > 500 then text := text + ' ОЗУ - 512 МB';
    end;

    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(104);
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;
    Color := $CCFFCC;

    if GetVidMemLocal < 127000000 then //128 MB
  begin
    StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
    StaticText.font.color:=clRed;
    VideoCardNamePanel.Color := $ccccff;
  end;


  end
    AudioCardNamePanel := TMemo.Create(WizardForm);
  with AudioCardNamePanel do begin
    Text := ' ' + GetSoundCardName;
    Parent := WizardForm.UserInfoPage;
    Color := $CCFFCC;
    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(131);
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R

    ReadOnly := True;

  end
    RAMTotalPanel := TMemo.Create(WizardForm);
  with RAMTotalPanel do begin
    Text :=  ' ' + IntToStr(GetSystemPhys + 1) + ' MB';
    Parent := WizardForm.UserInfoPage;
    Color := $CCFFCC;

    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(158);
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;
    if GetSystemPhys + 1 < 1024 then
  begin
    RAMTotalPanel.Color := $ccccff;
    StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
    StaticText.font.color:=clRed;
  end;
  end;

  PageFileTotalPanel := TMemo.Create(WizardForm);
  with PageFileTotalPanel do begin
    Text :=  ' ' + IntToStr(GetSystemPage) + ' MB';
    Parent := WizardForm.UserInfoPage;
    Color := $CCFFCC;

    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(185);
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;
    if GetSystemPage < 1247 then
  begin
    PageFileTotalPanel.Color := $ccccff;
    StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
    StaticText.font.color:=clRed;
  end;
  end;


  end

  if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')='' then
  begin

    WindowsName := TMemo.Create(WizardForm);
    with WindowsName do begin
    Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CSDVersion|}');
    Parent := WizardForm.UserInfoPage;

    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(20);
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;
    Color := $CCFFCC;
  end

  end

 end;

 // Проверка Windows 9x
  if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')<>'' then
  begin
  WindowsName := TMemo.Create(WizardForm);
  with WindowsName do begin
    Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,CSDVersion|}');
    Parent := WizardForm.UserInfoPage;
    Color := $CCFFCC;
    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(20);
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;

  end

  end;


  if OS=(WindowsName.Text) then state:=true else
  if OS1=(WindowsName.Text) then state:=true else state:=false;

  Text := TNewStaticText.Create(WizardForm);
    with Text do begin
    Left := 0;
    Top := 0;
    Width := 417;
    Height := 14;
    if state then
    begin
      Font.Color:=clGreen;
      WindowsName.color:=$CCFFCC;
    // SP_Num.color:=$CCFFCC;
      Caption := 'Операционная система соответствует требованиям игры.';
    end
    else
    begin
      Font.Color:=clREd;
      WindowsName.color:=clRed;

      WindowsName.Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
      WindowsName.Top := ScaleY(20);
      WindowsName.Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
      WindowsName.Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
      WindowsName.ReadOnly := True;



      Caption := 'Операционная система не соответствует требованиям игры.';
    end
    Parent := WizardForm.UserInfoPage;
  end
    Text := TNewStaticText.Create(TNewStaticText.Create(WizardForm));
  with Text do begin
    Left := 0;
    Top := 220;
    Width := 417;
    Height := 14;
    Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».';
    Parent := WizardForm.UserInfoPage;
  end




  if not state then
    begin
      wizardForm.Nextbutton.enabled:=false;
    end;
 end;
end;

в
скрипт 2
Код:

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;

var
  ListBox: TListBox;
  Text: TNewStaticText;

function GetVideoCardName(): PChar;
  external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

function GetSoundCardName(): PChar;
  external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';

function DetectHardware(): Integer;
  external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
  external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: integer): PChar;
  external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
  external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
  external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetSoundCards(): Integer;
  external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';

function GetSystemPage(): Integer;
  external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';

function GetSystemPhys(): Integer;
  external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';

function GetVidMemLocal(): Integer;
  external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';

function GetVidMemNonLocal(): Integer;
  external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';

function GetVideoCardDev(): Integer;
  external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';

function GetVideoCardVen(): Integer;
  external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';

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

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

function DelSp(const s: string): string; //функция удаления табуляции и пробелов в начале строки
var
  c, i: integer;
  stt, st, st1: string;
begin
  c := 0;
  st := s;

  for i := 1 to Length(st) do
  begin

    stt := copy(st, i, 1);
    if (stt = ' ') and (c >= 1) then
    begin
      st1 := st1;
      c := c + 1;
    end
    else if (stt = ' ') and (c = 0) then
    begin
      c := c + 1;
      st1 := st1 + stt;
    end
    else if (stt <> ' ') then
    begin
      c := 0;
      st1 := st1 + stt;
    end
  end;

  Result := st1;
end;

function CheckSystemPage(PreviousPageId: Integer): Integer;
var
  Page: TWizardPage;
  ProcessorName: string;

  Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel, WindowsPanel: TMemo;
  ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel, WindowsNamePanel: TMemo;

  ProcessorMHZ: Cardinal;
  StaticText, StaticText2: TNewStaticText;
  VidRam: integer;
begin
  RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
  RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);
  GetVidMemLocal;
  GetSoundCards;

  Page := CreateCustomPage(PreviousPageId, 'Аппаратное Обеспечение', 'Программа установки обнаружила следующие необходимые компоненты');

  StaticText := TNewStaticText.Create(Page);
  with StaticText do
  begin
    Parent := Page.Surface;
    Caption := 'Все компоненты удовлетворяют требованиям игры.';
    Left := 0;
    Top := 0;
    AutoSize := True;
  end;

  StaticText2 := TNewStaticText.Create(Page);
  with StaticText2 do
  begin
    Parent := Page.Surface;
    Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».';
    Left := 0;
    Top := 220;
    AutoSize := True;
  end;

//******************************************* [Начало - Операционная система] ***************************************************//

  WindowsPanel := TMemo.Create(Page);
  with WindowsPanel do
  begin
    Text := ' Операц. система';
    Parent := Page.Surface;

    Left := ScaleX(0);
    Top := ScaleY(165);
    Width := ScaleX(106);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := clBtnFace;
  end;

  WindowsNamePanel := TMemo.Create(Page);
  with WindowsNamePanel do
  begin

  if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')='' then
  begin

  WindowsNamePanel := TMemo.Create(Page);
  with WindowsNamePanel do
  begin
    Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CSDVersion|}');
    Parent := Page.Surface;

    Left := ScaleX(110);
    Top := ScaleY(165);
    Width := ScaleX(304);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := $CCFFCC;
  end
  end
 end;
 //дальше не получается
 

//******************************************* [Конец - Операционная система] ***************************************************//


//******************************************* [Начало - Процессор] ***************************************************//

  Processor := TMemo.Create(Page);
  with Processor do
  begin
    Text := ' Процессор';
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    Left := ScaleX(0);
    Top := ScaleY(30);
    Width := ScaleX(106);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := clBtnFace;
  end;


  ProcessorNamePanel := TMemo.Create(Page);
  with ProcessorNamePanel do
  begin
    Text := DelSP(ProcessorName) + '  ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
//Caption :=ProcessorName+'  '+IntToStr(ProcessorMHZ)+'MHz' ;
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    Left := ScaleX(110);
    Top := ScaleY(30);
    Width := ScaleX(304);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := $CCFFCC;
  end;

  if ProcessorMHZ < 1800 then //Минимальное количество частоты в MHz
  begin
    StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
    ProcessorNamePanel.Color := $CCCCFF;
  end;


//******************************************* [Конец - Процессор] ****************************************************//


//******************************************* [Начало - Видеоадаптер] ************************************************//

  VideoCardPanel := TMemo.Create(Page);
  with VideoCardPanel do
  begin
    Text := ' Видеоадаптер';
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    Left := ScaleX(0);
    Top := Processor.Top + 27;
    Width := ScaleX(106);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := clBtnFace;
  end;

  VideoCardNamePanel := TMemo.Create(Page);
  with VideoCardNamePanel do
  begin
    Text := ' ' + GetVideoCardName; //+'    ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ';
//Caption:='    ОЗУ-'+inttostr(GetVidMemLocal)+' МБ';
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    VidrAM := GetVidMemLocal / 1000000;

    if VidRam > 127 then
    begin
      if VidRam < 200 then Text := Text + '128 МB'
      else if VidRam < 300 then Text := Text + '256 МB'
      else if VidRam < 400 then Text := Text + '384 МB'
      else if VidRam > 500 then Text := Text + '512 МB';
    end;

    Left := ScaleX(110);
    Top := VideoCardPanel.Top;
    Width := ScaleX(304);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := $CCFFCC;
  end;

  if GetVidMemLocal < 127000000 then //Минимальное объем ОЗУ [в байтах] у видеоадаптера 128 MB
  begin
    StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
    VideoCardNamePanel.Color := $CCCCFF;
  end;

//******************************************* [Конец - Видеоадаптер] *************************************************//


//******************************************* [Начало - Звуковая карта] **********************************************//

  AudioCardPanel := TMemo.Create(Page);
  with AudioCardPanel do
  begin
    Text := ' Звуковая карта';
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    Left := ScaleX(0);
    Top := VideoCardPanel.Top + 27;
    Width := ScaleX(106);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := clBtnFace;
  end;

  AudioCardNamePanel := TMemo.Create(Page);
  with AudioCardNamePanel do
  begin
    Text := ' ' + GetSoundCardName;
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    Left := ScaleX(110);
    Top := AudioCardPanel.Top;
    Width := ScaleX(304);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := $CCFFCC;
  end;

  if
    GetSoundCards = 0 then
  begin
    StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
    AudioCardNamePanel.Color := $CCCCFF;
  end;

//******************************************* [Конец - Звуковая карта] ***********************************************//


//******************************************* [Начало - ОЗУ] *********************************************************//

  RAMPanel := TMemo.Create(Page);
  with RAMPanel do
  begin
    Text := ' Память';
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    Left := ScaleX(0);
    Top := AudioCardPanel.Top + 27;
    Width := ScaleX(106);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := clBtnFace;
  end;

  RAMTotalPanel := TMemo.Create(Page);
  with RAMTotalPanel do
  begin
    Text := ' ' + IntToStr(GetSystemPhys + 1) + ' MB';
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    Left := ScaleX(110);
    Top := RAMPanel.Top;
    Width := ScaleX(304);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := $CCFFCC;
  end;

  if GetSystemPhys + 1 < 1024 then //Минимальное объем ОЗУ 1 Гб или 1024 Мб
  begin
    StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
    RAMTotalPanel.Color := $CCCCFF;
  end;

//******************************************* [Конец - ОЗУ] **********************************************************//


//******************************************* [Начало - Файл подкачки] ***********************************************//

  PageFilePanel := TMemo.Create(Page);
  with PageFilePanel do
  begin
    Text := ' Файл подкачки';
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    Left := ScaleX(0);
    Top := RAMPanel.Top + 27;
    Width := ScaleX(106);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := clBtnFace;
  end;

  PageFileTotalPanel := TMemo.Create(Page);
  with PageFileTotalPanel do
  begin
    Text := ' ' + IntToStr(GetSystemPage) + ' MB';
    Alignment := taLeftJustify;
    Parent := Page.Surface;

    Left := ScaleX(110);
    Top := PageFilePanel.Top;
    Width := ScaleX(304);
    Height := ScaleY(22);

    ReadOnly := True;
    Color := $CCFFCC;
  end;

  if GetSystemPage < 2048 then //Минимальное объем файла [в мегабайтах] подкачки 1 Гб или 1024 Мб
  begin
    StaticText.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям игры.'#13+'Проверьте соответствие системным требованиям.';
    PageFileTotalPanel.Color := $CCCCFF;
  end;

  Result := Page.ID;
end;

//******************************************* [Конец - Файл подкачки] ************************************************//

procedure ListBoxOnClick(Sender: TObject);
var
  NewLetter, OldString: string;
  i: Integer;
begin
  for i := 0 to ListBox.Items.Count - 1 do
  begin
    if ListBox.Selected[i] then
    begin
      NewLetter := Copy(ListBox.Items[i], 0, 1);
      OldString := Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
      WizardForm.DirEdit.Text := NewLetter + OldString;
    end;
  end;
end;

procedure InitializeWizard();
var
  Page: TWizardPage;
  Text: TNewStaticText;
  Memo: TMemo;
  Path: string;
  FreeMB, TotalMB: Cardinal;
  drives: DWORD;
  i: integer;
begin
  CheckSystemPage(wpLicense);

  Text := TNewStaticText.Create(WizardForm);
  Text.Top := 110;
  Text.Width := 332;
  Text.Height := 14;
  Text.Caption := 'Список жестких дисков и свободного места';
  Text.Parent := WizardForm.SelectDirPage;

  ListBox := TListBox.Create(WizardForm);
  ListBox.Top := 128;
  ListBox.Width := 208;
  ListBox.Height := ScaleY(84);
  ListBox.Parent := WizardForm.SelectDirPage;
  ListBox.OnClick := @ListBoxOnClick;
  ListBox.Font.Name := 'Courier New';
  ListBox.Font.Size := 10;
  ListBox.Font.Style := [fsBold];
  ListBox.Color := clBtnFace;

  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);
        if FreeMB>1024 then ListBox.Items.Add(Path + '  ' + IntToStr(round(FreeMB / TotalMB * 100)) + '%  ' + floatToStr(round(FreeMB/1024*100)/100) + ' GB')
        else ListBox.Items.Add(Path + '  ' + IntToStr(round(FreeMB / TotalMB * 100)) + '%  ' + IntToStr(FreeMB) + ' MB');
      end;
    end;
  end;
end;



P.S.
Вы мне помогали со следующим
кодом
Код:

function InitializeSetup: Boolean;
var
  path: string;
  res: Integer;
begin
  Result:= True;
  if RegValueExists(HKLM, 'Software\My Program', 'InstallPath') then
    if RegQueryStringValue(HKLM, 'Software\My Program', 'InstallPath', path) then
      if FileExists(path + '\MyProg.exe') then
  if MsgBox('Запустить My Program?', mbConfirmation, MB_YESNO) = IDYES then
    begin
      Exec(path + '\MyProg.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
      Result:= False;
    end;
end;

можно, чтобы при нажатии кнопки "Нет" инсталлятор закрывался, а не начинал установку

S.E.K.T.O.R. 30-09-2009 03:41 1230872

Цитата:

Цитата Serega
Пример проверки системы, без get_hw_caps.dll »

спасибо за пример, но этот вариант у меня есть (Ultimate Test). Мне кажется, что мой вариант намного удобней в использовании.

Serega 01-10-2009 00:50 1231595

Цитата:

Цитата S.E.K.T.O.R.
Панели я создал (WindowsPanel, WindowsNamePanel), а вот добавить к ним все остальное нужное для проверки ОС не получается »

Я не совсем понял, вы просите добавить проверку ОС, но в первом и во втором скрипте она есть.

1:


2:


Цитата:

Цитата S.E.K.T.O.R.
Вы мне помогали со следующим »

пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

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

[Registry]
Root: HKLM; Subkey: Software\My Program; ValueType: string; ValueName: InstallPath; ValueData: {app}; Flags: uninsdeletekey

[Code]
function InitializeSetup: Boolean;
var
  path: string;
  res: Integer;
begin
  Result:= True;
  if RegValueExists(HKLM, 'Software\My Program', 'InstallPath') then
    if RegQueryStringValue(HKLM, 'Software\My Program', 'InstallPath', path) then
      if FileExists(path + '\MyProg.exe') then
  if MsgBox('Запустить My Program?', mbConfirmation, MB_YESNO) = IDYES then
    begin
      Exec(path + '\MyProg.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
      Result:= False;
    end
  else Result:= False;
end;


S.E.K.T.O.R. 01-10-2009 01:27 1231631

Цитата:

Цитата Serega
Я не совсем понял, вы просите добавить проверку ОС, но в первом и во втором скрипте она есть. »

Serega Вы снова меня не правильно поняли (Вы наверное сам код не посмотрели). В 1-ом скрипте проверка действительно есть, а во 2-ом лишь кусок (посмотрите внимательно код) т.е. надо добавить из первого еще вот
это
Код:

procedure CurPageChanged(CurPageID: Integer);
var
  Page: TWizardPage;
  Text: TNewStaticText;
  Memo,Windows,SP,Version,Build,registered,WindowsName,SP_Num,Version_Num,Build_num,registered_name: TMemo;
  Os,OS1: string; // строка с названием необходимой ОС
  // state: boolean;

  OS:=' Microsoft Windows XP Service Pack 2'; //строка является суммой из записей в реестре о Наименовании ОС и сервис-паке
  OS1:=' Microsoft Windows 2000 Service Pack 4'; //строка является суммой из записей в реестре о Наименовании ОС и сервис-паке

 // Проверка Windows 9x
  if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')<>'' then
  begin
  WindowsName := TMemo.Create(WizardForm);
  with WindowsName do begin
    Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,CSDVersion|}');
    Parent := WizardForm.UserInfoPage;
    Color := $CCFFCC;
    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(20);
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

    ReadOnly := True;

  end

  end;


  if OS=(WindowsName.Text) then state:=true else
  if OS1=(WindowsName.Text) then state:=true else state:=false;

  Text := TNewStaticText.Create(WizardForm);
    with Text do begin
    Left := 0;
    Top := 0;
    Width := 417;
    Height := 14;
    if state then
    begin
      Font.Color:=clGreen;
      WindowsName.color:=$CCFFCC;
    // SP_Num.color:=$CCFFCC;
      Caption := 'Операционная система соответствует требованиям игры.';
    end
    else
    begin
      Font.Color:=clREd;
      WindowsName.color:=clRed;

      WindowsName.Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
      WindowsName.Top := ScaleY(20);
      WindowsName.Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
      WindowsName.Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
      WindowsName.ReadOnly := True;



      Caption := 'Операционная система не соответствует требованиям игры.';
    end



P.S. Вы говорили, что навернное нельзя отключить сообщение "Недостаточно места на диске". А может тогда можно его изменить, т.е. сделать таким
либо дать команду инсталлятору выводить вместо него
такое
Код:

function NextButtonClick(CurPageID: Integer): Boolean;
var
  Path,s: 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*1024) then
    begin
      if FreeMB>1024 then
      begin
      s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ floatToStr(round(FreeMB/1024*100)/100) + ' GB!'
      end
        else s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ + IntToStr(FreeMB)+' MB';
      MsgBox(s, mbCriticalError, MB_OK)
        Result := False;
    end;
    end;
end;


Ведь в инсталке Сталкера как-то сделали

A1EXXX 01-10-2009 15:27 1231970

Вышла новая версия ISTool 5.3.0.1 (29.09.2009)

Изменения:
Fixed unicode bug

Lancer2404 02-10-2009 20:48 1233018

как сделать чтобы при указании пути инсталлятор не приписывал дефолтную папку.
пример путь С:\Driver (выбираешь через обзор)
а он в конце приписывает (параметр defaultdirname) допустим Новая папка.Как сделать чтоб он вообще ничего не приписывал?Спасибо

serg aka lain 02-10-2009 22:24 1233078

Цитата:

Цитата Lancer2404
(параметр defaultdirname) допустим Новая папка.Как сделать чтоб он вообще ничего не приписывал? »

[Setup]
AppendDefaultDirName=False

Lancer2404 03-10-2009 11:52 1233339

спасибо.а можете дать список похожих команд.вдруг пригодятся?

Цитата:

[Setup] AppendDefaultDirName=False
ошибку выдает писал в секции [setup]

serg aka lain 03-10-2009 16:12 1233595

Цитата:

Цитата Lancer2404
ошибку выдает »

Если и так:
AppendDefaultDirName=no
выдаст ошибку, то ...

414895494 03-10-2009 16:13 1233597

Здраствуйте. Я тут новинький. Хочу научится делать красивые инсталяторы.
Можете добрые люди научить меня? Буду очень признателен.





Вот этому можете меня научить?

A1EXXX 03-10-2009 17:22 1233658

414895494, код для растягивания картинки страницы приветствия:
читать дальше »

[Files]
Source: C:\fon.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
var
WelcomeLabel1, WelcomeLabel2: TLabel;
BmpFile: TBitmapImage;

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

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\fon.bmp'));
BmpFile.SetBounds(0, 0, 497, 320);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.WelcomePage;

with WizardForm do
begin
WelcomeLabel1.Hide;
WelcomeLabel2.hide;
end;

WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do
begin
WelcomeLabel1.Alignment:=taCenter;
Left:= ScaleX(176);
Top:= ScaleY(66);
Width:= ScaleX(301);
Height:= ScaleY(71);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Name:='Tahoma'
Font.Size:= 12;
Font.Color:=ClWhite
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel1.Caption;
end;

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do
begin
WelcomeLabel2.Alignment:=taCenter;
Top:= ScaleY(136);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(300);
AutoSize:= false;
WordWrap:= true;
Font.Color:=ClWhite
Font.Name:='Segoe UI'
Transparent:= true;
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel2.Caption;
end;
end;

Картинка в левый нижний угол:
читать дальше »

[Files]
Source: C:\logo.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
var
LogoImage:TBitmapImage;
LogoLabel: TLabel;
LogoPanel: TPanel;

procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://сайт.ру', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('logo.bmp');
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(5);
Top := ScaleY(320);
Width := ScaleX(165);
Height := ScaleY(35);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent := LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoOnClick;
end;
end;

Растянуть верхнюю картинку:
читать дальше »

[code]
procedure InitializeWizard();
begin
with WizardForm do begin
with MainPanel do
Height := Height - 1;
with WizardSmallBitmapImage do begin
Left := 0;
Top := 0;
Height := 58; //Размер рисунка
Width := 497; //
end;
with PageNameLabel do begin
Font.Name := 'Tahoma'
Width := Width - 497; //Поставьте здесь значения на 0, если хотите вернуть текст
Left := Left + 497; //
end;
with PageDescriptionLabel do begin
Font.Name := 'Tahoma'
Width := Width - 497; //Поставьте здесь значения на 0, если хотите вернуть текст
Left := Left + 497; //
end;
end;
end;

Для объединения скриптом рекомендую ISS Joiner (как начинающему)
P.S. Всё это не раз обсуждалось, юзай поиск ;)

414895494 03-10-2009 17:27 1233661

A1EXXX,
Спасибо большое.

user_123 03-10-2009 18:31 1233744

Подскажите, как сделать, чтобы выводился запрос на удаление подкаталога {app}\log (по умолчанию не должен удаляться)при деинсталляции приложения?

Код:

function <...>(): Boolean;
begin
  if MsgBox(''+ ExpandConstant('{cm:removelogs}') +'', mbInformation, mb_YesNo) = idYes then
    begin
      <...>
    end;
end;


Lancer2404 03-10-2009 19:44 1233807

Цитата:

Цитата serg aka lain
Если и так:
AppendDefaultDirName=no
выдаст ошибку, то ... »

не работает в чем дело?

все решил проблему.А не подскажете какой ключ в реестре отвечает за добавление ярлыков в папку игры на windows vista?

GrizzlyMK 03-10-2009 19:59 1233819

Подскажите
Можно картинку поместить не тольно на стронице приветствия.
А напротежение всей устоновки..
И как можно увеличеть окно инстала.
Зарание спасибо.

serg aka lain 03-10-2009 20:24 1233844

Цитата:

Цитата Lancer2404
А не подскажете какой ключ в реестре отвечает за добавление ярлыков в папку игры на windows vista? »

За это отвечает GameuxInstallHelper.dll

Lancer2404 03-10-2009 20:58 1233871

А поподробнее можно а то я новичек в этом деле

Lancer2404 03-10-2009 21:23 1233892

Спасибо.

serg aka lain 03-10-2009 21:25 1233894

Цитата:

Цитата Lancer2404
А поподробнее можно а то я новичек в этом деле »

Можно, нужна сама библиотека "GameuxInstallHelper.dll".

Сам скрипт (Пример для юникод версии Inno):
читать дальше »

Код:

[Setup]
AppName=Call of Juarez - Bound in Blood
AppVerName=Call of Juarez - Bound in Blood
DefaultDirName={pf}\Call of Juarez - Bound in Blood
OutputDir=userdocs:CoJ_Install.
 
[Files]
Source: "GameuxInstallHelper.dll"; DestDir: "{app}"; Flags: ignoreversion overwritereadonly;
Source: "CoJBiBGame_x86.exe"; DestDir: "{app}"; Flags: ignoreversion;
 
[code]
 
const
  PlayTask = 0;
 
type
  TGUID = record
  Data1: Cardinal;
  Data2,
  Data3: Word;
  Data4: array [0..7] of char;
end;
 
function GenerateGUID(var GUID: TGUID): Cardinal;
 external 'GenerateGUID@files:GameuxInstallHelper.dll stdcall setuponly';
function AddToGameExplorer(Binary: String; Path: String; InstallType: Integer; var GUID: TGUID): Cardinal;
 external 'AddToGameExplorerW@files:GameuxInstallHelper.dll stdcall setuponly';
function CreateTask(InstallType: Integer; var GUID: TGUID; TaskType: Integer; TaskNumber: Integer; TaskName: String; Binary: String; Parameters: String): Cardinal;
 external 'CreateTaskW@files:GameuxInstallHelper.dll stdcall setuponly';
function RetrieveGUIDForApplication(Binary: String; var GUID: TGUID): Cardinal;
 external 'RetrieveGUIDForApplicationW@{app}\GameuxInstallHelper.dll stdcall uninstallonly';
function RemoveFromGameExplorer(var GUID: TGUID): Cardinal;
 external 'RemoveFromGameExplorer@{app}\GameuxInstallHelper.dll stdcall uninstallonly';
function RemoveTasks(var GUID: TGUID): Cardinal;
 external 'RemoveTasks@{app}\GameuxInstallHelper.dll stdcall uninstallonly';
 
var
  GUID: TGUID;
 
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
    GenerateGUID(GUID);
  if CurStep = ssPostInstall then
  begin
    AddToGameExplorer(ExpandConstant('{app}\CoJBiBGame_x86.exe'), ExpandConstant('{app}'), 3, GUID);
    CreateTask(3, GUID, PlayTask, 0, 'Play', ExpandConstant('{app}\CoJBiBGame_x86.exe'), '');
  end;
end;
 
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usUninstall then
  begin
    RetrieveGUIDForApplication(ExpandConstant('{app}\CoJBiBGame_x86.exe'), GUID);
    RemoveFromGameExplorer(GUID);
    RemoveTasks(GUID);
 
    UnloadDll(ExpandConstant('{app}\GameuxInstallHelper.dll'));
  end;
end;


Lancer2404 03-10-2009 21:34 1233903

А вот я растягиваю картинку на весь экран,а при выборе компонентов,как сделать чтобы белого фона сзади не было?

414895494 04-10-2009 10:15 1234095

Помогите мне пожалуйста. Объедините пожалуйста эти скрипты:

читать дальше »

[code]
const
Color = clblack;

procedure InitializeWizard();
begin
WizardForm.PageNameLabel.Font.Color:=clWhite;
WizardForm.Font.Color:=clWhite;
WizardForm.Color:=Color;
WizardForm.WelcomePage.Color:=Color;
WizardForm.InnerPage.Color:=Color;
WizardForm.FinishedPage.Color:=Color;
WizardForm.LicensePage.Color:=Color;
WizardForm.PasswordPage.Color:=Color;
WizardForm.InfoBeforePage.Color:=Color;
WizardForm.UserInfoPage.Color:=Color;
WizardForm.SelectDirPage.Color:=Color;
WizardForm.SelectComponentsPage.Color:=Color;
WizardForm.SelectProgramGroupPage.Color:=Color;
WizardForm.SelectTasksPage.Color:=Color;
WizardForm.ReadyPage.Color:=Color;
WizardForm.PreparingPage.Color:=Color;
WizardForm.InstallingPage.Color:=Color;
WizardForm.InfoAfterPage.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.DiskSpaceLabel.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.GroupEdit.Color:=Color;
WizardForm.PasswordLabel.Color:=Color;
WizardForm.PasswordEdit.Color:=Color;
WizardForm.PasswordEditLabel.Color:=Color;
WizardForm.ReadyMemo.Color:=Color;
WizardForm.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
WizardForm.InfoBeforeClickLabel.Color:=Color;
WizardForm.MainPanel.Color:=Color;
WizardForm.PageNameLabel.Color:=Color;
WizardForm.PageDescriptionLabel.Color:=Color;
WizardForm.ReadyLabel.Color:=Color;
WizardForm.FinishedLabel.Color:=Color;
WizardForm.YesRadio.Color:=Color;
WizardForm.NoRadio.Color:=Color;
WizardForm.WelcomeLabel2.Color:=Color;
WizardForm.LicenseLabel1.Color:=Color;
WizardForm.InfoAfterClickLabel.Color:=Color;
WizardForm.ComponentsList.Color:=Color;
WizardForm.ComponentsDiskSpaceLabel.Color:=Color;
WizardForm.BeveledLabel.Color:=Color;
WizardForm.StatusLabel.Color:=Color;
WizardForm.FilenameLabel.Color:=Color;
WizardForm.SelectDirLabel.Color:=Color;
WizardForm.SelectStartMenuFolderLabel.Color:=Color;
WizardForm.SelectComponentsLabel.Color:=Color;
WizardForm.SelectTasksLabel.Color:=Color;
WizardForm.LicenseAcceptedRadio.Color:=Color;
WizardForm.LicenseNotAcceptedRadio.Color:=Color;
WizardForm.UserInfoNameLabel.Color:=Color;
WizardForm.UserInfoNameEdit.Color:=Color;
WizardForm.UserInfoOrgLabel.Color:=Color;
WizardForm.UserInfoOrgEdit.Color:=Color;
WizardForm.PreparingLabel.Color:=Color;
WizardForm.FinishedHeadingLabel.Color:=Color;
WizardForm.UserInfoSerialLabel.Color:=Color;
WizardForm.UserInfoSerialEdit.Color:=Color;
WizardForm.TasksList.Color:=Color;
WizardForm.RunList.Color:=Color;
WizardForm.SelectDirBrowseLabel.Color:=Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;
end;


читать дальше »

[code]
var
ProgressBar1: TNewProgressBar;

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

procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Visible:=false;
WizardForm.StatusLabel.Top:=ScaleY(81);
WizardForm.StatusLabel.Width:=ScaleX(262);
WizardForm.ProgressGauge.Top:=ScaleY(100);
WizardForm.ProgressGauge.Left:=ScaleX(155);
WizardForm.ProgressGauge.Width:=ScaleX(262);

ProgressBar1 := TNewProgressBar.Create(wizardform);
with ProgressBar1 do
begin
Parent := wizardform.installingpage;
Left := ScaleX(0);
Top := ScaleY(100);
Width := ScaleX(150);
Height := ScaleY(21);
Max := 3; //задается как кол-во файлов в [_run]
end;
end;



читать дальше »

[Files]
Source: D:\Влад\Скрипты Inno Setup\3Tq4d6iRHl.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
var
WelcomeLabel1, WelcomeLabel2: TLabel;
BmpFile: TBitmapImage;

procedure InitializeWizard4();
begin
ExtractTemporaryFile('3Tq4d6iRHl.bmp');

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\3Tq4d6iRHl.bmp'));
BmpFile.SetBounds(0, 0, 497, 320);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.WelcomePage;

with WizardForm do
begin
WelcomeLabel1.Hide;
WelcomeLabel2.hide;
end;

WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do
begin
WelcomeLabel1.Alignment:=taCenter;
Left:= ScaleX(176);
Top:= ScaleY(66);
Width:= ScaleX(301);
Height:= ScaleY(71);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Name:='Tahoma'
Font.Size:= 12;
Font.Color:=ClWhite
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel1.Caption;
end;

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do
begin
WelcomeLabel2.Alignment:=taCenter;
Top:= ScaleY(136);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(300);
AutoSize:= false;
WordWrap:= true;
Font.Color:=ClWhite
Font.Name:='Segoe UI'
Transparent:= true;
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel2.Caption;
end;
end;


читать дальше »

[Files]
Source: D:\Влад\Скрипты Inno Setup\d68840406b78.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
var
LogoImage:TBitmapImage;
LogoLabel: TLabel;
LogoPanel: TPanel;

procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://www.pirat.ca/forum/index.php', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;

procedure InitializeWizard3();
begin
ExtractTemporaryFile('d68840406b78.bmp');
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(5);
Top := ScaleY(320);
Width := ScaleX(165);
Height := ScaleY(35);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\d68840406b78.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent := LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoOnClick;
end;
end


читать дальше »

[code]
procedure InitializeWizard();
begin
with WizardForm do begin
with MainPanel do
Height := Height - 1;
with WizardSmallBitmapImage do begin
Left := 0;
Top := 0;
Height := 58; //Размер рисунка
Width := 497; //
end;
with PageNameLabel do begin
Font.Name := 'Tahoma'
Width := Width - 497; //Поставьте здесь значения на 0, если хотите вернуть текст
Left := Left + 497; //
end;
with PageDescriptionLabel do begin
Font.Name := 'Tahoma'
Width := Width - 497; //Поставьте здесь значения на 0, если хотите вернуть текст
Left := Left + 497; //
end;
end;
end;


и вот этот

читать дальше »

[Setup]
ExtraDiskSpaceRequired=4517483645
DiskSpanning=true
DiskSliceSize=1457664000
AppName=S.T.A.L.K.E.R. - Зов Припяти
AppVerName=S.T.A.L.K.E.R. - Зов Припяти v1.6.00
AppPublisher=CSKA-4empion
AppPublisherURL=http://www.pirat.ca
AppSupportURL=http://www.pirat.ca
AppUpdatesURL=http://www.pirat.ca
DefaultDirName={pf}\S.T.A.L.K.E.R. - Зов Припяти
DefaultGroupName=S.T.A.L.K.E.R. - Зов Припяти
OutputDir=D:\Влад\Инсталяторы Inno Setup\STALKER
OutputBaseFilename=setup
SetupIconFile=D:\Влад\Игры\S.T.A.L.K.E.R. - Зов Припяти\stalker_cop.ico
Compression=lzma/ultra64
SolidCompression=true
RestartIfNeededByRun=false
AllowCancelDuringInstall=true
DisableDirPage=false
EnableDirDoesntExistWarning=false
DirExistsWarning=yes
DisableProgramGroupPage=false
DisableReadyMemo=false
DisableReadyPage=false
AlwaysShowComponentsList=false
Uninstallable=true
DisableStartupPrompt=false
ShowComponentSizes=false
SlicesPerDisk=1
ReserveBytes=0
InfoBeforeFile=
LicenseFile=
PrivilegesRequired=none
InternalCompressLevel=ultra64
WizardSmallImageFile=D:\Влад\Скрипты Inno Setup\ec03e09c995c.bmp

[Languages]
Name: russian; MessagesFile: compiler:Default.isl

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

[Files]
Source: D:\Влад\Игры\S.T.A.L.K.E.R. - Зов Припяти\Stalker-COP.exe; DestDir: {app}; Flags: ignoreversion
Source: D:\Влад\Игры\S.T.A.L.K.E.R. - Зов Припяти\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
; ОТМЕТЬТЕ: Не используйте "Флажки: Проигнорировать версию" на любых общедоступных системных файлах

[Icons]
Name: {group}\Удалить игру; Filename: {uninstallexe}; WorkingDir: {app}
Name: {group}\S.T.A.L.K.E.R. - Зов Припяти; Filename: {app}\Stalker-COP.exe
Name: {userdesktop}\S.T.A.L.K.E.R. - Зов Припяти; Filename: {app}\Stalker-COP.exe; WorkingDir: {app}\; IconFilename: {app}\Stalker-COP.exe

[Run]
Filename: {src}\pack; Parameters: -x -y -s2 -d.; WorkingDir: {app}\; StatusMsg: Идет распаковка файлов игры...; Flags: shellexec waituntilterminated; Afterinstall: animateprogress
Filename: {app}\Stalker-COP.exe; Description: {cm:LaunchProgram,S.T.A.L.K.E.R. - Зов Припяти}; Flags: nowait postinstall skipifsilent

[UninstallDelete]
Name: {app}\*.*; Type: filesandordirs

[Registry]
Root: HKLM; SubKey: SOFTWARE\GSC Game World\STALKER-COP; ValueType: string; ValueName: InstallCDKEY; ValueData:
Root: HKLM; SubKey: SOFTWARE\GSC Game World\STALKER-COP; ValueType: string; ValueName: InstallLang; ValueData: ru
Root: HKLM; SubKey: SOFTWARE\GSC Game World\STALKER-COP; ValueType: string; ValueName: InstallPath; ValueData: {app}; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\GSC Game World\STALKER-COP; ValueType: string; ValueName: InstallSource; ValueData: {app}; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\GSC Game World\STALKER-COP; ValueType: string; ValueName: InstallUserName; ValueData:
Root: HKLM; SubKey: SOFTWARE\GSC Game World\STALKER-COP; ValueType: string; ValueName: InstallVers; ValueData: 1.6.00
Root: HKLM; SubKey: SOFTWARE\GSC Game World\STALKER-COP; ValueType: dword; ValueName: InstallPatchID; ValueData: $00002eda

user_123 05-10-2009 00:30 1234609

Цитата:

Цитата user_123
Подскажите, как сделать, чтобы выводился запрос на удаление подкаталога {app}\log (по умолчанию не должен удаляться)при деинсталляции приложения?

Код:

function <...>(): Boolean;
begin
 if MsgBox(''+ ExpandConstant('{cm:removelogs}') +'', mbInformation, mb_YesNo) = idYes then
 begin
 <...>
 end;
end;

»

Отвечаю сам на свой вопрос.
Кое-что написал сам (по образцу (скачивал с вашего форума) некоторых скриптов):
Код:

procedure InitializeUninstallProgressForm();
begin
  if MsgBox(CustomMessage('MyCustomMessage'), mbConfirmation, MB_YESNO) = IDYES then
    DelTree(ExpandConstant('{app}\subdir'),True,True,True)
end;

Вроде бы работает... Но есть некоторые трудности... Перед тем как удалить программу, надо завершить её процесс... У меня не получается реализовать это в деинсталляторе через секцию code по Вашим образцам, istask.dll распаковывается в папку деинсталлятора... компилятор сообщает о синтаксических ошибках (я с образца всё верно переписал и оптимизировал под свою прогрмму)... В инсталляторе я сделал, работает нормально... Пробовал для деинсталлятора прописать по образцу инсталлятора - скомпилировалось без проблем, но при запуске деинсталятора появилась ошибка...

Закрытие программы я реализовал так:
Код:

[UninstallRun]
Filename: {sys}\taskkill.exe; Parameters: /f /im MyProg.exe /t; Flags: runhidden

Всё было бы замечательно, если бы это выполнялось ДО удаления {app}\subdir... Но после стандартного запроса об удалении программы.

Может, достаточно написать другую процедуру... подскажите, пожалуйста, какую...

GrizzlyMK 05-10-2009 17:42 1235049

Помогите сделать (Поиском пытался не чего не нашол или я просто нетак смотрел )
1. Как изменить размер окна инстолятора
2. Как селать чтобы фоновое изоброжение было на всех диологах

Serega 05-10-2009 19:40 1235115

Цитата:

Цитата 414895494
Объедините пожалуйста эти скрипты »

Попробуйте сначала использовать утилиту InnoSetup Script Joiner, ссылка в шапке темы.

Цитата:

Цитата user_123
по Вашим образцам, istask.dll распаковывается в папку деинсталлятора... компилятор сообщает о синтаксических ошибках »

Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Files]
; измените на своё место расположение dll'ки, у меня она расположена
; C:\Program Files\Inno Setup 5\Libraries\ISTask.dll
Source: compiler:Libraries\ISTask.dll; DestDir: {app}; Flags: ignoreversion
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[Run]
Filename: {app}\MyProg.exe; Description: Запустить программу My Program?; Flags: postinstall nowait skipifsilent

[Code]
// функции используемые при деинсталляции
// RunTask@{app}\ISTask.dll - название функции (в данном случае, если программа работает)
// и путь dll'ки где она расположена...
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
  external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function KillTask(ExeFileName: string): Integer;
  external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usUninstall then
  if RunTask('MyProg.exe', False) then
    begin
      // прячем форму
      UninstallProgressForm.Visible:= False;
      if MsgBox('Обнаружена запущенная программа My Program. Завершить?', mbConfirmation, MB_YESNO) = IDYES then
        begin
          KillTask('MyProg.exe');
          UnloadDll(ExpandConstant('{app}\ISTask.dll'));
          // показываем форму
          UninstallProgressForm.Visible:= True;
        end
      else
        begin
          MsgBox('Завершите работу программы My Program, затем снова запустите программу удаления.', mbInformation, MB_OK);
          UnloadDll(ExpandConstant('{app}\ISTask.dll'));
          Abort;
        end;
    end
  else
    begin
      UnloadDll(ExpandConstant('{app}\ISTask.dll'));
    end;
end;



Цитата:

Цитата GrizzlyMK
Как изменить размер окна инстолятора »

WizardForm.ClientHeight - высота;
WizardForm.ClientWidth - ширина.
Цитата:

Цитата GrizzlyMK
Как селать чтобы фоновое изоброжение было на всех диологах »

Посмотрите в архиве темы, этот вопрос уже поднимался.

Krekerpro 05-10-2009 21:04 1235188

Доброго времени суток,хотелось бы узнать,как реализовать вот это ???

Painkiller 06-10-2009 00:27 1235436

Цитата:

Цитата Krekerpro
Доброго времени суток,хотелось бы узнать,как реализовать вот это »

Возможно я ошибаюсь , но скорее всего Inno Setup Form Designer-ом

ZooM1k 06-10-2009 01:51 1235478

Вложений: 1
А как сделать так что бы вываливалось окно перед самой распаковкой файлов и просило ввести логин и пароль а эти данные заносились в реестр памоготи пожалуйста оч оч надо реолизовать

GrizzlyMK 06-10-2009 08:57 1235555

Цитата:

Цитата Serega
Посмотрите в архиве темы, этот вопрос уже поднимался. »

Просмотрел весь архив.
Кто-то уже задавал этот вопрос но не получил ответа.
Либо я я плохо всё просмотрел.

414895494 07-10-2009 12:31 1236696

А подскажите как можно сделать так:



Пожалуйста скажите как.

Raf-9600 08-10-2009 10:11 1237476

Цитата:

Цитата Serega
Сделал, не совсем как вы хотели, т.е. сделал отдельную страницу с выбором Steam или NoSteam.
Пример
[Setup]
AppID={{9C9D1016-916D-40D5-B034-A0071759F1B7}
AppName=Half-Life 2
AppVerName=My Half-Life 2
DefaultDirName={pf}\Half-Life 2
DefaultGroupName=Half-Life 2
OutputDir=.
UninstallFilesDir={app}\UninstallDir

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

[CustomMessages]
INST_MODE=Режим установки
INST_MODE_CPT=Пожалуйста, выберите в каком режиме будет устанавливаться программа
INST_EXPR=Steam
INST_EXPR_STR=Установка программы с параметрами Steam.
INST_CUST=NoSteam
INST_CUST_STR=Установка программы с параметрами NoSteam.
NEXT=Нажмите «Далее», чтобы продолжить.

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

[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe; WorkingDir: {app}; Check: MyFuncIcons

[code]
function GetModuleHandle(lpModuleName: LongInt): LongInt;
external 'GetModuleHandleA@kernel32.dll stdcall';

function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt;
external 'ExtractIconA@shell32.dll stdcall';

function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
external 'DrawIconEx@user32.dll stdcall';

var
SupportPage: TWizardPage;
Steam, NoSteam: TNewRadiobutton;

function MyFuncIcons: Boolean;
begin
if Steam.Checked = True then
Result:= False
else Result:= True;
end;

procedure InitializeWizard();
var
Str1, Str2, Str3: TNewStaticText;
Rect: TRect;
hIcon: LongInt;
begin
SupportPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:INST_MODE}'), ExpandConstant('{cm:INST_MODE_CPT}'));

Steam:= TNewRadiobutton.Create(SupportPage);
with Steam do
begin
SetBounds(ScaleX(20), ScaleY(40), ScaleX(200), ScaleY(16));
Font.Style:= [fsBold];
Caption:= ExpandConstant('{cm:INST_EXPR}');
Checked:= True;
Parent:= SupportPage.Surface;
end;

hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 118);
with TBitmapImage.Create(SupportPage) do
begin
SetBounds(ScaleX(36), Steam.Top + ScaleY(20), ScaleX(32), ScaleY(32));
with Bitmap do
begin
Width:= ScaleX(32);
Height:= ScaleY(32);
Rect.Right:= ScaleX(32);
Rect.Bottom:= ScaleY(32);
Rect.Left:= ScaleX(0);
Rect.Top:= ScaleY(0);
Canvas.Brush.Color:= clBtnFace;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
end;
Parent:= SupportPage.Surface;
end;

Str1:= TNewStaticText.Create(SupportPage);
with Str1 do
begin
SetBounds(ScaleX(78), Steam.Top + ScaleY(20), ScaleX(349), ScaleY(32));
Autosize:= False;
WordWrap:= True;
Caption:= ExpandConstant('{cm:INST_EXPR_STR}');
Parent:= SupportPage.Surface;
end;

NoSteam:= TNewRadiobutton.Create(SupportPage);
with NoSteam do
begin
SetBounds(ScaleX(20), Str1.Top + ScaleY(52), ScaleX(200), ScaleY(16));
Font.Style:= [fsBold];
Caption:= ExpandConstant('{cm:INST_CUST}');
Parent:= SupportPage.Surface;
end;

hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 119);
with TBitmapImage.Create(SupportPage) do
begin
SetBounds(ScaleX(36), NoSteam.Top + ScaleY(20), ScaleX(32), ScaleY(32));
with Bitmap do
begin
Width:= ScaleX(32);
Height:= ScaleY(32);
Rect.Right:= ScaleX(32);
Rect.Bottom:= ScaleY(32);
Rect.Left:= ScaleX(0);
Rect.Top:= ScaleY(0);
Canvas.Brush.Color:= clBtnFace;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
end;
Parent:= SupportPage.Surface;
end;

Str2:= TNewStaticText.Create(SupportPage);
with Str2 do
begin
SetBounds(ScaleX(78), NoSteam.Top + ScaleY(20), ScaleX(349), ScaleY(50));
Autosize:= False;
WordWrap:= True;
Caption:= ExpandConstant('{cm:INST_CUST_STR}');
Parent:= SupportPage.Surface;
end;

Str3:= TNewStaticText.Create(SupportPage);
with Str3 do
begin
SetBounds(ScaleX(36), ScaleY(221), ScaleX(381), ScaleY(16));
Autosize:= False;
WordWrap:= True;
Caption:= ExpandConstant('{cm:NEXT}');
Parent:= SupportPage.Surface;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectDir then
begin
if Steam.Checked = True then
WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKLM\SOFTWARE\Valve\Steam,InstallPath|{pf}\ARPS}')
else WizardForm.DirEdit.Text:= ExpandConstant('{pf}\Half-Life 2');
end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID = wpSelectProgramGroup then
begin
if Steam.Checked = True then
Result:= True;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
begin
if Steam.Checked = True then
begin
DelTree(ExpandConstant('{app}\UninstallDir'), True, True, True);
RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9C9D1016-916D-40D5-B034-A0071759F1B7}_is1');
end;
end;
end;

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo,
MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: String;
begin
S := S + ExpandConstant('{cm:INST_MODE}') + NewLine;
if Steam.Checked = True then
S := S + Space + ExpandConstant('{cm:INST_EXPR}') + NewLine + NewLine
else
S := S + Space + ExpandConstant('{cm:INST_CUST}') + NewLine + NewLine;
S := S + MemoDirInfo + NewLine + Newline;
S := S + MemoGroupInfo + NewLine + Newline;
S := S + MemoTasksInfo + NewLine + NewLine;
Result := S;
end;

{
HINT: В режиме "Экспресс Режим" (Steam) может возникнуть ситуация, когда к примеру не хватает места
на жестком диске, а страница выбора папки установки в "Экспресс Режиме" будет пропущена,
в результате чего получится так, что установка сообщит о нехватке места уже в процессе
копирования файлов.
}
»

А вы немогли бы ещё сделать так, чтобы у вариантов установки "Steam" и "NoSteam", можно было указать разные наборы компонентов, и разные параметры [Tasks]?

Raf-9600 08-10-2009 11:36 1237532

Цитата:

Цитата serg aka lain
Можно, нужна сама библиотека "GameuxInstallHelper.dll".
Сам скрипт (Пример для юникод версии Inno): »

А как в нем указывать рейтинг (E, T, M, и т.д.) с комментариями нему, рекомендуемые/минимальные системные требования, и картинку которая там будет отображаться?


A1EXXX 08-10-2009 15:38 1237705

Inno Setup Compiler (build 091007) by ResTools

serg aka lain 08-10-2009 19:51 1237894

Цитата:

Цитата Raf-9600
А как в нем указывать рейтинг (E, T, M, и т.д.) с комментариями нему, рекомендуемые/минимальные системные требования, и картинку которая там будет отображаться? »

Зта информация уже встроена в GDF.dll, или в экзешник игры, включая рейтинг и картинку.
Конкретно в Crysis'е, эту информацию содержит VistaEssentials.dll, а GameuxInstallHelper.dll только регистрирует игру в Game Explorer, ну и ещё в ней есть пара функций, для регистрации в Медиацентре и ещё какая-то мелочь.

Krekerpro 09-10-2009 15:13 1238536

Хотелось бы узнать как сделать выделенную область прозрачной

Raf-9600 10-10-2009 10:54 1239157

Цитата:

Цитата Raf-9600
А вы немогли бы ещё сделать так, чтобы у вариантов установки "Steam" и "NoSteam", можно было указать разные наборы компонентов, и разные параметры [Tasks]? »

Если это сложно реализовать, то есть второй вариант, сделать чтоб после выбора типа установки "Steam" и "NoSteam", закрывался текущий инсталлятор, и запускался другой инсталлятор, HL2-Steam.exe, или HL2-NoSteam.exe (для типов Steam и NoSteam соответственно). Только при условии что когда их запускает "главный" инсталлятор, отсутствовала первая страница, а если их вручную запустить, то она была.

Serega 11-10-2009 09:06 1239866

Цитата:

Цитата Raf-9600
Если это сложно реализовать »

Всё это реализовать не сложно, просто котострафически не хватает времени...
Свободное время появляется только около 11 часов вечера. Делаю попытки, или как это лучше сказать, пытаюсь просмотреть все актуальные темы, но усталость берет вверх и натуральным образом просто отрубаюсь...

P.S.
Так, что не держите зла кому не ответил...

Tukash 12-10-2009 12:48 1240772

добрый день, подскажите как сделать вот так: http://img57.imageshack.us/i/sshot1w.jpg/ а то сколько не старась у меня буквы "лежат на фоне и рисунка не видно" надеюсь на помощь! заранее спасибо

grinda 12-10-2009 15:58 1240965

Скажите плиз каким скриптом можно поменять в инсталлере кнопки назад/далее/обзор ?

GrizzlyMK 12-10-2009 17:31 1241045

Вложений: 1
grinda,
Вот наложение изоброжение на кнопки.
А также саме кнопки вложил.
Код:

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

*Code]
const
  ButtonWidth = 80;    //Указываем размер кнопок
  ButtonHeight = 23;

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

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

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}\button.bmp'))
  Image.Parent:=Panel
  ButtonImage[AButtonIndex]:=Image

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

  Labl:=TLabel.Create(WizardForm)        //Текст кнопок
  Labl.Left:=23                          //Указываем положение текста
  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
  UpdateButton(WizardForm.BackButton,bidBack)
  UpdateButton(WizardForm.NextButton,bidNext)
  UpdateButton(WizardForm.CancelButton,bidCancel)
end;

procedure InitializeWizard();
begin
  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('button.bmp')
  LoadButtonImage(WizardForm.BackButton,bidBack)
  LoadButtonImage(WizardForm.NextButton,bidNext)
  LoadButtonImage(WizardForm.CancelButton,bidCancel)
  LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
  LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;


Tukash 12-10-2009 19:38 1241144

люди помогите соединить 2 скрипта:
Код:

const
  HALIGN_CENTER = 0;
  HALIGN_LEFT = 1;
  HALIGN_RIGHT = 2;

  VALIGN_CENTER = 0;
  VALIGN_TOP = 1;
  VALIGN_BOTTOM = 2;

  FIT_NONE = 0;
  FIT_WIDTH = 1;
  FIT_HEIGHT = 2;
  FIT_BOTH = 3;

  CLR_INVALID = $FFFFFFFF;

function InitGifCtrl(): Boolean;
external 'initgifctrl@files:gifctrl.dll stdcall';

function UninitGifCtrl(): Boolean;
external 'uninitgifctrl@files:gifctrl.dll stdcall';

function NewGifbWnd(hWndParent: HWND; X, Y, nWidth, nHeight: Integer): HWND;
external 'newgifwnd@files:gifctrl.dll stdcall';

function GifWndLoadFromFile(hWndGif: HWND; HAlign, VAlign: Integer; BGColor: DWord; Fit: integer; GifFileName: PChar): Boolean;
external 'gifwndloadfromfile@files:gifctrl.dll stdcall';

var
  GIF: HWND;
  WelcomeLabel1,WelcomeLabel2: TLabel;
  WizardImage: TBitmapImage;

procedure DeinitializeSetup();
begin
// скрываем надписи
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
// загружаем на форму рисунок
  WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\fon.bmp'));
// растягиваем рисунок по всей форме, если он у вас уже такой какой вы хотите, то удалите эту строку
  WizardForm.WizardBitmapImage.Align:=true;

// создаём надписи поверх рисунка
    WelcomeLabel1 := TLabel.Create(WizardForm);
    WelcomeLabel1.Left := 150;
    WelcomeLabel1.Top := 30;
    WelcomeLabel1.Width := 310;
    WelcomeLabel1.Height := 28;
    WelcomeLabel1.AutoSize := False;
    WelcomeLabel1.WordWrap := True;
    WelcomeLabel1.Font.Style := [fsBold];
    WelcomeLabel1.Font.Color := clBlack;
    WelcomeLabel1.Transparent := True;
    WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
    WelcomeLabel1.Parent := WizardForm.WelcomePage;

  WelcomeLabel2:=TLabel.Create(WizardForm);
  WelcomeLabel2.Left := 150;
  WelcomeLabel2.Top := 70;
  WelcomeLabel2.Width := 310;
  WelcomeLabel2.Height := 200;
  WelcomeLabel2.AutoSize := False;
  WelcomeLabel2.WordWrap := True;
  WelcomeLabel2.Font.Color := clBlack;
  WelcomeLabel2.Transparent := True;
  WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
  WelcomeLabel2.Parent := WizardForm.WelcomePage;
  UninitGifCtrl();
end;

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

    WizardForm.WelcomeLabel1.Hide;
    WizardForm.WelcomeLabel2.Hide;
    WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\fon.bmp'));
    WizardForm.WizardBitmapImage.Align:=true;

  InitGifCtrl();
  GIF := NewGifbWnd(WizardForm.Handle, 10, 316, 140, 42);
  //GifWndLoadFromFile(GIF, HALIGN_CENTER, VALIGN_BOTTOM, CLR_INVALID, FIT_WIDTH, ExpandConstant('{tmp}\www_oszone_net.gif'));

    WelcomeLabel1 := TLabel.Create(WizardForm);
    WelcomeLabel1.Left := 150;
    WelcomeLabel1.Top := 30;
    WelcomeLabel1.Width := 310;
    WelcomeLabel1.Height := 28;
    WelcomeLabel1.AutoSize := False;
    WelcomeLabel1.WordWrap := True;
    WelcomeLabel1.Font.Style := [fsBold];
    WelcomeLabel1.Font.Color := clBlack;
    WelcomeLabel1.Transparent := True;
    WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
    WelcomeLabel1.Parent := WizardForm.WelcomePage;

  WelcomeLabel2:=TLabel.Create(WizardForm);
  WelcomeLabel2.Left := 150;
  WelcomeLabel2.Top := 70;
  WelcomeLabel2.Width := 310;
  WelcomeLabel2.Height := 200;
  WelcomeLabel2.AutoSize := False;
  WelcomeLabel2.WordWrap := True;
  WelcomeLabel2.Font.Color := clBlack;
  WelcomeLabel2.Transparent := True;
  WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
  WelcomeLabel2.Parent := WizardForm.WelcomePage;
end;

и
Код:

var
  WelcomeLabel1,WelcomeLabel2,FinishedHeadingLabel,
  FinishedLabel,PageNameLabel,PageDescriptionLabel:TLabel;

procedure InitializeWizard();
begin
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  WizardForm.PageNameLabel.Hide;
  WizardForm.PageDescriptionLabel.Hide;
  WizardForm.FinishedHeadingLabel.Hide;
  WizardForm.FinishedLabel.Hide;

      WizardForm.WizardBitmapImage.Align:=true;
      WizardForm.WizardBitmapImage2.Align:=true;
      WizardForm.WizardSmallBitmapImage.Align:=true;

  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 := clBlack;
// здесь можно поиграть шрифтом
//  WelcomeLabel1.Font.Style := [fsBold];
//  WelcomeLabel1.Font.Name:='MS Sans Serif';
  WelcomeLabel1.Font.Size := 14;
  WelcomeLabel1.Transparent := True;
  WelcomeLabel1.Parent := WizardForm.WelcomePage;

      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 := clBlack;
      WelcomeLabel2.Font.Size := 8;
      WelcomeLabel2.Transparent := True;
      WelcomeLabel2.Parent := WizardForm.WelcomePage;

  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 := clBlack;
  PageNameLabel.Font.Style := [fsBold];
  PageNameLabel.Transparent := True;
  PageNameLabel.Parent := WizardForm.MainPanel;

      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 := clBlack;
      PageDescriptionLabel.Transparent := True;
      PageDescriptionLabel.Parent := WizardForm.MainPanel;

  FinishedHeadingLabel:=TLabel.Create(WizardForm);
  FinishedHeadingLabel.Left := ScaleX(150);
  FinishedHeadingLabel.Top := ScaleY(15);
  FinishedHeadingLabel.Width := ScaleX(320);
  FinishedHeadingLabel.Height := ScaleY(75);
  FinishedHeadingLabel.AutoSize := False;
  FinishedHeadingLabel.WordWrap := True;
  FinishedHeadingLabel.Font.Color := clBlack;
// здесь тоже можно поиграть шрифтом
//  FinishedHeadingLabel.Font.Style := [fsBold];
//  FinishedHeadingLabel.Font.Name:='MS Sans Serif';
  FinishedHeadingLabel.Font.Size := 14;
  FinishedHeadingLabel.Transparent := True;
  FinishedHeadingLabel.Parent := WizardForm.FinishedPage;

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

procedure CurPageChanged(CurPageID: Integer);
begin
  WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
  WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
  PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
  FinishedHeadingLabel.Caption := WizardForm.FinishedHeadingLabel.Caption;
  FinishedLabel.Caption := WizardForm.FinishedLabel.Caption;
end;

заранее спасибо

A1EXXX 12-10-2009 20:22 1241189

Tukash, пробуй...
Код:

const
  HALIGN_CENTER = 0;
  HALIGN_LEFT = 1;
  HALIGN_RIGHT = 2;

  VALIGN_CENTER = 0;
  VALIGN_TOP = 1;
  VALIGN_BOTTOM = 2;

  FIT_NONE = 0;
  FIT_WIDTH = 1;
  FIT_HEIGHT = 2;
  FIT_BOTH = 3;

  CLR_INVALID = $FFFFFFFF;

function InitGifCtrl(): Boolean;
external 'initgifctrl@files:gifctrl.dll stdcall';

function UninitGifCtrl(): Boolean;
external 'uninitgifctrl@files:gifctrl.dll stdcall';

function NewGifbWnd(hWndParent: HWND; X, Y, nWidth, nHeight: Integer): HWND;
external 'newgifwnd@files:gifctrl.dll stdcall';

function GifWndLoadFromFile(hWndGif: HWND; HAlign, VAlign: Integer; BGColor: DWord; Fit: integer; GifFileName: PChar): Boolean;
external 'gifwndloadfromfile@files:gifctrl.dll stdcall';

var
  GIF: HWND;
  WizardImage: TBitmapImage;
  WelcomeLabel1,WelcomeLabel2,FinishedHeadingLabel,
  FinishedLabel,PageNameLabel,PageDescriptionLabel: TLabel;

procedure DeinitializeSetup();
begin
// скрываем надписи
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
// загружаем на форму рисунок
  WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\fon.bmp'));
// растягиваем рисунок по всей форме, если он у вас уже такой какой вы хотите, то удалите эту строку
  WizardForm.WizardBitmapImage.Align:=true;

// создаём надписи поверх рисунка
    WelcomeLabel1 := TLabel.Create(WizardForm);
    WelcomeLabel1.Left := 150;
    WelcomeLabel1.Top := 30;
    WelcomeLabel1.Width := 310;
    WelcomeLabel1.Height := 28;
    WelcomeLabel1.AutoSize := False;
    WelcomeLabel1.WordWrap := True;
    WelcomeLabel1.Font.Style := [fsBold];
    WelcomeLabel1.Font.Color := clBlack;
    WelcomeLabel1.Transparent := True;
    WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
    WelcomeLabel1.Parent := WizardForm.WelcomePage;

  WelcomeLabel2:=TLabel.Create(WizardForm);
  WelcomeLabel2.Left := 150;
  WelcomeLabel2.Top := 70;
  WelcomeLabel2.Width := 310;
  WelcomeLabel2.Height := 200;
  WelcomeLabel2.AutoSize := False;
  WelcomeLabel2.WordWrap := True;
  WelcomeLabel2.Font.Color := clBlack;
  WelcomeLabel2.Transparent := True;
  WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
  WelcomeLabel2.Parent := WizardForm.WelcomePage;
  UninitGifCtrl();
end;

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

    WizardForm.WelcomeLabel1.Hide;
    WizardForm.WelcomeLabel2.Hide;
    WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\fon.bmp'));
    WizardForm.WizardBitmapImage.Align:=true;

  InitGifCtrl();
  GIF := NewGifbWnd(WizardForm.Handle, 10, 316, 140, 42);
  //GifWndLoadFromFile(GIF, HALIGN_CENTER, VALIGN_BOTTOM, CLR_INVALID, FIT_WIDTH, ExpandConstant('{tmp}\www_oszone_net.gif'));

    WelcomeLabel1 := TLabel.Create(WizardForm);
    WelcomeLabel1.Left := 150;
    WelcomeLabel1.Top := 30;
    WelcomeLabel1.Width := 310;
    WelcomeLabel1.Height := 28;
    WelcomeLabel1.AutoSize := False;
    WelcomeLabel1.WordWrap := True;
    WelcomeLabel1.Font.Style := [fsBold];
    WelcomeLabel1.Font.Color := clBlack;
    WelcomeLabel1.Transparent := True;
    WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
    WelcomeLabel1.Parent := WizardForm.WelcomePage;

  WelcomeLabel2:=TLabel.Create(WizardForm);
  WelcomeLabel2.Left := 150;
  WelcomeLabel2.Top := 70;
  WelcomeLabel2.Width := 310;
  WelcomeLabel2.Height := 200;
  WelcomeLabel2.AutoSize := False;
  WelcomeLabel2.WordWrap := True;
  WelcomeLabel2.Font.Color := clBlack;
  WelcomeLabel2.Transparent := True;
  WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
  WelcomeLabel2.Parent := WizardForm.WelcomePage;

  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  WizardForm.PageNameLabel.Hide;
  WizardForm.PageDescriptionLabel.Hide;
  WizardForm.FinishedHeadingLabel.Hide;
  WizardForm.FinishedLabel.Hide;

      WizardForm.WizardBitmapImage.Align:=true;
      WizardForm.WizardBitmapImage2.Align:=true;
      WizardForm.WizardSmallBitmapImage.Align:=true;

  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 := clBlack;
// здесь можно поиграть шрифтом
//  WelcomeLabel1.Font.Style := [fsBold];
//  WelcomeLabel1.Font.Name:='MS Sans Serif';
  WelcomeLabel1.Font.Size := 14;
  WelcomeLabel1.Transparent := True;
  WelcomeLabel1.Parent := WizardForm.WelcomePage;

      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 := clBlack;
      WelcomeLabel2.Font.Size := 8;
      WelcomeLabel2.Transparent := True;
      WelcomeLabel2.Parent := WizardForm.WelcomePage;

  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 := clBlack;
  PageNameLabel.Font.Style := [fsBold];
  PageNameLabel.Transparent := True;
  PageNameLabel.Parent := WizardForm.MainPanel;

      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 := clBlack;
      PageDescriptionLabel.Transparent := True;
      PageDescriptionLabel.Parent := WizardForm.MainPanel;

  FinishedHeadingLabel:=TLabel.Create(WizardForm);
  FinishedHeadingLabel.Left := ScaleX(150);
  FinishedHeadingLabel.Top := ScaleY(15);
  FinishedHeadingLabel.Width := ScaleX(320);
  FinishedHeadingLabel.Height := ScaleY(75);
  FinishedHeadingLabel.AutoSize := False;
  FinishedHeadingLabel.WordWrap := True;
  FinishedHeadingLabel.Font.Color := clBlack;
// здесь тоже можно поиграть шрифтом
//  FinishedHeadingLabel.Font.Style := [fsBold];
//  FinishedHeadingLabel.Font.Name:='MS Sans Serif';
  FinishedHeadingLabel.Font.Size := 14;
  FinishedHeadingLabel.Transparent := True;
  FinishedHeadingLabel.Parent := WizardForm.FinishedPage;

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

procedure CurPageChanged(CurPageID: Integer);
begin
  WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
  WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
  PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
  FinishedHeadingLabel.Caption := WizardForm.FinishedHeadingLabel.Caption;
  FinishedLabel.Caption := WizardForm.FinishedLabel.Caption;
end;


Tukash 12-10-2009 20:32 1241201

спасибо A1EXXX ака Shepards)))

A1EXXX 12-10-2009 20:49 1241219

Цитата:

Цитата Tukash
ака Shepards))) »

не пойму, причем здесь он???

Tukash 12-10-2009 20:57 1241225

Цитата:

Цитата A1EXXX
Цитата Tukash:
ака Shepards))) »
не пойму, причем здесь он??? »

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

A1EXXX 12-10-2009 21:08 1241229

Tukash, в смысле, когда жмёшь "Завершить" или исталлятор запускается долго??? (такое у многих частенько бывает...) :)

grinda 12-10-2009 21:08 1241231

Цитата:

Цитата GrizzlyMK
grinda,
Вот наложение изоброжение на кнопки.
А также саме кнопки вложил. »

вылезла такая ошибка, не знаете в чем проблема?

Tukash 12-10-2009 21:16 1241237

Цитата:

Цитата A1EXXX
Tukash, в смысле, когда жмёшь "Завершить" или исталлятор запускается долго??? (такое у многих частенько бывает...) »

запускается, иногда вообще не запускается)))

A1EXXX 12-10-2009 21:21 1241243

grinda, попробовал скрипт - работает, судя по скрину - ругается на отсутствие точки с запятой... Какую версию Inno используешь - ANSI или Unicode??? Подобное бывает с Unicode-версией...

grinda 12-10-2009 21:22 1241244

юникод, ща в анси попробую

A1EXXX 12-10-2009 21:25 1241248

Tukash, дай кусок скрипта, содержащий секцию [Files], думаю, это поправимо....

x-net 12-10-2009 21:29 1241256


Может кто нибудь выложить этот скрипт. Нигде не нашёл, заранее Спс

A1EXXX 12-10-2009 21:32 1241259

x-net,
читать дальше »

[Files]
Source: fon.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
var
WelcomeLabel1, WelcomeLabel2: TLabel;
BmpFile: TBitmapImage;

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

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\fon.bmp'));
BmpFile.SetBounds(0, 0, 497, 320);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.WelcomePage;

with WizardForm do
begin
WelcomeLabel1.Hide;
WelcomeLabel2.hide;
end;

WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do
begin
WelcomeLabel1.Alignment:=taCenter;
Left:= ScaleX(176);
Top:= ScaleY(66);
Width:= ScaleX(301);
Height:= ScaleY(71);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Size:= 12;
Font.Color:=ClWhite
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel1.Caption;
end;

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do
begin
WelcomeLabel2.Alignment:=taCenter;
Top:= ScaleY(136);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(300);
AutoSize:= false;
WordWrap:= true;
Font.Color:=ClWhite
Transparent:= true;
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel2.Caption;
end;
end;

x-net 12-10-2009 21:43 1241266

A1EXXX, можно полностью все страницы вот так? и ссылка как на рисунке
Кнопки чёрные, и ставить дополнительно компоненты

A1EXXX 12-10-2009 21:57 1241284

Вложений: 1
x-net, есть готовый скрипт, где всё это реализовано (кроме кнопок, кажись, они отдельно есть) на примере игры [Prototype] (автор Shegorat). Если есть желание - пробуй, разбирайся!
(скрипт прикрепил...) ;)

Tukash 12-10-2009 22:11 1241297

Код:

#define MyAppName "GTA Vice City"
#define MyAppVerName "GTA Vice City"
#define MyAppPublisher "1C"

[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={{7CCD30D0-3630-499F-B7B8-49D0FFF220A8}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
InfoBeforeFile=G:\readMe.txt
OutputDir=D:\22\GTA
OutputBaseFilename=setup
SetupIconFile=G:\Autorun.ico
Compression=lzma/ultra
SolidCompression=yes
SlicesPerDisk=1
DiskSliceSize=736000000
DiskClusterSize=4096
ReserveBytes=0
DiskSpanning=yes
WizardSmallImageFile=C:\WizardSmallImage.bmp

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

[Tasks]
Name: currentuser; Description: "Установить для всех пользователей"; Flags: unchecked
Name: desktopicon; Description: "Создать значок на рабочем столе"

[Run]
Filename: {src}\DirectX\DXSETUP.exe; WorkingDir: {src}\DirectX; StatusMsg: Установка DirectX®...;
FileName: "{src}\Redist\AdbeRdr.exe"; Description: "Установить Adobe Reader (Необходимо для Руководства пользователя)"; WorkingDir: "{src}\Redist"; Flags: postinstall shellexec skipifsilent runasoriginaluser

[Files]
Source: "D:\Games\GTA Vice City\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
Source: C:\fon.bmp; DestDir: {tmp}; Flags: dontcopy;
Source: C:\gifctrl.dll; Flags: dontcopy;

[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{group}\Запустить игру"; FileName: "{app}\gta-vc.exe"; WorkingDir: "{app}"; IconFilename: "{app}\gta-vc.exe"
Name: "{group}\Сайт разработчиков игры"; FileName: "{app}\Rockstar.url"; WorkingDir: "{app}"
Name: "{group}\Сайт игры"; FileName: "{app}\gta-vc.url"; WorkingDir: "{app}"
Name: "{group}\Руководство по игре"; FileName: "{app}\GTA_VC_MAN_rus.pdf"; WorkingDir: "{app}"
Name: "{group}\Карта Vice City"; FileName: "{app}\GTA_VC_MAP_rus.pdf"; WorkingDir: "{app}"
Name: {userdesktop}\GTA Vice City; Filename: {app}\gta-vc.exe; WorkingDir: {app}\

[Registry]
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\1.00.00001"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\Installation"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\Installation"; ValueType: string; ValueName: "ExePath"; ValueData: "{app}\gta-vc.exe"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\Installation"; ValueType: string; ValueName: "Installed"; ValueData: "1"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\Installation"; ValueType: string; ValueName: "UninstallPath"; ValueData: "{app}\unins000.exe"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}"; Flags: uninsdeletekey

[CustomMessages]
rus.NameAndVersion=%1, версия %2
rus.AdditionalIcons=Дополнительные значки:
rus.CreateDesktopIcon=Создать значок на &Рабочем столе
rus.CreateQuickLaunchIcon=Создать значок в &Панели быстрого запуска
rus.ProgramOnTheWeb=Сайт %1 в Интернете
rus.UninstallProgram=Деинсталлировать %1
rus.LaunchProgram=Запустить %1
rus.AssocFileExtension=Св&язать %1 с файлами, имеющими расширение %2
rus.AssocingFileExtension=Связывание %1 с файлами %2...


       
Код:

       
const
   HALIGN_CENTER = 0;
   HALIGN_LEFT = 1;
   HALIGN_RIGHT = 2;

   VALIGN_CENTER = 0;
   VALIGN_TOP = 1;
   VALIGN_BOTTOM = 2;

   FIT_NONE = 0;
   FIT_WIDTH = 1;
   FIT_HEIGHT = 2;
   FIT_BOTH = 3;

   CLR_INVALID = $FFFFFFFF;

function InitGifCtrl(): Boolean;
external 'initgifctrl@files:gifctrl.dll stdcall';

function UninitGifCtrl(): Boolean;
external 'uninitgifctrl@files:gifctrl.dll stdcall';

function NewGifbWnd(hWndParent: HWND; X, Y, nWidth, nHeight: Integer): HWND;
external 'newgifwnd@files:gifctrl.dll stdcall';

function GifWndLoadFromFile(hWndGif: HWND; HAlign, VAlign: Integer; BGColor: DWord; Fit: integer; GifFileName: PChar): Boolean;
external 'gifwndloadfromfile@files:gifctrl.dll stdcall';

var
  GIF: HWND;
  WizardImage: TBitmapImage;
  WelcomeLabel1,WelcomeLabel2,FinishedHeadingLabel,
  FinishedLabel,PageNameLabel,PageDescriptionLabel: TLabel;

procedure DeinitializeSetup();
begin
// скрываем надписи
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
// загружаем на форму рисунок
  WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\fon.bmp'));
// растягиваем рисунок по всей форме, если он у вас уже такой какой вы хотите, то удалите эту строку
  WizardForm.WizardBitmapImage.Align:=true;

// создаём надписи поверх рисунка
    WelcomeLabel1 := TLabel.Create(WizardForm);
    WelcomeLabel1.Left := 150;
    WelcomeLabel1.Top := 30;
    WelcomeLabel1.Width := 310;
    WelcomeLabel1.Height := 28;
    WelcomeLabel1.AutoSize := False;
    WelcomeLabel1.WordWrap := True;
    WelcomeLabel1.Font.Style := [fsBold];
    WelcomeLabel1.Font.Color := clBlack;
    WelcomeLabel1.Transparent := True;
    WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
    WelcomeLabel1.Parent := WizardForm.WelcomePage;

  WelcomeLabel2:=TLabel.Create(WizardForm);
  WelcomeLabel2.Left := 150;
  WelcomeLabel2.Top := 70;
  WelcomeLabel2.Width := 310;
  WelcomeLabel2.Height := 200;
  WelcomeLabel2.AutoSize := False;
  WelcomeLabel2.WordWrap := True;
  WelcomeLabel2.Font.Color := clBlack;
  WelcomeLabel2.Transparent := True;
  WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
  WelcomeLabel2.Parent := WizardForm.WelcomePage;
  UninitGifCtrl();
end;

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

    WizardForm.WelcomeLabel1.Hide;
    WizardForm.WelcomeLabel2.Hide;
    WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\fon.bmp'));
    WizardForm.WizardBitmapImage.Align:=true;

  InitGifCtrl();
  GIF := NewGifbWnd(WizardForm.Handle, 10, 316, 140, 42);
  //GifWndLoadFromFile(GIF, HALIGN_CENTER, VALIGN_BOTTOM, CLR_INVALID, FIT_WIDTH, ExpandConstant('{tmp}\www_oszone_net.gif'));

    WelcomeLabel1 := TLabel.Create(WizardForm);
    WelcomeLabel1.Left := 150;
    WelcomeLabel1.Top := 30;
    WelcomeLabel1.Width := 310;
    WelcomeLabel1.Height := 28;
    WelcomeLabel1.AutoSize := False;
    WelcomeLabel1.WordWrap := True;
    WelcomeLabel1.Font.Style := [fsBold];
    WelcomeLabel1.Font.Color := clBlack;
    WelcomeLabel1.Transparent := True;
    WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
    //WelcomeLabel1.Parent := WizardForm.WelcomePage;

  WelcomeLabel2:=TLabel.Create(WizardForm);
  WelcomeLabel2.Left := 150;
  WelcomeLabel2.Top := 70;
  WelcomeLabel2.Width := 310;
  WelcomeLabel2.Height := 200;
  WelcomeLabel2.AutoSize := False;
  WelcomeLabel2.WordWrap := True;
  WelcomeLabel2.Font.Color := clBlack;
  WelcomeLabel2.Transparent := True;
  WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
  //WelcomeLabel2.Parent := WizardForm.WelcomePage;

  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  WizardForm.PageNameLabel.Hide;
  WizardForm.PageDescriptionLabel.Hide;
  WizardForm.FinishedHeadingLabel.Hide;
  //WizardForm.FinishedLabel.Hide;

      WizardForm.WizardBitmapImage.Align:=true;
      WizardForm.WizardBitmapImage2.Align:=true;
      WizardForm.WizardSmallBitmapImage.Align:=true;

  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 := clBlack;
// здесь можно поиграть шрифтом
//  WelcomeLabel1.Font.Style := [fsBold];
//  WelcomeLabel1.Font.Name:='MS Sans Serif';
  WelcomeLabel1.Font.Size := 14;
  WelcomeLabel1.Transparent := True;
  //WelcomeLabel1.Parent := WizardForm.WelcomePage;

      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 := clBlack;
      WelcomeLabel2.Font.Size := 8;
      WelcomeLabel2.Transparent := True;
      //WelcomeLabel2.Parent := WizardForm.WelcomePage;

  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 := clBlack;
  PageNameLabel.Font.Style := [fsBold];
  PageNameLabel.Transparent := True;
  //PageNameLabel.Parent := WizardForm.MainPanel;

      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 := clBlack;
      PageDescriptionLabel.Transparent := True;
      //PageDescriptionLabel.Parent := WizardForm.MainPanel;

  FinishedHeadingLabel:=TLabel.Create(WizardForm);
  FinishedHeadingLabel.Left := ScaleX(150);
  FinishedHeadingLabel.Top := ScaleY(15);
  FinishedHeadingLabel.Width := ScaleX(320);
  FinishedHeadingLabel.Height := ScaleY(75);
  FinishedHeadingLabel.AutoSize := False;
  FinishedHeadingLabel.WordWrap := True;
  FinishedHeadingLabel.Font.Color := clBlack;
// здесь тоже можно поиграть шрифтом
//  FinishedHeadingLabel.Font.Style := [fsBold];
//  FinishedHeadingLabel.Font.Name:='MS Sans Serif';
  FinishedHeadingLabel.Font.Size := 14;
  FinishedHeadingLabel.Transparent := True;
  //FinishedHeadingLabel.Parent := WizardForm.FinishedPage;

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

procedure CurPageChanged(CurPageID: Integer);
begin
  WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
  WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
  PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
  FinishedHeadingLabel.Caption := WizardForm.FinishedHeadingLabel.Caption;
  FinishedLabel.Caption := WizardForm.FinishedLabel.Caption;
end;



A1EXXX весь выложил))) мало-ли))) если что особо не старайся уже начал по:
Код:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "GTA Vice City"
#define MyAppVerName "GTA Vice City"
#define MyAppPublisher "1C"

[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={{7CCD30D0-3630-499F-B7B8-49D0FFF220A8}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
InfoBeforeFile=G:\readMe.txt
OutputDir=D:\22\GTA
OutputBaseFilename=setup
SetupIconFile=G:\Autorun.ico
Compression=lzma/ultra
SolidCompression=yes
SlicesPerDisk=1
DiskSliceSize=736000000
DiskClusterSize=4096
ReserveBytes=0
DiskSpanning=yes
WizardImageFile=C:\WizardImage.bmp
WizardSmallImageFile=C:\WizardSmallImage.bmp

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

[Tasks]
Name: currentuser; Description: "Установить для всех пользователей"; Flags: unchecked
Name: desktopicon; Description: "Создать значок на рабочем столе"

[Run]
Filename: {src}\DirectX\DXSETUP.exe; WorkingDir: {src}\DirectX; StatusMsg: Установка DirectX®...;
FileName: "{src}\Redist\AdbeRdr.exe"; Description: "Установить Adobe Reader (Необходимо для Руководства пользователя)"; WorkingDir: "{src}\Redist"; Flags: postinstall shellexec skipifsilent runasoriginaluser

[Files]
Source: "D:\Games\GTA Vice City\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{group}\Запустить игру"; FileName: "{app}\gta-vc.exe"; WorkingDir: "{app}"; IconFilename: "{app}\gta-vc.exe"
Name: "{group}\Сайт разработчиков игры"; FileName: "{app}\Rockstar.url"; WorkingDir: "{app}"
Name: "{group}\Сайт игры"; FileName: "{app}\gta-vc.url"; WorkingDir: "{app}"
Name: "{group}\Руководство по игре"; FileName: "{app}\GTA_VC_MAN_rus.pdf"; WorkingDir: "{app}"
Name: "{group}\Карта Vice City"; FileName: "{app}\GTA_VC_MAP_rus.pdf"; WorkingDir: "{app}"
Name: {userdesktop}\GTA Vice City; Filename: {app}\gta-vc.exe; WorkingDir: {app}\

[Registry]
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\1.00.00001"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\Installation"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\Installation"; ValueType: string; ValueName: "ExePath"; ValueData: "{app}\gta-vc.exe"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\Installation"; ValueType: string; ValueName: "Installed"; ValueData: "1"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City\Installation"; ValueType: string; ValueName: "UninstallPath"; ValueData: "{app}\unins000.exe"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Rockstar Games\GTA Vice City"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}"; Flags: uninsdeletekey

[CustomMessages]
rus.NameAndVersion=%1, версия %2
rus.AdditionalIcons=Дополнительные значки:
rus.CreateDesktopIcon=Создать значок на &Рабочем столе
rus.CreateQuickLaunchIcon=Создать значок в &Панели быстрого запуска
rus.ProgramOnTheWeb=Сайт %1 в Интернете
rus.UninstallProgram=Деинсталлировать %1
rus.LaunchProgram=Запустить %1
rus.AssocFileExtension=Св&язать %1 с файлами, имеющими расширение %2
rus.AssocingFileExtension=Связывание %1 с файлами %2...

делать)))

GrizzlyMK 12-10-2009 22:20 1241301

Помогите, дайте код на отоброжение картинок на всех страницах инстолятора.

A1EXXX 12-10-2009 22:27 1241307

Tukash, смотри в чём проблема (как должно быть):
Цитата:

[Files]
Source: C:\fon.bmp; DestDir: {tmp}; Flags: dontcopy;
Source: C:\gifctrl.dll; Flags: dontcopy;
Source: "D:\Games\GTA Vice City\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
Распаковка файлов в секции [Files] происходит по порядку, поэтому папку с игрой нужно кидать в конец секции!
Попробуй, и всё запашет как надо!

Tukash 12-10-2009 22:28 1241308

A1EXXX
спасибо незнал%)

x-net 13-10-2009 09:53 1241544

Скрипт [Prototype], я уже делал, мне не нравится огромное окно и ссылку вниз не могу вставить никак
И вот что получаю при создании установщика

A1EXXX 13-10-2009 17:14 1241904

x-net, возможно эта ошибка результат причуд Unicode-версии Inno (уже писал недавно), попробуй ANSI установить...

x-net 13-10-2009 17:32 1241926

A1EXXX Пробовал Ansi, не помогает

MrAWP 13-10-2009 23:18 1242229

Ребята помогите пожалуйста со скриптом:

Вобщем после установки хочу чтобы распаковывался внешний SFX-архив из папки в которой лежит инсталлятор.
Вот скрипт который я нашел:

Код:

Filename: "{src}\ARCHIVE.exe"; WorkingDir: "{src}"; Parameters: "-y -o""{app}\cstrike\"""; StatusMsg: "Идет установка..."; Flags: waituntilterminated ; Components: arc_yes;
но я не знаю как добавить проверку на наличие этого самого архива в папке с инсталлятором. То есть мне нужно чтобы перед распаковкой инсталлятор проверял, есть ли с ним в папке архив archieve.exe, если есть - то пусть распаковывает, а если нету - чтобы этот этап пропускался и вылетал MsgBox типа: "Файл archieve.exe не найден в папке с инсталлятором!"

Буду очень благодарен за помощь.

Habetdin 14-10-2009 00:35 1242267

MrAWP, нужно добавить флаг skipifdoesntexist - тогда шаг будет пропущен при отсутствии файла:
Код:

Filename: "{src}\ARCHIVE.exe"; WorkingDir: "{src}"; Parameters: "-y -o""{app}\cstrike\"""; StatusMsg: "Идет установка..."; Flags: waituntilterminated skipifdoesntexist; Components: arc_yes;

serg aka lain 14-10-2009 01:05 1242281

MrAWP,
или так
Код:

function InitializeSetup(): Boolean;
begin
  Result := True;
  if not FileExists(ExpandConstant('{src}\archieve.exe')) then
  begin
    SuppressibleMsgBox('Файл archieve.exe не найден в папке с инсталлятором!', mbCriticalError, MB_OK, MB_OK);
    Result := False;
  end;
end;

или так
Код:

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
    if not FileExists(ExpandConstant('{src}\archieve.exe')) then
    begin
      SuppressibleMsgBox('Файл archieve.exe не найден в папке с инсталлятором!', mbCriticalError, MB_OK, MB_OK);
      Abort;
    end;
end;

даже можно и одновременно.

Serega 14-10-2009 01:08 1242285

Цитата:

Цитата GrizzlyMK
дайте код на отоброжение картинок на всех страницах инстолятора »

Откровенно говоря, я уже устал его писать...
Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Files]
Source: C:\Program Files\Inno Setup 5\Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[Run]
Filename: {app}\MyProg.exe; Description: Запустить программу My Program?; Flags: postinstall nowait skipifsilent

[Code]
var
  pnl: TPanel;

///////////////////////WelcomePage//////////////////////////////////////
procedure WelcomePage;
begin
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.WelcomeLabel1.AutoSize;
      SetBounds(WizardForm.WelcomeLabel1.Left,WizardForm.WelcomeLabel1.Top,
                WizardForm.WelcomeLabel1.Width,WizardForm.WelcomeLabel1.Height);
      WordWrap:= WizardForm.WelcomeLabel1.WordWrap;
      Caption:= WizardForm.WelcomeLabel1.Caption;
      with Font do
        begin
          Color:= WizardForm.WelcomeLabel1.Font.Color;
          Style:= WizardForm.WelcomeLabel1.Font.Style;
          Name:= WizardForm.WelcomeLabel1.Font.Name;
          Size:= WizardForm.WelcomeLabel1.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.WelcomeLabel2.AutoSize;
      SetBounds(WizardForm.WelcomeLabel2.Left,WizardForm.WelcomeLabel2.Top,
                WizardForm.WelcomeLabel2.Width,WizardForm.WelcomeLabel2.Height);
      WordWrap:= WizardForm.WelcomeLabel2.WordWrap;
      Caption:= WizardForm.WelcomeLabel2.Caption;
      with Font do
        begin
          Color:= WizardForm.WelcomeLabel2.Font.Color;
          Style:= WizardForm.WelcomeLabel2.Font.Style;
          Name:= WizardForm.WelcomeLabel2.Font.Name;
          Size:= WizardForm.WelcomeLabel2.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////SelectDirPage//////////////////////////////////////
procedure SelectDirPage;
begin
  with WizardForm do
    begin
      with DirEdit do
        begin
          Left:= 40;
          Top:= 137;
          Parent:= pnl;
        end;
      with DirBrowseButton do
        begin
          Left:= WizardForm.DirEdit.Left + WizardForm.DirEdit.Width + 10;
          Top:= WizardForm.DirEdit.Top - 1;
          Parent:= pnl;
        end;
      with SelectDirBitmapImage do
        begin
          Left:= WizardForm.DirEdit.Left;
          Top:= WizardForm.DirEdit.Top - 62;
          Stretch:= True;
          Parent:= pnl;
        end;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.SelectDirBrowseLabel.AutoSize;
      SetBounds(WizardForm.DirEdit.Left,WizardForm.DirEdit.Top - 30,
                WizardForm.SelectDirBrowseLabel.Width, WizardForm.SelectDirBrowseLabel.Height);
      WordWrap:= WizardForm.SelectDirBrowseLabel.WordWrap;
      Caption:= WizardForm.SelectDirBrowseLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.SelectDirBrowseLabel.Font.Color;
          Style:= WizardForm.SelectDirBrowseLabel.Font.Style;
          Name:= WizardForm.SelectDirBrowseLabel.Font.Name;
          Size:= WizardForm.SelectDirBrowseLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.SelectDirLabel.AutoSize;
      SetBounds(WizardForm.SelectDirBitmapImage.Left + 50,WizardForm.SelectDirBitmapImage.Top + 10,
                WizardForm.SelectDirLabel.Width,WizardForm.SelectDirLabel.Height);
      WordWrap:= WizardForm.SelectDirLabel.WordWrap;
      Caption:= WizardForm.SelectDirLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.SelectDirLabel.Font.Color;
          Style:= WizardForm.SelectDirLabel.Font.Style;
          Name:= WizardForm.SelectDirLabel.Font.Name;
          Size:= WizardForm.SelectDirLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.DiskSpaceLabel.AutoSize;
      SetBounds(WizardForm.DirEdit.Left,WizardForm.Bevel.Top - 25,
                WizardForm.DiskSpaceLabel.Width,WizardForm.DiskSpaceLabel.Height);
      WordWrap:= WizardForm.DiskSpaceLabel.WordWrap;
      Caption:= WizardForm.DiskSpaceLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.DiskSpaceLabel.Font.Color;
          Style:= WizardForm.DiskSpaceLabel.Font.Style;
          Name:= WizardForm.DiskSpaceLabel.Font.Name;
          Size:= WizardForm.DiskSpaceLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////ReadyPage//////////////////////////////////////
procedure ReadyPage;
var
  ready_str: string;
begin
  ready_str:= WizardForm.ReadyMemo.Text;
  with TLabel.Create(pnl) do
    begin
      SetBounds(45,115,WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
      Caption:= ready_str;
      with Font do
        begin
          Color:= WizardForm.ReadyLabel.Font.Color;
          Style:= WizardForm.ReadyLabel.Font.Style;
          Name:= WizardForm.ReadyLabel.Font.Name;
          Size:= WizardForm.ReadyLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TBevel.Create(WizardForm) do
    begin
      SetBounds(40,110, WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.ReadyLabel.AutoSize;
      SetBounds(40,70, WizardForm.ReadyLabel.Width, WizardForm.ReadyLabel.Height);
      WordWrap:= WizardForm.ReadyLabel.WordWrap;
      Caption:= WizardForm.ReadyLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.ReadyLabel.Font.Color;
          Style:= WizardForm.ReadyLabel.Font.Style;
          Name:= WizardForm.ReadyLabel.Font.Name;
          Size:= WizardForm.ReadyLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////InstallingPage//////////////////////////////////////
procedure InstallingPage;
begin
  with WizardForm.ProgressGauge do
    begin
      Left:= 40;
      Top:= 115;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.FilenameLabel.AutoSize;
      SetBounds(WizardForm.ProgressGauge.Left,WizardForm.ProgressGauge.Top-20,
                WizardForm.FilenameLabel.Width,WizardForm.FilenameLabel.Height);
      WordWrap:= WizardForm.FilenameLabel.WordWrap;
      Caption:= WizardForm.FilenameLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.FilenameLabel.Font.Color;
          Style:= WizardForm.FilenameLabel.Font.Style;
          Name:= WizardForm.FilenameLabel.Font.Name;
          Size:= WizardForm.FilenameLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.StatusLabel.AutoSize;
      SetBounds(WizardForm.StatusLabel.Left,WizardForm.StatusLabel.Top,
                WizardForm.StatusLabel.Width,WizardForm.StatusLabel.Height);
      WordWrap:= WizardForm.StatusLabel.WordWrap;
      Caption:= WizardForm.StatusLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.StatusLabel.Font.Color;
          Style:= WizardForm.StatusLabel.Font.Style;
          Name:= WizardForm.StatusLabel.Font.Name;
          Size:= WizardForm.StatusLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////FinishedPage//////////////////////////////////////
var
  CheckBox: array of TNewCheckBox;

procedure CheckBoxClick(Sender: TObject);
begin
  if TNewCheckBox(Sender).Checked then
    WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= True
  else WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= False;
end;

procedure LabelClick(Sender: TObject);
begin
  if CheckBox[TLabel(Sender).Tag].Checked then
    begin
      WizardForm.RunList.Checked[TLabel(Sender).Tag]:= False;
      CheckBox[TLabel(Sender).Tag].Checked:= False;
    end
  else
    begin
      WizardForm.RunList.Checked[TLabel(Sender).Tag]:= True;
      CheckBox[TLabel(Sender).Tag].Checked:= True;
    end;
end;

procedure HideRunList(Control: TWinControl);
var
  i, t: Integer;
  str: string;
begin
  if WizardForm.RunList.Items.Count > 0 then
    begin
      WizardForm.RunList.Hide;
      SetArrayLength(CheckBox, SizeOf(WizardForm.RunList.Items.Count));
      for i:= 0 to WizardForm.RunList.Items.Count-1 do
        begin
          CheckBox[i]:= TNewCheckBox.Create(Control);
          with CheckBox[i] do
            begin
              SetBounds(ScaleX(WizardForm.RunList.Left+2),ScaleY(WizardForm.RunList.Top+2+t),14,14);
              Tag:= i;
              Checked:= WizardForm.RunList.Checked[i];
              Caption:= WizardForm.RunList.Items.Strings[i];
              OnClick:= @CheckBoxClick;
              Color:= clWhite;
              Parent:= Control;
            end;
          str:= WizardForm.RunList.Items.Strings[i];
          with TLabel.Create(WizardForm) do
            begin
              SetBounds(ScaleX(WizardForm.RunList.Left+20),ScaleY(WizardForm.RunList.Top+2+t),
                        WizardForm.RunList.Width,14);
              Caption:= str;
              Tag:= i;
              OnClick:= @LabelClick;
              Transparent:= True;
              Parent:= Control;
            end;
          t:= t + 20;
        end;
    end;
end;

procedure FinishedPage;
begin
  HideRunList(pnl);
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.FinishedHeadingLabel.AutoSize;
      SetBounds(WizardForm.FinishedHeadingLabel.Left,WizardForm.FinishedHeadingLabel.Top,
                WizardForm.FinishedHeadingLabel.Width,WizardForm.FinishedHeadingLabel.Height);
      WordWrap:= WizardForm.FinishedHeadingLabel.WordWrap;
      Caption:= WizardForm.FinishedHeadingLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.FinishedHeadingLabel.Font.Color;
          Style:= WizardForm.FinishedHeadingLabel.Font.Style;
          Name:= WizardForm.FinishedHeadingLabel.Font.Name;
          Size:= WizardForm.FinishedHeadingLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.FinishedLabel.AutoSize;
      SetBounds(WizardForm.FinishedLabel.Left,WizardForm.FinishedLabel.Top,
                WizardForm.FinishedLabel.Width,WizardForm.FinishedLabel.Height);
      WordWrap:= WizardForm.FinishedLabel.WordWrap;
      Caption:= WizardForm.FinishedLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.FinishedLabel.Font.Color;
          Style:= WizardForm.FinishedLabel.Font.Style;
          Name:= WizardForm.FinishedLabel.Font.Name;
          Size:= WizardForm.FinishedLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

procedure CurPageChanged(CurPageID: Integer);
begin
  pnl:= TPanel.Create(WizardForm);
  with pnl do
    begin
      Align:= alClient;
      Parent:= WizardForm;
    end;
  with WizardForm do
    begin
      with WizardBitmapImage do
        begin
          Align:= alClient;
          Stretch:= True;
          Parent:= pnl;
        end;
      NextButton.Parent:= pnl;
      CancelButton.Parent:= pnl;
      BackButton.Parent:= pnl;
      Bevel.Parent:= pnl;
      pnl.Repaint;
    end;

  if (CurPageID > wpWelcome) and (CurPageID < wpFinished) then
    begin
      WizardForm.Bevel1.Parent:= pnl;
      with TLabel.Create(pnl) do
        begin
          AutoSize:= WizardForm.PageNameLabel.AutoSize;
          SetBounds(WizardForm.PageNameLabel.Left,WizardForm.PageNameLabel.Top,
                    WizardForm.PageNameLabel.Width,WizardForm.PageNameLabel.Height);
          Caption:= WizardForm.PageNameLabel.Caption;
          with Font do
            begin
              Color:= WizardForm.PageNameLabel.Font.Color;
              Style:= WizardForm.PageNameLabel.Font.Style;
              Name:= WizardForm.PageNameLabel.Font.Name;
              Size:= WizardForm.PageNameLabel.Font.Size;
            end;
          Transparent:= True;
          Parent:= pnl;
        end;
      with TLabel.Create(pnl) do
        begin
          AutoSize:= WizardForm.PageDescriptionLabel.AutoSize;
          SetBounds(WizardForm.PageDescriptionLabel.Left,WizardForm.PageDescriptionLabel.Top,
                    WizardForm.PageDescriptionLabel.Width,WizardForm.PageDescriptionLabel.Height);
          Caption:= WizardForm.PageDescriptionLabel.Caption;
          with Font do
            begin
              Color:= WizardForm.PageDescriptionLabel.Font.Color;
              Style:= WizardForm.PageDescriptionLabel.Font.Style;
              Name:= WizardForm.PageDescriptionLabel.Font.Name;
              Size:= WizardForm.PageDescriptionLabel.Font.Size;
            end;
          Transparent:= True;
          Parent:= pnl;
        end;
      pnl.Repaint;
    end;

  if CurPageID = wpWelcome then WelcomePage;
  if CurPageID = wpSelectDir then SelectDirPage;
  if CurPageID = wpReady then ReadyPage;
  if CurPageID = wpInstalling then InstallingPage;
  if CurPageID = wpFinished then FinishedPage;
end;



P.S.
Сделал для стандартных страниц (не все), остальные страницы если хотите, делайте по примеру.

volk1234 14-10-2009 01:10 1242288

Цитата:

Цитата Serega
Откровенно говоря, я уже устал его писать... »

Так смело добавляй в шапку раздел шаблоны :)

GrizzlyMK 14-10-2009 08:02 1242353

Serega,
Спосибо за скрипт...
Но вот ошибка.
Немогу понять изачево.

МИШАНЧИК 14-10-2009 08:23 1242356

Serega, по поводу
Цитата:

Цитата Serega
Откровенно говоря, я уже устал его писать...
Пример »

Пробую компилировать, выдаёт ошибку:
Line 266
Column 25
Unknown identifier "ItemCount"

В чём может быть проблемма(инно 5.3.5 от restools)?

Tukash 14-10-2009 14:16 1242596

GrizzlyMK
МИШАНЧИК

у меня тоже такая ошибка...

grinda 14-10-2009 15:11 1242649

Подскажите как в правом верхнем углу установить картинку любого размера

Tukash 14-10-2009 15:28 1242671

grinda
загони скрипт пож)))
хотябы на широкое окно инстала

A1EXXX 14-10-2009 16:24 1242720

GrizzlyMK, МИШАНЧИК, Tukash, у меня нормально компилится (Inno ANSI ResTools...)

Tukash 14-10-2009 16:33 1242729

A1EXXX
у меня inno setup ANSI 5.3.5. и не идет(((покажи свой скрипт мож что-то мы не так поняли...

A1EXXX 14-10-2009 16:46 1242744

Tukash,
читать дальше »

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

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

[Run]
Filename: {app}\MyProg.exe; Description: Запустить программу My Program?; Flags: postinstall nowait skipifsilent

[code]
var
pnl: TPanel;

///////////////////////WelcomePage//////////////////////////////////////
procedure WelcomePage;
begin
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.WelcomeLabel1.AutoSize;
SetBounds(WizardForm.WelcomeLabel1.Left,WizardForm.WelcomeLabel1.Top,
WizardForm.WelcomeLabel1.Width,WizardForm.WelcomeLabel1.Height);
WordWrap:= WizardForm.WelcomeLabel1.WordWrap;
Caption:= WizardForm.WelcomeLabel1.Caption;
with Font do
begin
Color:= WizardForm.WelcomeLabel1.Font.Color;
Style:= WizardForm.WelcomeLabel1.Font.Style;
Name:= WizardForm.WelcomeLabel1.Font.Name;
Size:= WizardForm.WelcomeLabel1.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.WelcomeLabel2.AutoSize;
SetBounds(WizardForm.WelcomeLabel2.Left,WizardForm.WelcomeLabel2.Top,
WizardForm.WelcomeLabel2.Width,WizardForm.WelcomeLabel2.Height);
WordWrap:= WizardForm.WelcomeLabel2.WordWrap;
Caption:= WizardForm.WelcomeLabel2.Caption;
with Font do
begin
Color:= WizardForm.WelcomeLabel2.Font.Color;
Style:= WizardForm.WelcomeLabel2.Font.Style;
Name:= WizardForm.WelcomeLabel2.Font.Name;
Size:= WizardForm.WelcomeLabel2.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////SelectDirPage//////////////////////////////////////
procedure SelectDirPage;
begin
with WizardForm do
begin
with DirEdit do
begin
Left:= 40;
Top:= 137;
Parent:= pnl;
end;
with DirBrowseButton do
begin
Left:= WizardForm.DirEdit.Left + WizardForm.DirEdit.Width + 10;
Top:= WizardForm.DirEdit.Top - 1;
Parent:= pnl;
end;
with SelectDirBitmapImage do
begin
Left:= WizardForm.DirEdit.Left;
Top:= WizardForm.DirEdit.Top - 62;
Stretch:= True;
Parent:= pnl;
end;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.SelectDirBrowseLabel.AutoSize;
SetBounds(WizardForm.DirEdit.Left,WizardForm.DirEdit.Top - 30,
WizardForm.SelectDirBrowseLabel.Width, WizardForm.SelectDirBrowseLabel.Height);
WordWrap:= WizardForm.SelectDirBrowseLabel.WordWrap;
Caption:= WizardForm.SelectDirBrowseLabel.Caption;
with Font do
begin
Color:= WizardForm.SelectDirBrowseLabel.Font.Color;
Style:= WizardForm.SelectDirBrowseLabel.Font.Style;
Name:= WizardForm.SelectDirBrowseLabel.Font.Name;
Size:= WizardForm.SelectDirBrowseLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.SelectDirLabel.AutoSize;
SetBounds(WizardForm.SelectDirBitmapImage.Left + 50,WizardForm.SelectDirBitmapImage.Top + 10,
WizardForm.SelectDirLabel.Width,WizardForm.SelectDirLabel.Height);
WordWrap:= WizardForm.SelectDirLabel.WordWrap;
Caption:= WizardForm.SelectDirLabel.Caption;
with Font do
begin
Color:= WizardForm.SelectDirLabel.Font.Color;
Style:= WizardForm.SelectDirLabel.Font.Style;
Name:= WizardForm.SelectDirLabel.Font.Name;
Size:= WizardForm.SelectDirLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.DiskSpaceLabel.AutoSize;
SetBounds(WizardForm.DirEdit.Left,WizardForm.Bevel.Top - 25,
WizardForm.DiskSpaceLabel.Width,WizardForm.DiskSpaceLabel.Height);
WordWrap:= WizardForm.DiskSpaceLabel.WordWrap;
Caption:= WizardForm.DiskSpaceLabel.Caption;
with Font do
begin
Color:= WizardForm.DiskSpaceLabel.Font.Color;
Style:= WizardForm.DiskSpaceLabel.Font.Style;
Name:= WizardForm.DiskSpaceLabel.Font.Name;
Size:= WizardForm.DiskSpaceLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////ReadyPage//////////////////////////////////////
procedure ReadyPage;
var
ready_str: string;
begin
ready_str:= WizardForm.ReadyMemo.Text;
with TLabel.Create(pnl) do
begin
SetBounds(45,115,WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
Caption:= ready_str;
with Font do
begin
Color:= WizardForm.ReadyLabel.Font.Color;
Style:= WizardForm.ReadyLabel.Font.Style;
Name:= WizardForm.ReadyLabel.Font.Name;
Size:= WizardForm.ReadyLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TBevel.Create(WizardForm) do
begin
SetBounds(40,110, WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.ReadyLabel.AutoSize;
SetBounds(40,70, WizardForm.ReadyLabel.Width, WizardForm.ReadyLabel.Height);
WordWrap:= WizardForm.ReadyLabel.WordWrap;
Caption:= WizardForm.ReadyLabel.Caption;
with Font do
begin
Color:= WizardForm.ReadyLabel.Font.Color;
Style:= WizardForm.ReadyLabel.Font.Style;
Name:= WizardForm.ReadyLabel.Font.Name;
Size:= WizardForm.ReadyLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////InstallingPage//////////////////////////////////////
procedure InstallingPage;
begin
with WizardForm.ProgressGauge do
begin
Left:= 40;
Top:= 115;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.FilenameLabel.AutoSize;
SetBounds(WizardForm.ProgressGauge.Left,WizardForm.ProgressGauge.Top-20,
WizardForm.FilenameLabel.Width,WizardForm.FilenameLabel.Height);
WordWrap:= WizardForm.FilenameLabel.WordWrap;
Caption:= WizardForm.FilenameLabel.Caption;
with Font do
begin
Color:= WizardForm.FilenameLabel.Font.Color;
Style:= WizardForm.FilenameLabel.Font.Style;
Name:= WizardForm.FilenameLabel.Font.Name;
Size:= WizardForm.FilenameLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.StatusLabel.AutoSize;
SetBounds(WizardForm.StatusLabel.Left,WizardForm.StatusLabel.Top,
WizardForm.StatusLabel.Width,WizardForm.StatusLabel.Height);
WordWrap:= WizardForm.StatusLabel.WordWrap;
Caption:= WizardForm.StatusLabel.Caption;
with Font do
begin
Color:= WizardForm.StatusLabel.Font.Color;
Style:= WizardForm.StatusLabel.Font.Style;
Name:= WizardForm.StatusLabel.Font.Name;
Size:= WizardForm.StatusLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////FinishedPage//////////////////////////////////////
var
CheckBox: array of TNewCheckBox;

procedure CheckBoxClick(Sender: TObject);
begin
if TNewCheckBox(Sender).Checked then
WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= True
else WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= False;
end;

procedure LabelClick(Sender: TObject);
begin
if CheckBox[TLabel(Sender).Tag].Checked then
begin
WizardForm.RunList.Checked[TLabel(Sender).Tag]:= False;
CheckBox[TLabel(Sender).Tag].Checked:= False;
end
else
begin
WizardForm.RunList.Checked[TLabel(Sender).Tag]:= True;
CheckBox[TLabel(Sender).Tag].Checked:= True;
end;
end;

procedure HideRunList(Control: TWinControl);
var
i, t: Integer;
str: string;
begin
if WizardForm.RunList.ItemCount > 0 then
begin
WizardForm.RunList.Hide;
SetArrayLength(CheckBox, SizeOf(WizardForm.RunList.ItemCount));
for i:= 0 to WizardForm.RunList.ItemCount-1 do
begin
CheckBox[i]:= TNewCheckBox.Create(Control);
with CheckBox[i] do
begin
SetBounds(ScaleX(WizardForm.RunList.Left+2),ScaleY(WizardForm.RunList.Top+2+t),14,14);
Tag:= i;
Checked:= WizardForm.RunList.Checked[i];
Caption:= WizardForm.RunList.Items.Strings[i];
Brush.Style:= bsClear;
OnClick:= @CheckBoxClick;
Color:= clWhite;
Parent:= Control;
end;
str:= WizardForm.RunList.Items.Strings[i];
with TLabel.Create(WizardForm) do
begin
SetBounds(ScaleX(WizardForm.RunList.Left+20),ScaleY(WizardForm.RunList.Top+2+t),
WizardForm.RunList.Width,14);
Caption:= str;
Tag:= i;
OnClick:= @LabelClick;
Transparent:= True;
Parent:= Control;
end;
t:= t + 20;
end;
end;
end;

procedure FinishedPage;
begin
HideRunList(pnl);
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.FinishedHeadingLabel.AutoSize;
SetBounds(WizardForm.FinishedHeadingLabel.Left,WizardForm.FinishedHeadingLabel.Top,
WizardForm.FinishedHeadingLabel.Width,WizardForm.FinishedHeadingLabel.Height);
WordWrap:= WizardForm.FinishedHeadingLabel.WordWrap;
Caption:= WizardForm.FinishedHeadingLabel.Caption;
with Font do
begin
Color:= WizardForm.FinishedHeadingLabel.Font.Color;
Style:= WizardForm.FinishedHeadingLabel.Font.Style;
Name:= WizardForm.FinishedHeadingLabel.Font.Name;
Size:= WizardForm.FinishedHeadingLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.FinishedLabel.AutoSize;
SetBounds(WizardForm.FinishedLabel.Left,WizardForm.FinishedLabel.Top,
WizardForm.FinishedLabel.Width,WizardForm.FinishedLabel.Height);
WordWrap:= WizardForm.FinishedLabel.WordWrap;
Caption:= WizardForm.FinishedLabel.Caption;
with Font do
begin
Color:= WizardForm.FinishedLabel.Font.Color;
Style:= WizardForm.FinishedLabel.Font.Style;
Name:= WizardForm.FinishedLabel.Font.Name;
Size:= WizardForm.FinishedLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

procedure CurPageChanged(CurPageID: Integer);
begin
pnl:= TPanel.Create(WizardForm);
with pnl do
begin
Align:= alClient;
Parent:= WizardForm;
end;
with WizardForm do
begin
with WizardBitmapImage do
begin
Align:= alClient;
Stretch:= True;
Parent:= pnl;
end;
NextButton.Parent:= pnl;
CancelButton.Parent:= pnl;
BackButton.Parent:= pnl;
Bevel.Parent:= pnl;
pnl.Repaint;
end;

if (CurPageID > wpWelcome) and (CurPageID < wpFinished) then
begin
WizardForm.Bevel1.Parent:= pnl;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.PageNameLabel.AutoSize;
SetBounds(WizardForm.PageNameLabel.Left,WizardForm.PageNameLabel.Top,
WizardForm.PageNameLabel.Width,WizardForm.PageNameLabel.Height);
Caption:= WizardForm.PageNameLabel.Caption;
with Font do
begin
Color:= WizardForm.PageNameLabel.Font.Color;
Style:= WizardForm.PageNameLabel.Font.Style;
Name:= WizardForm.PageNameLabel.Font.Name;
Size:= WizardForm.PageNameLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.PageDescriptionLabel.AutoSize;
SetBounds(WizardForm.PageDescriptionLabel.Left,WizardForm.PageDescriptionLabel.Top,
WizardForm.PageDescriptionLabel.Width,WizardForm.PageDescriptionLabel.Height);
Caption:= WizardForm.PageDescriptionLabel.Caption;
with Font do
begin
Color:= WizardForm.PageDescriptionLabel.Font.Color;
Style:= WizardForm.PageDescriptionLabel.Font.Style;
Name:= WizardForm.PageDescriptionLabel.Font.Name;
Size:= WizardForm.PageDescriptionLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;

if CurPageID = wpWelcome then WelcomePage;
if CurPageID = wpSelectDir then SelectDirPage;
if CurPageID = wpReady then ReadyPage;
if CurPageID = wpInstalling then InstallingPage;
if CurPageID = wpFinished then FinishedPage;
end;
он точно такой же, разница лишь в присутствии других секций....

Serega, а можете сделать, чтобы картинка растягивалась и на SelectComponents, SelectProgramGroup, SelectTasks, Preparing??? (если это не будет портить вид окна интсалла....)

Serega 14-10-2009 16:56 1242754

Цитата:

Цитата GrizzlyMK
Но вот ошибка. »

Цитата:

Цитата МИШАНЧИК
Пробую компилировать, выдаёт ошибку »

Извиняюсь, сразу не проверил на стандартной версии.
Исправил в своём предыдущем сообщении. Просто нужно было заменить WizardForm.RunList.ItemCount на WizardForm.RunList.Items.Count, а также убрать Brush.Style:= bsClear; остальное всё одинаково...

Цитата:

Цитата МИШАНЧИК
инно 5.3.5 от restools »

У меня есть все версии, но по умолчанию стоит InnoCompiler091007 + Inno_ISCmplr_Setup от Restools

Цитата:

Цитата A1EXXX
а можете сделать, чтобы картинка растягивалась и на SelectComponents, SelectProgramGroup, SelectTasks, Preparing??? (если это не будет портить вид окна интсалла....) »

Честно говоря, я на этот пример убил четыре вечера...
Скажу сразу, со страницей SelectComponents, могут возникнуть трудности с прорисовкой.
SelectProgramGroup и SelectProgramGroup - в принципе, все также как и SelectDirPage, т.е. по аналогии.
SelectTasks - здесь придётся как и на FinishedPage, автоматом создавать лейблы и чебоксы.
Preparing - я про неё только слышал, но ни разу не видел в глаза... Если у вас есть простенький пример, с показом этой страницы, то покажите пожалуйста скрипт, очень интересно.

A1EXXX 14-10-2009 17:24 1242804

Цитата:

Цитата Serega
Preparing... »

Это я перепутал со страницей "Всё готово к установке" :blush2:
Спасибо за подсказку, разберусь! :)

x-net 14-10-2009 17:35 1242817

A1EXXX дай ссылку на твой inno который пользуешься

A1EXXX 14-10-2009 17:46 1242831

x-net, Inno Setup 5.35 + Compiler от ResTools + поверх (чтоб на русском было) Русская версия ISC от ResTools

Serega 14-10-2009 18:55 1242935

Цитата:

Цитата A1EXXX
+ поверх (чтоб на русском было) »

Но тогда Inno станет 5.2.3, в место 5.3.5

Serega 14-10-2009 19:38 1243004

Здравствуйте, где-то видел вопрос, но уже не могу найти где... Одним словом он меня заинтирестовал.
Суть вопроса: "Как сделать прозрачным часть окна инсталлятора, где расположены кнопки, но чтоб кнопки были видны."
Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
const
  GWL_EXSTYLE  = -20;
  WS_EX_LAYERED = $00080000;
  LWA_COLORKEY  = $00000001;

// задаёт прозрачность окна
function SetLayeredWindowAttributes(hwnd: hWnd; crKey: TColor; bAlpha: byte; dwFlags: DWORD): Boolean;
  external 'SetLayeredWindowAttributes@user32.dll stdcall';
// считывает инфоpмацию об окне или о значениях дополнительного байта окна
function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
// заменяет для окна атpибут стpуктуpы класса окна новым значением
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint;
  external 'SetWindowLongA@user32.dll stdcall';

procedure InitializeWizard();
begin
  with TPanel.Create(WizardForm) do
    begin                   
      SetBounds(0, WizardForm.Bevel.Top, WizardForm.Width, WizardForm.Height-WizardForm.Bevel.Top);
      Color:= clGreen;
      Parent:= WizardForm;
    end;
  with TPanel.Create(WizardForm) do
    begin
      SetBounds(WizardForm.NextButton.Left, WizardForm.NextButton.Top,
                WizardForm.NextButton.Width, WizardForm.NextButton.Height);
      WizardForm.NextButton.Parent:= TPanel.Create(WizardForm);
      // теоретически, второе должно переназначать первое, но почему-то работает только так:
      WizardForm.NextButton.Parent:= WizardForm;
      Free; // здесь тоже непонятно, по идее панель должна сразу разрушаться, но...
    end;
  with TPanel.Create(WizardForm) do
    begin
      SetBounds(WizardForm.CancelButton.Left, WizardForm.CancelButton.Top,
                WizardForm.CancelButton.Width, WizardForm.CancelButton.Height);
      WizardForm.CancelButton.Parent:= TPanel.Create(WizardForm);
      WizardForm.CancelButton.Parent:= WizardForm;
      Free;
    end;
  SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
  SetLayeredWindowAttributes(WizardForm.Handle, clGreen, 0, LWA_COLORKEY);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID > wpWelcome then
  with TPanel.Create(WizardForm) do
    begin
      SetBounds(WizardForm.BackButton.Left, WizardForm.BackButton.Top,
                WizardForm.BackButton.Width, WizardForm.BackButton.Height);
      WizardForm.BackButton.Parent:= TPanel.Create(WizardForm);
      WizardForm.BackButton.Parent:= WizardForm;
      Free;
    end;
end;


MrAWP 14-10-2009 19:51 1243022

serg aka lain, спасибо, работает. Но есть проблема - у меня распаковка архива начинается только если выбранный компонент arc_yes, но инсталлятор, даже если компонент отключен, все равно запрашивает этот файл :( Нельзя ли как то связать компонент с проверкой?

Wiper 14-10-2009 20:33 1243068

Serega спасибо за Converter Reg,отличная прога :good:

serg aka lain 14-10-2009 20:58 1243108

Цитата:

Цитата Serega
"Как сделать прозрачным часть окна инсталлятора, где расположены кнопки, но чтоб кнопки были видны." »

Ооо, WinApi. Вы случаем не знаете, как сделать средствами WinApi кнопки плоскими, ну как в классической теме,
знаю что вид кнопок зависит от текущего оформления винды, но всёж хотелось.

A1EXXX 14-10-2009 20:59 1243111

Serega, в последней версии компилятора от RT у меня Мастер скриптов не работал... в любом случае, из всех перепробованных связок, эта самая безотказная :)

serg aka lain 14-10-2009 21:04 1243119

Цитата:

Цитата MrAWP
Нельзя ли как то связать компонент с проверкой? »

Код:

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
    if IsComponentSelected('имя_компонента') then
      if not FileExists(ExpandConstant('{src}\archieve.exe')) then
      begin
        SuppressibleMsgBox('Файл archieve.exe не найден в папке с инсталлятором!', mbCriticalError, MB_OK, MB_OK);
        Abort;
      end;
end;


MrAWP 14-10-2009 21:34 1243158

serg aka lain спасибо) уже до самого дошло)

GrizzlyMK 14-10-2009 21:54 1243176

Подскажите как испаравить.

A1EXXX 14-10-2009 21:57 1243180

Меня заинтересовал репак от ЕagleSH, вот скрины: 1 2 3 4 5
Может ли кто-нибудь такое смастерить??? P.S. У него видео растянуто по инсталлу & распаковка FreeArc :)

Накопилось несколько вопросов, помогайте кто чем может ;)
1) Как сделать, чтобы когда игру уже установлена, при запуске инсталла выскакивало такое вот окошко?
2) Подскажите связку Precomp + FreeArc, если нужно прекомпить много мелких файлов. Можно сначала файлы паконуть 7-zip'ом без сжатия, потом Precomp & FreeArc. Может есть связка попроще? А если нет, то можно сделать так, чтоб после распаковки *.arc-архивов (при использовании скрипта Bulat'а v3.3) начиналась рекомпрессия, и лишь потом распаковка 7z. И можно сделать так, чтоб последние две стадии были с прогресс-барами??
3) Ещё есть такой баг: использую скрипт для лого в углу, но начиная со страницы выбора папки установки кликабельность ссылки пропадает!!! Какая процедура (из какого-то другого скрипта) может такое делать??
читать дальше »

[Files]
Source: C:\logo.bmp; DestDir: {tmp}; Flags: dontcopy

[code]
var
LogoImage:TBitmapImage;
LogoLabel: TLabel;
LogoPanel: TPanel;

procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://сайт.ру', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('logo.bmp');
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(5);
Top := ScaleY(320);
Width := ScaleX(165);
Height := ScaleY(35);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent := LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoOnClick;
end;
end;

BlackSelf 14-10-2009 22:21 1243203

A1EXXX, на данный момент в условиях инно такое сделать нельзя (если очень хочется, переходи на ммб). Так как при размещении видео перекрываются все элементы, кроме edit'ов и различных button'ов с чек-боксами.
1).
читать дальше »
Код:

[_code]
function InitializeSetup(): Boolean;
var
ResultCode:Integer;
ResultReg:string;
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'Software\2K Sports\NBA 2K10','InstallDir') then
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\2K Sports\NBA 2K10','InstallDir', ResultReg)
if MsgBox('Запустить NBA 2K10?',mbconfirmation, mb_YesNo) = IDYES then
Exec(ResultReg+'\nba2k10.exe', '', '', SW_SHOW,ewNoWait, ResultCode)
end;
end;


2). Декомпрессию и распаковку архива сделать можно, но отобразить на прогресс-баре пока не удастся.
3). Показывай весь скрипт, тогда можно будет что-то сказать, а гадать, "какая процедура (из какого-то другого скрипта) может такое делать", мы можем долго.

Serega 14-10-2009 22:32 1243222

Цитата:

Цитата Wiper
спасибо за Converter »

Пользуйтесь на здоровье :wink:

Цитата:

Цитата serg aka lain
Вы случаем не знаете, как сделать средствами WinApi кнопки плоскими, ну как в классической теме »

Не сталкивался с таким, подумаю на досуге...

Цитата:

Цитата A1EXXX
в последней версии компилятора от RT у меня Мастер скриптов не работал... »

Есть такое дело, но я не использую мастера.
Просто на скорую руку, сделал для себя прогу и повесил кнопку в Total Commander. Нужна болванка скрипта, я нажимаю на кнопку и болванка готова...

Цитата:

Цитата A1EXXX
Какая процедура (из какого-то другого скрипта) может такое делать?? »

Любая, которая создаёт, что-то поверх или переназначает LogoLabel. Присмотритесь к процедурам CurPageChanged, NextButtonClick, CurStepChanged.

A1EXXX 14-10-2009 22:40 1243232

Вложений: 1
Цитата:

Цитата BlackSelf
в условиях инно такое сделать нельзя »

Т.е. инсталлятор, который на скринах, сделан не в Inno??
Цитата:

Цитата BlackSelf
Декомпрессию и распаковку архива сделать можно »

Можно это как-то упростить (не так, как я описал выше)??

Готовый скрипт не храню (каждый раз пишу заново), состряпал по-быстрому [прикрепил]...

BlackSelf 14-10-2009 22:55 1243249

Цитата:

Цитата A1EXXX
Т.е. инсталлятор, который на скринах, сделан не в Inno?? »

Нет. Это ммб. В инно сделан setup_.exe
Цитата:

Цитата A1EXXX
Можно это как-то упростить (не так, как я описал выше)?? »

Запаковать по одному файлу через for /r %%a in (*.*) do precomp04.exe -slow "%%a"
Ну и распаковать также, только с параметром -r и по маске *.pcf
По крайней мере, 7zip не надо будет использовать.

A1EXXX 14-10-2009 23:11 1243257

BlackSelf, можешь на примере любого файла расписать упаковку и распаковку (и как это всё в скрипте прописать), а то даже не знаю, туда ли параметры написал :(
Где при этом должен быть файл precomp04.exe? И "по одному файлу" - это как?? Если это для нескольких больших, то понятно, а если много мелких, то чёт не очень...

Serega 14-10-2009 23:22 1243266

Цитата:

Цитата GrizzlyMK
Подскажите как испаравить. »

читать дальше »
Код:

; Автор kombat 77 http://forum.ru-board.com/profile.cgi?action=show&member=kombat 77
[Setup]
AppName=Test
AppVerName=Test v 1.0
DefaultDirName={pf}\Test
OutputDir=userdocs:Test.
Uninstallable=False

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

[Icons]
Name: "{userdesktop}\notepad"; Filename: "{win}\notepad.exe";

[Files]
Source: FileName1; Flags: dontcopy
Source: FileName2; Flags: dontcopy

[Code]
function GetModuleHandle(lpModuleName: LongInt): LongInt;
 external 'GetModuleHandleA@kernel32.dll stdcall';

function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt;
 external 'ExtractIconA@shell32.dll stdcall';

function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
 external 'DrawIconEx@user32.dll stdcall';

procedure InitializeWizard();
var
  Rect: TRect;
  HIcon: LongInt;
begin
  ExtractTemporaryFile('FileName1');
  HIcon := ExtractIcon(GetModuleHandle(0), ExpandConstant('{tmp}\FileName1'), 0);
  WizardForm.SelectDirBitmapImage.Hide;
  with TBitmapImage.Create(WizardForm) do
  begin
    SetBounds(WizardForm.SelectDirBitmapImage.Left, WizardForm.SelectDirBitmapImage.Top, ScaleX(32), ScaleY(32));
    with Bitmap do
    begin
      Width := ScaleX(32);
      Height := ScaleY(32);
      Rect.Right := ScaleX(32);
      Rect.Bottom := ScaleY(32);
      Rect.Left := ScaleX(0);
      Rect.Top := ScaleY(0);
      Canvas.Brush.Color := WizardForm.Color;
      Canvas.FillRect(Rect);
      DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
    end;
    Parent := WizardForm.SelectDirPage;
  end;

  ExtractTemporaryFile('FileName2');
  HIcon := ExtractIcon(GetModuleHandle(0), ExpandConstant('{tmp}\FileName2'), 0);
  WizardForm.SelectGroupBitmapImage.Hide;
  with TBitmapImage.Create(WizardForm) do
  begin
    SetBounds(WizardForm.SelectGroupBitmapImage.Left, WizardForm.SelectGroupBitmapImage.Top, ScaleX(32), ScaleY(32));
    with Bitmap do
    begin
      Width := ScaleX(32);
      Height := ScaleY(32);
      Rect.Right := ScaleX(32);
      Rect.Bottom := ScaleY(32);
      Rect.Left := ScaleX(0);
      Rect.Top := ScaleY(0);
      Canvas.Brush.Color := WizardForm.Color;
      Canvas.FillRect(Rect);
      DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
    end;
    Parent := WizardForm.SelectProgramGroupPage;
  end;
end;



Цитата:

Цитата BlackSelf
Нет. Это ммб. В инно сделан setup_.exe »

мне кажется, это на Inno, а видео - это помоему сделано с помощью isFlash.dll от ExpeditoR'a.
Хотя я могу и ошибаться.

BlackSelf 14-10-2009 23:27 1243269

A1EXXX, кинул в лс.
Serega, у меня есть исходники от игла. Сделано всё на ммб. С помощью isFlash, к огромному сожалению, такое сделать невозможно(

A1EXXX 14-10-2009 23:47 1243280

BlackSelf, а можно на исходники взглянуть? Интересно, как там всё устроено :)
(ответ получен...)

МИШАНЧИК 15-10-2009 01:59 1243343

Serega,
Цитата:

Цитата Serega
У меня есть все версии, но по умолчанию стоит InnoCompiler091007 + Inno_ISCmplr_Setup от Restools »

А вот из
Цитата:

Цитата Serega
Inno_ISCmplr_Setup»

что нужно использовать?

x-net 15-10-2009 06:46 1243390


1.Как туда вставить ссылку с картинкой и черточкой под кнопками?
2.Как поменять кнопки на свои?
3.Можно ли поменять шрифт в заголовке на свой в системе?

Serega 15-10-2009 17:41 1243855

Цитата:

Цитата МИШАНЧИК
что нужно использовать? »

Я использую все файлы из InnoSetup_ANSI\FullVCL\*

MrAWP 15-10-2009 22:10 1244109

Кто знает - возможно ли на странице компонентов прикрутить комментарий к каждому компоненту? Желательно чтобы он отображался под полем компонентов (над кнопками далее и отмена). Спасибо.

Serega 16-10-2009 00:34 1244218

Цитата:

Цитата serg aka lain
как сделать средствами WinApi кнопки плоскими »

Сделал не на WinApi, а с помощью панелей, но обычный Inno не понимает OnMouseDown и OnMouseUp...
Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
var
  Backbtn, Nextbtn, Cancelbtn: TPanel;

procedure MouseDown(Sender: TObject; TButton: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  TPanel(Sender).BorderStyle:= bsSingle;
end;

procedure MouseUp(Sender: TObject; TButton: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  TPanel(Sender).BorderStyle:= bsNone;
end;

procedure Click(Sender: TObject);
begin
  case TPanel(Sender) of
    Backbtn: WizardForm.BackButton.OnClick(WizardForm.BackButton);
    Nextbtn: WizardForm.NextButton.OnClick(WizardForm.NextButton);
    Cancelbtn: WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
  end;
end;

procedure CancelbtnClick(Sender: TObject);
begin
  WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
end;

procedure InitializeWizard;
begin
  Backbtn:= TPanel.Create(WizardForm.BackButton);
  with Backbtn do
    begin
      SetBounds(WizardForm.BackButton.Left, WizardForm.BackButton.Top,
                WizardForm.BackButton.Width, WizardForm.BackButton.Height);
      BorderStyle:= bsNone;
      BevelOuter:= bvRaised;
      OnClick:= @Click;
      OnMouseDown:= @MouseDown;
      OnMouseUp:= @MouseUp;
      Parent:= WizardForm;
    end;
  Nextbtn:= TPanel.Create(WizardForm.NextButton);
  with Nextbtn do
    begin
      SetBounds(WizardForm.NextButton.Left, WizardForm.NextButton.Top,
                WizardForm.NextButton.Width, WizardForm.NextButton.Height);
      BorderStyle:= bsNone;
      BevelOuter:= bvRaised;
      OnClick:= @Click;
      OnMouseDown:= @MouseDown;
      OnMouseUp:= @MouseUp;
      Parent:= WizardForm;
    end;
  Cancelbtn:= TPanel.Create(WizardForm.NextButton);
  with Cancelbtn do
    begin
      SetBounds(WizardForm.CancelButton.Left, WizardForm.CancelButton.Top,
                WizardForm.CancelButton.Width, WizardForm.CancelButton.Height);
      BorderStyle:= bsNone;
      OnClick:= @Click;
      OnMouseDown:= @MouseDown;
      OnMouseUp:= @MouseUp;
      Parent:= WizardForm;
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  Backbtn.Caption:= WizardForm.BackButton.Caption;
  Backbtn.Visible:= WizardForm.BackButton.Visible;
  Nextbtn.Caption:= WizardForm.NextButton.Caption;
  Nextbtn.Visible:= WizardForm.NextButton.Visible;
  Cancelbtn.Caption:= WizardForm.CancelButton.Caption;
  Cancelbtn.Visible:= WizardForm.CancelButton.Visible;
end;


A1EXXX 16-10-2009 20:25 1244862

Как сделать, чтобы аддон к игре устанавливался строго в папку оригинала без возможности изменения пути установки, и чтоб если оригинала нет (в реестре; подхватывало путь из него), выскакивало такое окошко???

BlackSelf 16-10-2009 20:57 1244895

A1EXXX,
читать дальше »
Код:

[Setup]
AppName=NBA 2K10
AppVerName=NBA 2K10
DefaultDirName={reg:HKLM\Software\2K Sports\NBA 2K10,InstallDir}
OutputDir=.

[_code]
function InitializeSetup(): Boolean;
var
ResultCode:Integer;
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'Software\2K Sports\NBA 2K10','InstallDir')
then
  Result := True
else
MsgBox('Игра NBA 2K10 не найдена.',mbInformation, mb_Ok)
end;

Procedure InitializeWizard();
begin
WizardForm.DirEdit.Enabled:=False;
WizardForm.DirBrowseButton.Enabled:=False;
end;


A1EXXX 16-10-2009 21:23 1244916

BlackSelf, Thank you, man! ;) :oszone:

A1EXXX 16-10-2009 21:44 1244931

Вложений: 1

Немного поправил скрипт от ResTools для добавления анимации (копирования) на страницу процесса инсталляции;
необходимое прикрепил, визуально - смотрим скрин ;)
Исходники можно взять здесь

serg aka lain 16-10-2009 22:15 1244954

Цитата:

Цитата Serega
Сделал не на WinApi, а с помощью панелей, но обычный Inno не понимает OnMouseDown и OnMouseUp... »

Да я тоже так пытался, только на панели ещё и лейблы натягивал, но у моего и у Вашего варианта есть один и тот-же недостаток, если нажать кнопку, а затем сдвинуть мышей в сторону, она (кнопка) назад уже не отжимается (до следующего нажатия), как это побороть не соображу. Ну вот и думал как-то через API можно.

з.ы. Если интересно вышлю свой пример в личку.

Crysis23 17-10-2009 11:34 1245208

Вложений: 2
Привет Всем!Можете сказать скрипт от этой установки :)

Bambaso 17-10-2009 21:38 1245639

Подскажите пожалуйста возможно ли в innosetup изменить диалоговые сообщения в процессе установки приложения. ( Далее, назад завершить и всё такое )?

serg aka lain 17-10-2009 22:08 1245657

Цитата:

Цитата Bambaso
Подскажите пожалуйста возможно ли в innosetup изменить диалоговые сообщения в процессе установки приложения. ( Далее, назад завершить и всё такое )? »

Конечно, возможно.

SinCore 18-10-2009 11:43 1245939

Подскажите пожалуйста,есть запакованные файлы в архив 7z хотелось бы прикрутить установщик что бы распаковывал это архив в ту директорию которую выбераешь в установщике.

Serega 18-10-2009 14:44 1246074

Цитата:

Цитата serg aka lain
но у моего и у Вашего варианта есть один и тот-же недостаток, если нажать кнопку, а затем сдвинуть мышей в сторону, она (кнопка) назад уже не отжимается (до следующего нажатия), как это побороть не соображу »

Я тоже не мог сразу сообразить, но вот в итоге, что вышло :) :
Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
var
  Backbtn, Nextbtn, Cancelbtn: TPanel;

procedure MouseDown(Sender: TObject; TButton: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  TPanel(Sender).BorderStyle:= bsSingle;
end;

procedure MouseUp(Sender: TObject; TButton: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  TPanel(Sender).BorderStyle:= bsNone;
end;

procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  case TWinControl(Sender) of
    WizardForm:
      begin
        Backbtn.BorderStyle:= bsNone;
        Nextbtn.BorderStyle:= bsNone;
        Cancelbtn.BorderStyle:= bsNone;
      end;
  end;
end;

procedure Click(Sender: TObject);
begin
  case TPanel(Sender) of
    Backbtn: WizardForm.BackButton.OnClick(WizardForm.BackButton);
    Nextbtn: WizardForm.NextButton.OnClick(WizardForm.NextButton);
    Cancelbtn:
      begin
        Cancelbtn.BorderStyle:= bsNone;
        WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
      end;
  end;
end;

procedure InitializeWizard;
begin
  WizardForm.OnMouseMove:= @MouseMove;
  Backbtn:= TPanel.Create(WizardForm.BackButton);
  with Backbtn do
    begin
      SetBounds(WizardForm.BackButton.Left, WizardForm.BackButton.Top,
                WizardForm.BackButton.Width, WizardForm.BackButton.Height);
      BorderStyle:= bsNone;
      OnClick:= @Click;
      OnMouseDown:= @MouseDown;
      OnMouseUp:= @MouseUp;
      Parent:= WizardForm;
    end;
  Nextbtn:= TPanel.Create(WizardForm.NextButton);
  with Nextbtn do
    begin
      SetBounds(WizardForm.NextButton.Left, WizardForm.NextButton.Top,
                WizardForm.NextButton.Width, WizardForm.NextButton.Height);
      BorderStyle:= bsNone;
      OnClick:= @Click;
      OnMouseDown:= @MouseDown;
      OnMouseUp:= @MouseUp;
      Parent:= WizardForm;
    end;
  Cancelbtn:= TPanel.Create(WizardForm.NextButton);
  with Cancelbtn do
    begin
      SetBounds(WizardForm.CancelButton.Left, WizardForm.CancelButton.Top,
                WizardForm.CancelButton.Width, WizardForm.CancelButton.Height);
      BorderStyle:= bsNone;
      OnClick:= @Click;
      OnMouseDown:= @MouseDown;
      OnMouseUp:= @MouseUp;
      Parent:= WizardForm;
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  Backbtn.Caption:= WizardForm.BackButton.Caption;
  Backbtn.Visible:= WizardForm.BackButton.Visible;
  Nextbtn.Caption:= WizardForm.NextButton.Caption;
  Nextbtn.Visible:= WizardForm.NextButton.Visible;
  Cancelbtn.Caption:= WizardForm.CancelButton.Caption;
  Cancelbtn.Visible:= WizardForm.CancelButton.Visible;
end;



Цитата:

Цитата Bambaso
изменить диалоговые сообщения в процессе установки приложения »

Сформулируйте более точнее, что вы хотите сделать.

Цитата:

Цитата SinCore
запакованные файлы в архив 7z хотелось бы прикрутить установщик что бы распаковывал »

В шапке есть Inno Setup Scripting 5.1 - руководство по расширенным возможностям Inno Setup от Kindly, там есть примеры для работы с 7z.

serg aka lain 18-10-2009 19:54 1246330

Serega, благодарю за желание помочь.
Я тоже нашёл неплохой вариант, адаптировал под свои нужды всем известный код, с текстурными кнопками.
Получилось вроде-бы не плохо.
И самое для меня главное, он должен работать в любой версии Inno

предлагаю взглянуть

Код:


; Inno Setup Compiler 5.3.5 (ansi & unicode)
; = Emulation of switching-off of style XP =
; http://forum.oszone.net/  <serg aka lain>

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
LicenseFile=compiler:License.txt
OutputDir=userdocs:My Program.

[code]

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

function CreateRoundRectRgn(p1, p2, p3, p4, p5, p6: Integer): THandle;
 external 'CreateRoundRectRgn@gdi32 stdcall';
function CombineRgn(p1, p2, p3: THandle; p4: Integer): Integer;
 external 'CombineRgn@gdi32 stdcall';
function SetWindowRgn(hWnd: HWND; hRgn: THandle; bRedraw: Boolean): Integer;
 external 'SetWindowRgn@user32 stdcall';

var
  FormRegion, InnerRegion: tHandle;
  Panel: TPanel;
  ButtonPanel: array [0..4] of TPanel;
  ButtonLabel: array [0..4] of TLabel;

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

procedure ButtonLabelClick(Sender: TObject);
var
  Button: TButton;
begin
  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
  ButtonPanel[TLabel(Sender).Tag].BorderStyle := bsSingle;
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ButtonPanel[TLabel(Sender).Tag].BorderStyle := bsSizeable;
end;

procedure LabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  ButtonPanel[TLabel(Sender).Tag].BorderStyle := bsSizeable;
end;

procedure LoadButton(AButton: TButton; AButtonIndex: integer);
var
  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.BorderStyle := bsSizeable;
  Panel.Parent := AButton.Parent;
  ButtonPanel[AButtonIndex] := Panel;

  with TLabel.Create(WizardForm) do
  begin
    Width := Panel.Width;
    Height := Panel.Height;
    AutoSize := False;
    Tag := AButtonIndex;
    OnClick := @ButtonLabelClick;
    OnDblClick := @ButtonLabelClick;
    OnMouseDown := @ButtonLabelMouseDown;
    OnMouseUp := @ButtonLabelMouseUp;
    OnMouseMove := @LabelMouseMove;
    TransParent := True;
    Parent := Panel;
  end;

  Labl := TLabel.Create(WizardForm);
  Labl.Width := Panel.Width - ScaleX(10);
  Labl.Height := Panel.Height - ScaleY(10);
  Labl.Alignment := taCenter;
  Labl.Autosize := False;
  Labl.Font.Color := clBlack;
  Labl.Caption := AButton.Caption;
  Labl.OnClick := @ButtonLabelClick;
  Labl.OnDblClick := @ButtonLabelClick;
  Labl.OnMouseDown := @ButtonLabelMouseDown;
  Labl.OnMouseUp := @ButtonLabelMouseUp;
  Labl.Cursor := crHand;
  Labl.Tag := AButtonIndex;
  Labl.Transparent := True;
  ButtonLabel[AButtonIndex] := Labl;
  Labl.Parent := Panel;
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 InitializeWizard();
begin
  ShapeForm(WizardForm, RADIUS);

  WizardForm.LicenseAcceptedRadio.OnClick := @LicenceAcceptedRadioOnClick;
  WizardForm.LicenseNotAcceptedRadio.OnClick := @LicenceNotAcceptedRadioOnClick;

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

procedure CurPageChanged(CurPageID: Integer);
begin
  UpdateButton(WizardForm.BackButton,bidBack);
  UpdateButton(WizardForm.NextButton,bidNext);
  UpdateButton(WizardForm.CancelButton,bidCancel);

  ButtonLabel[bidBack].Left := ButtonPanel[bidBack].Width div 2 - ButtonLabel[bidBack].Width div 2;
  ButtonLabel[bidBack].Top := ButtonPanel[bidBack].Height div 2 - ButtonLabel[bidBack].Height div 2;
  ButtonLabel[bidNext].Left := ButtonPanel[bidNext].Width div 2 - ButtonLabel[bidNext].Width div 2;
  ButtonLabel[bidNext].Top := ButtonPanel[bidNext].Height div 2 - ButtonLabel[bidNext].Height div 2;
  ButtonLabel[bidCancel].Left := ButtonPanel[bidCancel].Width div 2 - ButtonLabel[bidCancel].Width div 2;
  ButtonLabel[bidCancel].Top := ButtonPanel[bidCancel].Height div 2 - ButtonLabel[bidCancel].Height div 2;
  ButtonLabel[bidDirBrowse].Left := ButtonPanel[bidDirBrowse].Width div 2 - ButtonLabel[bidDirBrowse].Width div 2;
  ButtonLabel[bidDirBrowse].Top := ButtonPanel[bidDirBrowse].Height div 2 - ButtonLabel[bidDirBrowse].Height div 2;
  ButtonLabel[bidGroupBrowse].Left := ButtonPanel[bidGroupBrowse].Width div 2 - ButtonLabel[bidGroupBrowse].Width div 2;
  ButtonLabel[bidGroupBrowse].Top := ButtonPanel[bidGroupBrowse].Height div 2 - ButtonLabel[bidGroupBrowse].Height div 2;
end;


Serega 18-10-2009 20:38 1246371

Цитата:

Цитата serg aka lain
И самое для меня главное, он должен работать в любой версии Inno »

Согласен, интересный подход ;)

Odebay 19-10-2009 05:29 1246602

Подскажите пожалуйста,как как разделить архив на тома во FreeArc по 700mb

Krekerpro 19-10-2009 13:54 1246916

День добрый,хотелось бы узнать,как сделать прозрачный фон на картинке в левом нижнем углу http://clip2net.com/clip/m0/1255946027-clip-124kb.jpg.
Используется этот скрипт-http://forum.oszone.net/post-1241284-239.html

A1EXXX 19-10-2009 15:23 1246990

Odebay, вопросу по FreeArc'у задавай в соответствующей теме... :off:
Krekerpro, можно задать прозрачность для bmp, для этого нужно сделать заливку фона розовым, с параметрами -
красный: 255, зелёный: 0, синий: 255; вот скрин из Paint'а

Krekerpro 19-10-2009 15:37 1247001

A1EXXX,
Не,bmp не подходит,надо для .gif

Berline 19-10-2009 15:39 1247005

Вложений: 1
Так сказать подниму на обсуждение общественности давнюю проблему:
Благодаря Serega, было реализовано и поправлено все, что я просил и не знал, но 1н вопрос, так и остался не решенным даже им.
Может кто-то подскажет, может кто-то знает.
В аттаче скрипт, в котором не корректно отрабатываются след вещи
вот ссыль на описание
Цитата:

без добавления ваших измнений. т.е. кнопок - я благополучно выделял галочки руками, у меня менялся сразу необходимый размер на диске, и при повторном запуске этого инсталлятора - он мне отображал уже установленные галочки тех компонентов, что я выбрал. Такое не изменилось после добавления кнопок, но они не корректны, а именно, повторюсь: при выделениее всех компонент, размер не перессчитывается. хотя действительно, компоненты установились, и при повторной установке поверх - инсталлятор не отображает компоненты, которые я уже установил...

A1EXXX 19-10-2009 15:50 1247015

Krekerpro, ну тогда Google тебе в помощь :buba:

Krekerpro 19-10-2009 19:09 1247168

A1EXXX,
Ты меня видать не правильно понял,на картинке фраза-фон прозрачный,но в инсталяторе откуда-то появляется серый стандартный фон(как в стандартном инсталяторе)

Odebay 20-10-2009 18:59 1248109

Как сделать TasksPage,на основе скрипта Prototype? :sorry:

Bambaso 23-10-2009 07:27 1250027

Здравствуйте. Подскажите пожалуйста как найти выход из этой ситуации. Я написал скрипт который что-то вроде патча, но вот в чём дело. В той программе которую я немного изменил есть текстовый файл m3u и мне нужно чтобы в нём добавилась дополнительная информация, этого сделать я не могу, но смог его просто заменить. Проблема в том что после удаления патча он сносит и этот файл а этого делать не нужно. Как сделать так чтобы он не удалялся или добавленая в него информация так же изчезала. Если кто может помоч за ранее спасибо.

Brocman 23-10-2009 14:10 1250333

Подскажите пожалуйста - как реализовать добавление данных в реестр, в зависимости от битности системы.

Допустим в x64 добавлялись одни ветки, в x86 другие.

ChiLiOne 23-10-2009 18:48 1250602

Цитата:

Цитата Brocman
Подскажите пожалуйста - как реализовать добавление данных в реестр, в зависимости от битности системы.
Допустим в x64 добавлялись одни ветки, в x86 другие. »

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

Serega 23-10-2009 19:27 1250624

Цитата:

Цитата Bambaso
есть текстовый файл m3u и мне нужно чтобы в нём добавилась дополнительная информация, этого сделать я не могу »

Почитайте Справку, там есть описание для строковых функций.
Цитата:

Цитата Bambaso
но смог его просто заменить. Проблема в том что после удаления патча он сносит и этот файл а этого делать не нужно. »

Просто нужно переименовать оригинальный файл, допустим добавить расширение *.bak, а при деинсталляции восстановить его обратно.

Цитата:

Цитата Brocman
Допустим в x64 добавлялись одни ветки, в x86 другие »

В каталоге Inno Setup, есть папка Examples, там есть скрипт 64BitTwoArch.iss, в нем показан пример, при одной архитектуре копируется один файл при другой, соответственно другой файл. То же самое и с реестром:
Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Registry]
Root: HKCU; Subkey: Software\My Program; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: Software\My Program\x64; Check: Is64BitInstallMode; Flags: uninsdeletekey
Root: HKCU; Subkey: Software\My Program\x32; Check: not Is64BitInstallMode; Flags: uninsdeletekey


DemonAk 23-10-2009 20:39 1250686

Как добавить в этот код еще парочку mp3, чтобы они проигрывались по порядку:
читать дальше »
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;
cb:TCheckBox;

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: PAnsiChar; 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';

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

procedure cbmusic(Sender: TObject);
begin
if cb.checked = true then
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
end;
BASS_ACTIVE_STOPPED:
begin
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PAnsiChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
end;
end;
if cb.checked = false then
BASS_ChannelPause(mp3Handle);
end;

procedure InitializeWizard();
begin
cb:=TCheckBox.Create(WizardForm);
cb.Parent:=WizardForm;
cb.Width:=ScaleX(220);
cb.Left:=ScaleY(10);
cb.Top:=ScaleY(330);
cb.CAPTION:='Проигрывание музыки';
cb.ONCLICK:=@cbmusic;
cb.checked:=true
end;

procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;

Bambaso 24-10-2009 12:49 1251140

Здравствуйте. Весь день ломаю голову, но ничего толкового не вышло.
Как сделать бэкап оригинальному файлу получилось, но при удалении программы он всёравно удаляет и этот бэкап,
и при этом просто не хочет его востанавливать.
Пробовал другой вариант, но и при этом выходит так что файл остаётся но не оригинальный а подменённый.
Вот примеры и если знаете как исправить подскажите пожалуйста.
Пример 1
Source: {pf}\a\b\c\play.m3u; DestDir: {pf}\a\b\c; DestName:play.m3u.bak; Flags: ignoreversion external skipifsourcedoesntexist
Делает бэкап, но после удаления программы его не востанавливает а удаляет.
Пример 2
Source: {pf}\a\b\c\play.m3u; DestDir: {pf}\a\b\c; DestName:play.m3u.bak; Flags: ignoreversion external skipifsourcedoesntexist
Source: C:\play.m3u; DestDir: {pf}\a\b\c; Flags: uninsneveruninstall
Делает тоже самое, но вместо оригинального play.m3u остаётся подменённый.
Мне нужно чтобы при инсталле создавался бэкап оригиналу затем был подменён, а после деинсталла убивал подменённый и востанавливал оригинал.
Спасибо за ранее.

Zloy Pryanik 24-10-2009 12:52 1251144

А подскажите пожалуста как сменить положение кнопок "назад,вперед и отмена

comsun 25-10-2009 02:21 1251686

Помогите пож. отправить файл в папку назначения C:\D&S\User.
Пробовал {user} выдаёт ошибку при компилляции, {username} - компилится,вроде всё нормально,но при установке файла по этому адресу нет.

DemonAk 25-10-2009 02:26 1251690

Цитата:

Цитата comsun
Помогите пож. отправить файл в папку назначения C:\D&S\User.
Пробовал {user} выдаёт ошибку при компилляции, {username} - компилится,вроде всё нормально,но при установке файла по этому адресу нет. »

{%userprofile}

serg aka lain 25-10-2009 04:06 1251708

Цитата:

Цитата Zloy Pryanik
А подскажите пожалуста как сменить положение кнопок "назад,вперед и отмена »

можно так

Код:


[Setup]
AppName=My Program
AppVerName=My Program
CreateAppDir=False
Uninstallable=False
OutputDir=userdocs:My Program.

[code]

procedure InitializeWizard();
begin
  with WizardForm do
  begin
    BackButton.Left := ScaleX(1);
    BackButton.Width := ClientWidth div 3;
    NextButton.Left := BackButton.Left + BackButton.Width;
    NextButton.Width := BackButton.Width;
    CancelButton.Left := NextButton.Left + NextButton.Width;
    CancelButton.Width := BackButton.Width;
  end;
end;


или так

Код:


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

[Files]
; Test copy
Source: "{sys}\*.dll"; DestDir: "{tmp}"; Flags: external;

[code]

procedure InitializeWizard();
begin
  with WizardForm do
  begin
    BackButton.Top := BackButton.Top - ScaleY(12);
    BackButton.Height := BackButton.Height + ScaleY(21);
    NextButton.Top := NextButton.Top - ScaleY(12);
    NextButton.Height := NextButton.Height + ScaleY(21);
    CancelButton.Top := CancelButton.Top - ScaleY(12);
    CancelButton.Height := CancelButton.Height + ScaleY(21);
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpWelcome then
  with WizardForm do
  begin
    NextButton.Left := ScaleX(1);
    NextButton.Width := ClientWidth div 2;
    CancelButton.Left := NextButton.Left + NextButton.Width;
    CancelButton.Width := NextButton.Width;
  end;

  if (CurPageID > wpWelcome) and (CurPageID < wpInstalling) then
  with WizardForm do
  begin
    BackButton.Left := ScaleX(1);
    BackButton.Width := ClientWidth div 3;
    NextButton.Left := BackButton.Left + BackButton.Width;
    NextButton.Width := BackButton.Width;
    CancelButton.Left := NextButton.Left + NextButton.Width;
    CancelButton.Width := BackButton.Width;
  end;

  if CurPageID = wpInstalling then
  with WizardForm do
  begin
    CancelButton.Left := ClientWidth div 3 * 2;
    CancelButton.Width := ClientWidth div 3;
  end;

  if CurPageID = wpFinished then
  with WizardForm do
  begin
    NextButton.Left := ClientWidth div 3 * 2 - NextButton.Width;
    NextButton.Width := ClientWidth div 3;
  end;
end;


Serega 25-10-2009 12:10 1251837

Цитата:

Цитата Bambaso
Как сделать бэкап оригинальному файлу »

Программа
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

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


Патч
Код:

[Setup]
AppName=My Program patch
AppVerName=My Program v 1.5 patch
DefaultDirName={pf}\My Program
DirExistsWarning=no
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

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

[Code]
procedure Backup;
begin
  // переименовываем оригинальный файл
  RenameFile(ExpandConstant('{app}\MyProg.exe'), ExpandConstant('{app}\MyProg.bak'));
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usPostUninstall then
  // восстанавливаем оригинальный файл
  RenameFile(ExpandConstant('{app}\MyProg.bak'), ExpandConstant('{app}\MyProg.exe'));
end;


т.е. в примере 'Патч', показал как переименовывать оригинальный файл и при деинсталляции восстановить его обратно.

comsun 25-10-2009 12:56 1251876

Цитата:

Цитата DemonAk
Цитата comsun:
Помогите пож. отправить файл в папку назначения C:\D&S\User.
Пробовал {user} выдаёт ошибку при компилляции, {username} - компилится,вроде всё нормально,но при установке файла по этому адресу нет.
»
{%userprofile} »

DemonAk, Спасибо!!!! То что надо!

comsun 25-10-2009 22:32 1252356

затруднения с шифрованием(
применил тему от ISSkin и шифрование от InnoSetup Scripting v.5.1
соединил InnoSetuo Script Joiner, получилось так -
читать дальше »


Цитата:

; --- Source: ISSkinSetup.iss ------------------------------------------------------------
; -- Example1.iss --
; Demonstrates copying 3 files and creating an icon.

; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!


[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: {app}\ISSkin.dll; DestDir: {app}; Flags: dontcopy

; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: {tmp}\Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy

; The following code block is used to load the ISS, pass in
; an empty string ('') as the second parameter to LoadSkin to use
; the Blue color scheme, this is the default color scheme for
; Office2007.cjstyles.
[code]
// Importing LoadSkin API from ISSkin.DLL
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

// Importing UnloadSkin API from ISSkin.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

function InitializeSetup1(): Boolean;
begin
ExtractTemporaryFile('Office2007.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), '');
Result := True;
end;

procedure DeinitializeSetup1();
begin
// Hide Window before unloading skin so user does not get
// a glimse of an unskinned window before it is closed.
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;

[Setup]


; --- Source: Шифр_1_Код.iss ------------------------------------------------------------


[Setup]
Encryption=Yes
;MD5 сумма, подсчитанная ниже
Password=449f2546d2a51b20442c5025c43f126f

[code]
procedure InitializeWizard2();
var
MD5: String;
begin
//Подсчитываем сумму слагаемых в MD5 калькуляторе, на примере сумма MD5 "````" равна 449f2546d2a51b20442c5025c43f126f
MD5 := GetMD5OfString(''+'`'+'``'+'`')
WizardForm.PasswordEdit.Visible:= False;
//Вставляем то, что складываем
WizardForm.PasswordEdit.Text:= MD5;
end;

//Как обычно нажимаем страницу с пассом
procedure CurPageChanged2(CurPageID: Integer);
begin
if CurPageID = wpPassword then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;

[Setup]


; --- Dispatching code ------------------------------------------------------------

[code]

function InitializeSetup(): Boolean;
begin
Result := InitializeSetup1(); if not Result then exit;
end;

procedure DeinitializeSetup();
begin
DeinitializeSetup1();
end;

procedure InitializeWizard();
begin
InitializeWizard2();
end;

procedure CurPageChanged(CurPageID: Integer);
begin
CurPageChanged2(CurPageID);
end;



Компиллируется нормально,при попытке запустить установку,Windows пишет, ошибка

По отдельности работают - или скин или шифрование.
вместе нет,помогите разобраться,плз

Habetdin 25-10-2009 22:43 1252365

comsun,
Цитата:

Цитата comsun
соединил InnoSetuo Script Joiner, получилось так »

А "разделенные" можете опубликовать? :)

comsun 25-10-2009 22:59 1252384

Цитата:

Цитата Habetdin
А "разделенные" можете опубликовать? »

конечно)

до соединения Joiner'oм отдельноработающие части вот

скин -
читать дальше »
Цитата:

; -- Example1.iss --
; Demonstrates copying 3 files and creating an icon.

; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!


[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source:{app}\ISSkin.dll; DestDir: {app}; Flags: dontcopy

; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: Styles\Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy


; The following code block is used to load the ISS, pass in
; NormalAqua.ini as the second parameter to LoadSkin to use
; the Aqua color scheme instead of the default Blue color
; scheme.
[code]
// Importing LoadSkin API from ISSkin.DLL
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

// Importing UnloadSkin API from ISSkin.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('Office2007.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), 'NormalAqua.ini');
Result := True;
end;

procedure DeinitializeSetup();
begin
// Hide Window before unloading skin so user does not get
// a glimse of an unskinned window before it is closed.
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;

и
шифр -
читать дальше »
Цитата:


[Setup]
Encryption=yes
Password=Cnn0

[code]
var
str: string;
MyArray: array of Char;

function InitializeSetup(): Boolean;
begin
MyArray := ['A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z',
'1','2','3','4','5','6','7','8','9','0',
'!','@','#','$','%','^','&','*','(',')'];
Result:= True;
end;

function CheckPassword(Password: String): Boolean;
begin
WizardForm.PasswordEdit.Text:= 'The password is protected!';
WizardForm.PasswordPage.Free;
Result:= True;
end;

procedure InitializeWizard();
begin
WizardForm.PasswordEdit.Visible:= False;
WizardForm.PasswordEdit.Text:= 'The password is very protected!';
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
str:= GetDateTimeString('ss', #0, #0);
Result:= True;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
begin
WizardForm.PasswordEdit.Text:= MyArray[2]+MyArray[39]+MyArray[39] +
IntToStr(StrToInt(str) - StrToInt(GetDateTimeString('ss', #0, #0)));
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
end;


это тот код,который вставлял в самом конце скрипта самой программы.

Habetdin 25-10-2009 23:06 1252390

comsun, проверьте, может быть и правильно :biggrin:
читать дальше »
Код:

[Setup]
Encryption=yes
Password=Cnn0

[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: {app}\ISSkin.dll; DestDir: {app}; Flags: dontcopy

; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: Styles\Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy

[code]
// Importing LoadSkin API from ISSkin.DLL
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

// Importing UnloadSkin API from ISSkin.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('Office2007.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), 'NormalAqua.ini');
Result := True;
end;

procedure DeinitializeSetup();
begin
// Hide Window before unloading skin so user does not get
// a glimse of an unskinned window before it is closed.
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;
var
str: string;
MyArray: array of Char;

function InitializeSetup(): Boolean;
begin
MyArray := ['A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z',
'1','2','3','4','5','6','7','8','9','0',
'!','@','#','$','%','^','&','*','(',')'];
Result:= True;
end;

function CheckPassword(Password: String): Boolean;
begin
WizardForm.PasswordEdit.Text:= 'The password is protected!';
WizardForm.PasswordPage.Free;
Result:= True;
end;

procedure InitializeWizard();
begin
WizardForm.PasswordEdit.Visible:= False;
WizardForm.PasswordEdit.Text:= 'The password is very protected!';
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
str:= GetDateTimeString('ss', #0, #0);
Result:= True;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
begin
WizardForm.PasswordEdit.Text:= MyArray[2]+MyArray[39]+MyArray[39] +
IntToStr(StrToInt(str) - StrToInt(GetDateTimeString('ss', #0, #0)));
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
end;


comsun 25-10-2009 23:13 1252395

Habetdin, СПАСИБО!!!

Цитата:

Цитата Habetdin
comsun, проверьте, может быть и правильно
читать дальше » »

один секунд)
минут через 10
будет известно - программа большая)

не идёт
ошибка та же((((((

Habetdin 25-10-2009 23:47 1252419

Цитата:

Цитата comsun
ошибка та же(((((( »

Весь скрипт можно увидеть? :)
P.S.: прикрепил примеры скриптов с шифрованием, у меня 2й вариант без ошибок работает, остальные так же, как у вас ошибку выдают

comsun 26-10-2009 01:15 1252455

Habetdin, Спасибо за помощь!
Цитата:

Цитата Habetdin
P.S.: прикрепил примеры скриптов с шифрованием, у меня 2й вариант без ошибок работает, остальные так же, как у вас ошибку выдают »

проверил ваш [2].iss - ошибка та же(((((((((
Цитата:

Цитата Habetdin
Весь скрипт можно увидеть? »

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

завтра (или уже сегодня)) проверю остальные

EN130 26-10-2009 14:05 1252805

chm справка в шапке глючная :( , замените плыз на нормальную :)

Serega 26-10-2009 15:26 1252876

EN130, подробней объясните, что не так?

Цитата:

Цитата comsun
ошибка та же(((((( »

Надо так:
Код:

[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: {app}\ISSkin.dll; DestDir: {app}; Flags: dontcopy noencryption


comsun 26-10-2009 20:32 1253169

Serega, СПА-СИ-БО!!!!!!!!!

Цитата:

Цитата Serega
Цитата comsun:
ошибка та же(((((( »
Надо так:
Код:
[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: {app}\ISSkin.dll; DestDir: {app}; Flags: dontcopy noencryption »

Йессс!!!!!
Работает!


Serega,ещё раз Спасибо!!!
Ваши ответы всегда точны и верны!!!

EN130 26-10-2009 22:07 1253242

Serega, http://s41.radikal.ru/i092/0910/4a/d0cb82a15b90.jpg И весь документ такой. Тоесть все страницы пустые, а меню вродебы работает.

Bambaso 27-10-2009 09:32 1253474

Здравствуйте форумчане.
Хорошо что есть такие места как это и что обстановка дружеская.
Выражаю большое спасибо мастер-пилоту "Серёга" за помощ.
По поводу создания справки:
читать дальше »

Microsoft HTML Help Workshop 4.74.8702.0 + rus - вещица очень полезная и всегда пригодится:


Microsoft HTML Help является стандартной справочной системой для платформы Windows. Авторы могут использовать HTML Help для создания справочных файлов в
своих программах или для создания содержимого веб-сайта. Разработчики могут использовать программный интерфейс приложения (API) HTML Help для программирования
приложения или подключения контексно-зависимой справочной системы. В качестве информационной системы технология HTML Help пригодна для широкого диапазона
приложений, включая большие руководства, интерактивные книги и электронные газеты, которые также удобны, как и справочные системы программного обеспечения.

Возможности HTML Help имеют некоторые преимущества перед стандартным гипертекстом - это способность снабжения справочной системы комбинированной таблицей
содержания и перечнем указателей, а также использование ключевых слов для дополнительной гиперссылочной производительности. Компилятор HTML Help, являющийся
частью HTML Help Workshop, делает возможным сжатие гипертекста, графики и других файлов в сравнительно небольшой компилированный справочный файл (.chm),
который может затем распространяться с программным обеспечением или загружаться из сети.

HTML Help состоит из неавтономной программы просмотра справки (Help Viewer), связанных с ней справочных компонентов и авторских систем по разработке справки
от корпорации Microsoft. Программа просмотра справки использует лежащие в ее основе компоненты Microsoft Internet Explorer для отображения справочного
содержимого. Программа просмотра поддерживает гипертекст, ActiveX, Java, языки скриптов (JScript и Microsoft Visual Basic Scripting Edition), а также сетевые
форматы изображений (файлы .jpeg, .gif и .png). Авторская система по разработке справки HTML Help Workshop предоставляет легкую в использовании систему
для создания и управления справочными проектами и относящимися к ним файлами.

Операционная система: Windows 2000/XP/Vista/Server 2003
Язык интерфейса: Английский плюс русификация
Лицензия: бесплатно
инструкция по работе с программой прилагается.


Скачать

A1EXXX 27-10-2009 12:44 1253628

Bambaso, :off:

Serega 27-10-2009 21:16 1254148

Цитата:

Цитата EN130
все страницы пустые, а меню »

Ещё раз скачал Справку, всё нормально отображается. Попробуйте перекачать, возможно вы скачали с ошибкой.

EN130 27-10-2009 22:19 1254223

Serega, После обновления винды, все заработало. Как думаеш, что могло быть не так?

Serega 27-10-2009 22:35 1254243

Цитата:

Цитата EN130
После обновления винды, все заработало. »

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

3Nitro 28-10-2009 10:34 1254525

Здравствуйте,
Помогите сделать такую вещь, или скажите реально ли это вообще.

Можно ли сделать слайдшоу в окне Мастера (когда идет установка) и применить к нему этот эффект
http://restools.hanzify.org/attachme...8413124011.gif
http://restools.hanzify.org/article.asp?id=80 (прямая ссылка )?
Ну или хотя-бы статическую картинку вместо слайдшоу но с данной библиотекой/плагином.

Долго уже просидел, ничего не выходит( Очень прошу помочь

И еще, как сделать чтобы при выборе компонентов один из 2 флажков всегда оставался включенным? (на примере - есть 2 флажка, можно включить либо 2 вместе либо по-одиночке, но оба выключить нельзя. При выключении последнего включается другой )

Заранее огромное спасибо)

lmiol 30-10-2009 05:42 1256219

здарвствуйте - все поиски зашли в тупик проблему решить не выходит, подскажите может кто знает

Код:

Name: "{userdesktop}\Quake Live"; Filename: {pf}\QuakeLiveFirefoxPrism\Firefox\firefox.exe; Parameters:  -app application.ini -override "{userappdata}\WebApps\quake.live@prism.app\override.ini" -webapp quake.live@prism.app; WorkingDir: {pf}\QuakeLiveFirefoxPrism\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Tasks: desktopicon; IconFilename: "{userappdata}\id Software\quakelive\home\baseq3\quakelive.dll"; IconIndex: 0; Components: browser
где красным - там стоят кавычки и не комплится инстал, а в ярлыке они стоять должны иначе будет эррор

подскажите как сделать так чтобы кавычки в ярлыке в этом месте прописывались...

Habetdin 30-10-2009 10:46 1256396

lmiol, а так?
Код:

Name: "{userdesktop}\Quake Live"; Filename: {pf}\QuakeLiveFirefoxPrism\Firefox\firefox.exe; Parameters:  -app application.ini -override ""{userappdata}\WebApps\quake.live@prism.app\override.ini"" -webapp quake.live@prism.app; WorkingDir: {pf}\QuakeLiveFirefoxPrism\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Tasks: desktopicon; IconFilename: "{userappdata}\id Software\quakelive\home\baseq3\quakelive.dll"; IconIndex: 0; Components: browser

lmiol 30-10-2009 11:18 1256436

таже ошибка!!!

Habetdin 30-10-2009 11:23 1256445

lmiol, а вот так?
Код:

Name: "{userdesktop}\Quake Live"; Filename: {pf}\QuakeLiveFirefoxPrism\Firefox\firefox.exe; Parameters:  "-app application.ini -override ""{userappdata}\WebApps\quake.live@prism.app\override.ini"" -webapp quake.live@prism.app"; WorkingDir: {pf}\QuakeLiveFirefoxPrism\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Tasks: desktopicon; IconFilename: "{userappdata}\id Software\quakelive\home\baseq3\quakelive.dll"; IconIndex: 0; Components: browser

Wiper 30-10-2009 15:14 1256677

Господа,если кто то делал RePack Call of Duty 4: Modern Warfare-хочу сделать без мульта(вырезать мульт полностью)подскажите какие файлы нужно удалить,а то запарился уже.Заранее спасибо.

grinda 30-10-2009 16:57 1256779

Скажите плиз как тут в верхнем правом углу картинку вставить http://i060.radikal.ru/0910/b1/651cfc1020df.jpg

lmiol 30-10-2009 19:19 1256894

Habetdin Нет не работает!!!

A1EXXX 30-10-2009 21:47 1256987

grinda, оно?
читать дальше »

[Setup]
WizardSmallImageFile=C:\UpperImage.bmp

[code]
var
PageNameLabel1: TLabel;

procedure InitializeWizard();
begin
PageNameLabel1 := TLabel.Create(WizardForm);
with PageNameLabel1 do
begin
Left := ScaleX(13);
Top := ScaleY(9);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Name := 'Tahoma'
Font.Style := [fsBold];
ShowAccelChar := False;
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;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel1.Caption := WizardForm.PageNameLabel.Caption;
end;

Serega 31-10-2009 01:03 1257102

Цитата:

Цитата lmiol
Нет не работает!!! »

Что не работает? Всё должно нормально компилироваться.
Внимательно читаем Справку, раздел 'Параметры в секциях'.

lmiol 31-10-2009 02:44 1257128

да точно... сорри второй вариант работает

Serega 31-10-2009 02:51 1257130

Цитата:

Цитата lmiol
а вот так тоже нельзя »

Должно быть так:
Код:

"-app application.ini -override ""{userappdata}\WebApps\quake.live@prism.app\override.ini"" -webapp quake.live@prism.app"

A1EXXX 31-10-2009 13:15 1257353

Serega, помните, я как-то писал, что начиная со страницы выбора папки установки у меня пропадает кликабельность картинки в левом нижнем углу?
читать дальше »
PHP код:

[Files]
SourceC:logo.bmpDestDir: {tmp}; Flagsdontcopy

[code]
var
LogoImage:TBitmapImage;
LogoLabelTLabel;
LogoPanelTPanel;

procedure LogoOnClick(SenderTObject);
var 
ReturnCodeInteger;
begin
ShellExec
('open''http://сайт.ру'''''SW_SHOWNORMALewNoWaitReturnCode)
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile
('logo.bmp');
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent 
:= WizardForm;
Left := ScaleX(5);
Top := ScaleY(320);
Width := ScaleX(165);
Height := ScaleY(35);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent 
:= LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent 
:= LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoOnClick;
end;
end


Так вот я нашёл тот зловещий код, который это делал...
читать дальше »
PHP код:

[code]
procedure CurPageChanged(CurPageIDInteger);
begin
  
if CurPageID wpSelectDir then WizardForm.Font.Name:= 'Tahoma';
  if 
CurPageID wpSelectProgramGroup then WizardForm.Font.Name:= 'Tahoma';
  if 
CurPageID wpSelectTasks then WizardForm.Font.Name:= 'Tahoma';
  if 
CurPageID wpReady then WizardForm.Font.Name:= 'Tahoma';
  if 
CurPageID wpInstalling then WizardForm.Font.Name:= 'Tahoma';
  if 
CurPageID wpFinished then WizardForm.Font.Name:= 'Tahoma';
end


Я таким образом менял шрифт на всех страницах, кроме Welcome, InfoBefore & InfoAfter страниц (т.к. если делать замену шрифта по всему инсталлу, он меняется и в прикрученных RTF-документах)
Почему, собственно, этот скрипт такое творит, и главное - как это можно исправить??? И хотелось бы узнать, можно ли этот код записать как-то иначе через InitializeWizard???

Serega 01-11-2009 17:00 1258390

Цитата:

Цитата A1EXXX
можно ли этот код записать как-то иначе через InitializeWizard??? »

Процедура InitializeWizard, задаёт всё глобально, т.е. применимо ко всему инсталлятору. Попробуйте менять шрифт таким образом:
Пример
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
var
  NewFont, OldFont: string;
 
procedure InitializeWizard();
begin
  NewFont:= 'Tahoma';
  OldFont:= WizardForm.Font.Name;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if (CurPageID = wpWelcome) or (CurPageID = wpInfoBefore) or (CurPageID = wpInfoAfter) then
    WizardForm.Font.Name:= OldFont
  else WizardForm.Font.Name:= NewFont;
end;


A1EXXX 01-11-2009 17:42 1258443

Serega, спасибо, кажись ОНО! :up

Tukash 01-11-2009 21:22 1258665

добрый вечер люди добрые хочу сделать вот так: надюесь автор не обидеться на меня но уш очень зацепило))) давно хотел такой!
а именно: такой размер окна инсталлятора, черный фон... заранее спасибо
и еще помогите, хочу усовершенствовать этот скрипт но особо я в этом не варю))) , может у кого-то есть готовый? хочу именно: широкое окно, красивый шрифт, и что-бы шла распаковка фри арк архивов!

Код:

var
  pnl: TPanel;

///////////////////////WelcomePage//////////////////////////////////////
procedure WelcomePage;
begin
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.WelcomeLabel1.AutoSize;
      SetBounds(WizardForm.WelcomeLabel1.Left,WizardForm.WelcomeLabel1.Top,
                WizardForm.WelcomeLabel1.Width,WizardForm.WelcomeLabel1.Height);
      WordWrap:= WizardForm.WelcomeLabel1.WordWrap;
      Caption:= WizardForm.WelcomeLabel1.Caption;
      with Font do
        begin
          Color:= WizardForm.WelcomeLabel1.Font.Color;
          Style:= WizardForm.WelcomeLabel1.Font.Style;
          Name:= WizardForm.WelcomeLabel1.Font.Name;
          Size:= WizardForm.WelcomeLabel1.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.WelcomeLabel2.AutoSize;
      SetBounds(WizardForm.WelcomeLabel2.Left,WizardForm.WelcomeLabel2.Top,
                WizardForm.WelcomeLabel2.Width,WizardForm.WelcomeLabel2.Height);
      WordWrap:= WizardForm.WelcomeLabel2.WordWrap;
      Caption:= WizardForm.WelcomeLabel2.Caption;
      with Font do
        begin
          Color:= WizardForm.WelcomeLabel2.Font.Color;
          Style:= WizardForm.WelcomeLabel2.Font.Style;
          Name:= WizardForm.WelcomeLabel2.Font.Name;
          Size:= WizardForm.WelcomeLabel2.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////SelectDirPage//////////////////////////////////////
procedure SelectDirPage;
begin
  with WizardForm do
    begin
      with DirEdit do
        begin
          Left:= 40;
          Top:= 137;
          Parent:= pnl;
        end;
      with DirBrowseButton do
        begin
          Left:= WizardForm.DirEdit.Left + WizardForm.DirEdit.Width + 10;
          Top:= WizardForm.DirEdit.Top - 1;
          Parent:= pnl;
        end;
      with SelectDirBitmapImage do
        begin
          Left:= WizardForm.DirEdit.Left;
          Top:= WizardForm.DirEdit.Top - 62;
          Stretch:= True;
          Parent:= pnl;
        end;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.SelectDirBrowseLabel.AutoSize;
      SetBounds(WizardForm.DirEdit.Left,WizardForm.DirEdit.Top - 30,
                WizardForm.SelectDirBrowseLabel.Width, WizardForm.SelectDirBrowseLabel.Height);
      WordWrap:= WizardForm.SelectDirBrowseLabel.WordWrap;
      Caption:= WizardForm.SelectDirBrowseLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.SelectDirBrowseLabel.Font.Color;
          Style:= WizardForm.SelectDirBrowseLabel.Font.Style;
          Name:= WizardForm.SelectDirBrowseLabel.Font.Name;
          Size:= WizardForm.SelectDirBrowseLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.SelectDirLabel.AutoSize;
      SetBounds(WizardForm.SelectDirBitmapImage.Left + 50,WizardForm.SelectDirBitmapImage.Top + 10,
                WizardForm.SelectDirLabel.Width,WizardForm.SelectDirLabel.Height);
      WordWrap:= WizardForm.SelectDirLabel.WordWrap;
      Caption:= WizardForm.SelectDirLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.SelectDirLabel.Font.Color;
          Style:= WizardForm.SelectDirLabel.Font.Style;
          Name:= WizardForm.SelectDirLabel.Font.Name;
          Size:= WizardForm.SelectDirLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.DiskSpaceLabel.AutoSize;
      SetBounds(WizardForm.DirEdit.Left,WizardForm.Bevel.Top - 25,
                WizardForm.DiskSpaceLabel.Width,WizardForm.DiskSpaceLabel.Height);
      WordWrap:= WizardForm.DiskSpaceLabel.WordWrap;
      Caption:= WizardForm.DiskSpaceLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.DiskSpaceLabel.Font.Color;
          Style:= WizardForm.DiskSpaceLabel.Font.Style;
          Name:= WizardForm.DiskSpaceLabel.Font.Name;
          Size:= WizardForm.DiskSpaceLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////ReadyPage//////////////////////////////////////
procedure ReadyPage;
var
  ready_str: string;
begin
  ready_str:= WizardForm.ReadyMemo.Text;
  with TLabel.Create(pnl) do
    begin
      SetBounds(45,115,WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
      Caption:= ready_str;
      with Font do
        begin
          Color:= WizardForm.ReadyLabel.Font.Color;
          Style:= WizardForm.ReadyLabel.Font.Style;
          Name:= WizardForm.ReadyLabel.Font.Name;
          Size:= WizardForm.ReadyLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TBevel.Create(WizardForm) do
    begin
      SetBounds(40,110, WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.ReadyLabel.AutoSize;
      SetBounds(40,70, WizardForm.ReadyLabel.Width, WizardForm.ReadyLabel.Height);
      WordWrap:= WizardForm.ReadyLabel.WordWrap;
      Caption:= WizardForm.ReadyLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.ReadyLabel.Font.Color;
          Style:= WizardForm.ReadyLabel.Font.Style;
          Name:= WizardForm.ReadyLabel.Font.Name;
          Size:= WizardForm.ReadyLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////InstallingPage//////////////////////////////////////
procedure InstallingPage;
begin
  with WizardForm.ProgressGauge do
    begin
      Left:= 40;
      Top:= 115;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.FilenameLabel.AutoSize;
      SetBounds(WizardForm.ProgressGauge.Left,WizardForm.ProgressGauge.Top-20,
                WizardForm.FilenameLabel.Width,WizardForm.FilenameLabel.Height);
      WordWrap:= WizardForm.FilenameLabel.WordWrap;
      Caption:= WizardForm.FilenameLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.FilenameLabel.Font.Color;
          Style:= WizardForm.FilenameLabel.Font.Style;
          Name:= WizardForm.FilenameLabel.Font.Name;
          Size:= WizardForm.FilenameLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.StatusLabel.AutoSize;
      SetBounds(WizardForm.StatusLabel.Left,WizardForm.StatusLabel.Top,
                WizardForm.StatusLabel.Width,WizardForm.StatusLabel.Height);
      WordWrap:= WizardForm.StatusLabel.WordWrap;
      Caption:= WizardForm.StatusLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.StatusLabel.Font.Color;
          Style:= WizardForm.StatusLabel.Font.Style;
          Name:= WizardForm.StatusLabel.Font.Name;
          Size:= WizardForm.StatusLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////FinishedPage//////////////////////////////////////
var
  CheckBox: array of TNewCheckBox;

procedure CheckBoxClick(Sender: TObject);
begin
  if TNewCheckBox(Sender).Checked then
    WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= True
  else WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= False;
end;

procedure LabelClick(Sender: TObject);
begin
  if CheckBox[TLabel(Sender).Tag].Checked then
    begin
      WizardForm.RunList.Checked[TLabel(Sender).Tag]:= False;
      CheckBox[TLabel(Sender).Tag].Checked:= False;
    end
  else
    begin
      WizardForm.RunList.Checked[TLabel(Sender).Tag]:= True;
      CheckBox[TLabel(Sender).Tag].Checked:= True;
    end;
end;

procedure HideRunList(Control: TWinControl);
var
  i, t: Integer;
  str: string;
begin
  if WizardForm.RunList.Items.Count > 0 then
    begin
      WizardForm.RunList.Hide;
      SetArrayLength(CheckBox, SizeOf(WizardForm.RunList.Items.Count));
      for i:= 0 to WizardForm.RunList.Items.Count-1 do
        begin
          CheckBox[i]:= TNewCheckBox.Create(Control);
          with CheckBox[i] do
            begin
              SetBounds(ScaleX(WizardForm.RunList.Left+2),ScaleY(WizardForm.RunList.Top+2+t),14,14);
              Tag:= i;
              Checked:= WizardForm.RunList.Checked[i];
              Caption:= WizardForm.RunList.Items.Strings[i];
              OnClick:= @CheckBoxClick;
              Color:= clWhite;
              Parent:= Control;
            end;
          str:= WizardForm.RunList.Items.Strings[i];
          with TLabel.Create(WizardForm) do
            begin
              SetBounds(ScaleX(WizardForm.RunList.Left+20),ScaleY(WizardForm.RunList.Top+2+t),
                        WizardForm.RunList.Width,14);
              Caption:= str;
              Tag:= i;
              OnClick:= @LabelClick;
              Transparent:= True;
              Parent:= Control;
            end;
          t:= t + 20;
        end;
    end;
end;

procedure FinishedPage;
begin
  HideRunList(pnl);
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.FinishedHeadingLabel.AutoSize;
      SetBounds(WizardForm.FinishedHeadingLabel.Left,WizardForm.FinishedHeadingLabel.Top,
                WizardForm.FinishedHeadingLabel.Width,WizardForm.FinishedHeadingLabel.Height);
      WordWrap:= WizardForm.FinishedHeadingLabel.WordWrap;
      Caption:= WizardForm.FinishedHeadingLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.FinishedHeadingLabel.Font.Color;
          Style:= WizardForm.FinishedHeadingLabel.Font.Style;
          Name:= WizardForm.FinishedHeadingLabel.Font.Name;
          Size:= WizardForm.FinishedHeadingLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.FinishedLabel.AutoSize;
      SetBounds(WizardForm.FinishedLabel.Left,WizardForm.FinishedLabel.Top,
                WizardForm.FinishedLabel.Width,WizardForm.FinishedLabel.Height);
      WordWrap:= WizardForm.FinishedLabel.WordWrap;
      Caption:= WizardForm.FinishedLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.FinishedLabel.Font.Color;
          Style:= WizardForm.FinishedLabel.Font.Style;
          Name:= WizardForm.FinishedLabel.Font.Name;
          Size:= WizardForm.FinishedLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

procedure CurPageChanged(CurPageID: Integer);
begin
  pnl:= TPanel.Create(WizardForm);
  with pnl do
    begin
      Align:= alClient;
      Parent:= WizardForm;
    end;
  with WizardForm do
    begin
      with WizardBitmapImage do
        begin
          Align:= alClient;
          Stretch:= True;
          Parent:= pnl;
        end;
      NextButton.Parent:= pnl;
      CancelButton.Parent:= pnl;
      BackButton.Parent:= pnl;
      Bevel.Parent:= pnl;
      pnl.Repaint;
    end;

  if (CurPageID > wpWelcome) and (CurPageID < wpFinished) then
    begin
      WizardForm.Bevel1.Parent:= pnl;
      with TLabel.Create(pnl) do
        begin
          AutoSize:= WizardForm.PageNameLabel.AutoSize;
          SetBounds(WizardForm.PageNameLabel.Left,WizardForm.PageNameLabel.Top,
                    WizardForm.PageNameLabel.Width,WizardForm.PageNameLabel.Height);
          Caption:= WizardForm.PageNameLabel.Caption;
          with Font do
            begin
              Color:= WizardForm.PageNameLabel.Font.Color;
              Style:= WizardForm.PageNameLabel.Font.Style;
              Name:= WizardForm.PageNameLabel.Font.Name;
              Size:= WizardForm.PageNameLabel.Font.Size;
            end;
          Transparent:= True;
          Parent:= pnl;
        end;
      with TLabel.Create(pnl) do
        begin
          AutoSize:= WizardForm.PageDescriptionLabel.AutoSize;
          SetBounds(WizardForm.PageDescriptionLabel.Left,WizardForm.PageDescriptionLabel.Top,
                    WizardForm.PageDescriptionLabel.Width,WizardForm.PageDescriptionLabel.Height);
          Caption:= WizardForm.PageDescriptionLabel.Caption;
          with Font do
            begin
              Color:= WizardForm.PageDescriptionLabel.Font.Color;
              Style:= WizardForm.PageDescriptionLabel.Font.Style;
              Name:= WizardForm.PageDescriptionLabel.Font.Name;
              Size:= WizardForm.PageDescriptionLabel.Font.Size;
            end;
          Transparent:= True;
          Parent:= pnl;
        end;
      pnl.Repaint;
    end;

  if CurPageID = wpWelcome then WelcomePage;
  if CurPageID = wpSelectDir then SelectDirPage;
  if CurPageID = wpReady then ReadyPage;
  if CurPageID = wpInstalling then InstallingPage;
  if CurPageID = wpFinished then FinishedPage;
end;


A1EXXX 02-11-2009 01:08 1258858

Цитата:

Цитата Serega
Попробуйте менять шрифт таким образом »

Соединил оба скрипта (картинка + шрифт) - эффект тот же, что и с моим... :(

postalok 02-11-2009 13:05 1259191

Всем привет! Помогите в создании интсаллятора!
Делаю инсталл с выбором компонентов

Source: "D:\Install\clean\hl.exe"; DestDir: "{app}";
Source: "D:\Install\clean\*"; DestDir: "{app}"; Components: cs
Source: "D:\Install\rus\*"; DestDir: "{app}"; Components: rus
Source: "D:\Install\new model\*"; DestDir: "{app}"; Components: steamodels

Но у меня не видит подпапки в заданых путях ? Как сделать ?
И как можно добавлять информацию в реестр с помощью интсалла ?

A1EXXX 02-11-2009 13:14 1259199

postalok, допиши в каждую строку с папками такие флаги: Flags: ignoreversion recursesubdirs createallsubdirs
В реестр через секцию [Registry], например
читать дальше »

[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}";

evgenik123456 02-11-2009 15:29 1259328

Help проблема вот в чём! мне надо внести инфу в рееестр например строковый параметр MainDir имеет значение "f:\\Program Files (x86)\\Intense Language Office\\" а если я программу буду ставить в другой путь как сделать чтобы значение менялось в зависимости от того куда устанавливалась прога
:o


Например:
устанавливаю в C:\Program Files\Intense Language Office следовательно в строковый параметр должен иметь значение C:\\Program Files\\Intense Language Office\\ тоесть "f:\\Program Files (x86)\\Intense Language Office\\"
будет уже неправильно и прога незапустится :cry:

Habetdin 02-11-2009 15:57 1259358

evgenik123456, вносите в реестр переменную {app}, пример:
Код:

[Registry]
Root: HKLM; Subkey: Software\MyProgram; ValueName: MainDir; ValueType: string; ValueData: {app}; Flags: uninsdeletekey


Serega 02-11-2009 19:03 1259575

Цитата:

Цитата A1EXXX
эффект тот же, что и с моим... »

Происходит это из-за того, что при смене шрифтов происходит изменение ширины Label'a,
Добавьте в свойства Label'a - AutoSize:= False;

ffa 02-11-2009 19:55 1259610

всем привет. можно ли сделать что бы распаковка архивов в FreeArc_Example-Ext происходила перед распаковкой основных файлов инстоллятора?

mariolast 03-11-2009 00:48 1259920

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

Serega 03-11-2009 01:25 1259940

Цитата:

Цитата mariolast
Есть ли пример скрипта, как можно из текстового файла, найдя некоторую строку, удалить ее? »

Я как-то писал пример, где в текстовом файле ищется строка и в зависимости от выбора дополнительной задачи, дописывается значение в строке.
Скрипт
Код:

; Cкрипт создан 27.04.2009 15:00:00

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
ShowLanguageDialog=auto
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[CustomMessages]
Text=Базы

[Tasks]
Name: English; Description: английская; GroupDescription: {cm:Text}; Flags: exclusive
Name: French; Description: французская; GroupDescription: {cm:Text}; Flags: exclusive unchecked
Name: German; Description: германская; GroupDescription: {cm:Text}; Flags: exclusive unchecked


[Files]
Source: config.cfg; DestDir: {app}; Flags: ignoreversion; AfterInstall: ReplaceLine;

[Code]
function TasksSelected: string;
begin
  if IsTaskSelected('English') then Result:= '51' else
  if IsTaskSelected('French') then Result:= '52' else Result:= '53';
end;

procedure ReplaceLine;
var
  S: TArrayOfString;
  F: string;
  i: Integer;
begin
  F := ExpandConstant('{app}\config.cfg');
  if not FileExists(F) then Exit;
  LoadStringsFromFile(F, S);
  for i:= 0 to GetArrayLength(S) - 1 do
    begin
      if Pos('Param =', S[i]) > 0 then
      S[i]:= 'Param =' + TasksSelected;  // при английском таске - 51, при французском - 52, и т.д.
    end;
  SaveStringsToFile(F, S, False);
end;


config.cfg
Код:

-$A8
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I+
-$J-
-$K-
-$L+
-$M-
-$N+
-$O+
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$YD
-$Z1
-Param =
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-LE"c:\program files\borland\delphi7\Projects\Bpl"
-LN"c:\program files\borland\delphi7\Projects\Bpl"
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
-w-UNSAFE_CAST


Tukash 03-11-2009 17:25 1260547

добрый вечер, это секция Code хочу сделать что-бы был шрифт(вернуть его на ВСЕ страницы) и возможность его менять, надеюсь на вашу помощь заранее спасибо!
Код:

var
  pnl: TPanel;

///////////////////////WelcomePage//////////////////////////////////////
procedure WelcomePage;
begin
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.WelcomeLabel1.AutoSize;
      SetBounds(WizardForm.WelcomeLabel1.Left,WizardForm.WelcomeLabel1.Top,
                WizardForm.WelcomeLabel1.Width,WizardForm.WelcomeLabel1.Height);
      WordWrap:= WizardForm.WelcomeLabel1.WordWrap;
      Caption:= WizardForm.WelcomeLabel1.Caption;
      with Font do
        begin
          Color:= WizardForm.WelcomeLabel1.Font.Color;
          Style:= WizardForm.WelcomeLabel1.Font.Style;
          Name:= WizardForm.WelcomeLabel1.Font.Name;
          Size:= WizardForm.WelcomeLabel1.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.WelcomeLabel2.AutoSize;
      SetBounds(WizardForm.WelcomeLabel2.Left,WizardForm.WelcomeLabel2.Top,
                WizardForm.WelcomeLabel2.Width,WizardForm.WelcomeLabel2.Height);
      WordWrap:= WizardForm.WelcomeLabel2.WordWrap;
      Caption:= WizardForm.WelcomeLabel2.Caption;
      with Font do
        begin
          Color:= WizardForm.WelcomeLabel2.Font.Color;
          Style:= WizardForm.WelcomeLabel2.Font.Style;
          Name:= WizardForm.WelcomeLabel2.Font.Name;
          Size:= WizardForm.WelcomeLabel2.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////SelectDirPage//////////////////////////////////////
procedure SelectDirPage;
begin
  with WizardForm do
    begin
      with DirEdit do
        begin
          Left:= 40;
          Top:= 137;
          Parent:= pnl;
        end;
      with DirBrowseButton do
        begin
          Left:= WizardForm.DirEdit.Left + WizardForm.DirEdit.Width + 10;
          Top:= WizardForm.DirEdit.Top - 1;
          Parent:= pnl;
        end;
      with SelectDirBitmapImage do
        begin
          Left:= WizardForm.DirEdit.Left;
          Top:= WizardForm.DirEdit.Top - 62;
          Stretch:= True;
          Parent:= pnl;
        end;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.SelectDirBrowseLabel.AutoSize;
      SetBounds(WizardForm.DirEdit.Left,WizardForm.DirEdit.Top - 30,
                WizardForm.SelectDirBrowseLabel.Width, WizardForm.SelectDirBrowseLabel.Height);
      WordWrap:= WizardForm.SelectDirBrowseLabel.WordWrap;
      Caption:= WizardForm.SelectDirBrowseLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.SelectDirBrowseLabel.Font.Color;
          Style:= WizardForm.SelectDirBrowseLabel.Font.Style;
          Name:= WizardForm.SelectDirBrowseLabel.Font.Name;
          Size:= WizardForm.SelectDirBrowseLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.SelectDirLabel.AutoSize;
      SetBounds(WizardForm.SelectDirBitmapImage.Left + 50,WizardForm.SelectDirBitmapImage.Top + 10,
                WizardForm.SelectDirLabel.Width,WizardForm.SelectDirLabel.Height);
      WordWrap:= WizardForm.SelectDirLabel.WordWrap;
      Caption:= WizardForm.SelectDirLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.SelectDirLabel.Font.Color;
          Style:= WizardForm.SelectDirLabel.Font.Style;
          Name:= WizardForm.SelectDirLabel.Font.Name;
          Size:= WizardForm.SelectDirLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.DiskSpaceLabel.AutoSize;
      SetBounds(WizardForm.DirEdit.Left,WizardForm.Bevel.Top - 25,
                WizardForm.DiskSpaceLabel.Width,WizardForm.DiskSpaceLabel.Height);
      WordWrap:= WizardForm.DiskSpaceLabel.WordWrap;
      Caption:= WizardForm.DiskSpaceLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.DiskSpaceLabel.Font.Color;
          Style:= WizardForm.DiskSpaceLabel.Font.Style;
          Name:= WizardForm.DiskSpaceLabel.Font.Name;
          Size:= WizardForm.DiskSpaceLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////ReadyPage//////////////////////////////////////
procedure ReadyPage;
var
  ready_str: string;
begin
  ready_str:= WizardForm.ReadyMemo.Text;
  with TLabel.Create(pnl) do
    begin
      SetBounds(45,115,WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
      Caption:= ready_str;
      with Font do
        begin
          Color:= WizardForm.ReadyLabel.Font.Color;
          Style:= WizardForm.ReadyLabel.Font.Style;
          Name:= WizardForm.ReadyLabel.Font.Name;
          Size:= WizardForm.ReadyLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TBevel.Create(WizardForm) do
    begin
      SetBounds(40,110, WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.ReadyLabel.AutoSize;
      SetBounds(40,70, WizardForm.ReadyLabel.Width, WizardForm.ReadyLabel.Height);
      WordWrap:= WizardForm.ReadyLabel.WordWrap;
      Caption:= WizardForm.ReadyLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.ReadyLabel.Font.Color;
          Style:= WizardForm.ReadyLabel.Font.Style;
          Name:= WizardForm.ReadyLabel.Font.Name;
          Size:= WizardForm.ReadyLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////InstallingPage//////////////////////////////////////
procedure InstallingPage;
begin
  with WizardForm.ProgressGauge do
    begin
      Left:= 40;
      Top:= 115;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.FilenameLabel.AutoSize;
      SetBounds(WizardForm.ProgressGauge.Left,WizardForm.ProgressGauge.Top-20,
                WizardForm.FilenameLabel.Width,WizardForm.FilenameLabel.Height);
      WordWrap:= WizardForm.FilenameLabel.WordWrap;
      Caption:= WizardForm.FilenameLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.FilenameLabel.Font.Color;
          Style:= WizardForm.FilenameLabel.Font.Style;
          Name:= WizardForm.FilenameLabel.Font.Name;
          Size:= WizardForm.FilenameLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.StatusLabel.AutoSize;
      SetBounds(WizardForm.StatusLabel.Left,WizardForm.StatusLabel.Top,
                WizardForm.StatusLabel.Width,WizardForm.StatusLabel.Height);
      WordWrap:= WizardForm.StatusLabel.WordWrap;
      Caption:= WizardForm.StatusLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.StatusLabel.Font.Color;
          Style:= WizardForm.StatusLabel.Font.Style;
          Name:= WizardForm.StatusLabel.Font.Name;
          Size:= WizardForm.StatusLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////FinishedPage//////////////////////////////////////
var
  CheckBox: array of TNewCheckBox;

procedure CheckBoxClick(Sender: TObject);
begin
  if TNewCheckBox(Sender).Checked then
    WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= True
  else WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= False;
end;

procedure LabelClick(Sender: TObject);
begin
  if CheckBox[TLabel(Sender).Tag].Checked then
    begin
      WizardForm.RunList.Checked[TLabel(Sender).Tag]:= False;
      CheckBox[TLabel(Sender).Tag].Checked:= False;
    end
  else
    begin
      WizardForm.RunList.Checked[TLabel(Sender).Tag]:= True;
      CheckBox[TLabel(Sender).Tag].Checked:= True;
    end;
end;

procedure HideRunList(Control: TWinControl);
var
  i, t: Integer;
  str: string;
begin
  if WizardForm.RunList.Items.Count > 0 then
    begin
      WizardForm.RunList.Hide;
      SetArrayLength(CheckBox, SizeOf(WizardForm.RunList.Items.Count));
      for i:= 0 to WizardForm.RunList.Items.Count-1 do
        begin
          CheckBox[i]:= TNewCheckBox.Create(Control);
          with CheckBox[i] do
            begin
              SetBounds(ScaleX(WizardForm.RunList.Left+2),ScaleY(WizardForm.RunList.Top+2+t),14,14);
              Tag:= i;
              Checked:= WizardForm.RunList.Checked[i];
              Caption:= WizardForm.RunList.Items.Strings[i];
              OnClick:= @CheckBoxClick;
              Color:= clWhite;
              Parent:= Control;
            end;
          str:= WizardForm.RunList.Items.Strings[i];
          with TLabel.Create(WizardForm) do
            begin
              SetBounds(ScaleX(WizardForm.RunList.Left+20),ScaleY(WizardForm.RunList.Top+2+t),
                        WizardForm.RunList.Width,14);
              Caption:= str;
              Tag:= i;
              OnClick:= @LabelClick;
              Transparent:= True;
              Parent:= Control;
            end;
          t:= t + 20;
        end;
    end;
end;

procedure FinishedPage;
begin
  HideRunList(pnl);
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.FinishedHeadingLabel.AutoSize;
      SetBounds(WizardForm.FinishedHeadingLabel.Left,WizardForm.FinishedHeadingLabel.Top,
                WizardForm.FinishedHeadingLabel.Width,WizardForm.FinishedHeadingLabel.Height);
      WordWrap:= WizardForm.FinishedHeadingLabel.WordWrap;
      Caption:= WizardForm.FinishedHeadingLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.FinishedHeadingLabel.Font.Color;
          Style:= WizardForm.FinishedHeadingLabel.Font.Style;
          Name:= WizardForm.FinishedHeadingLabel.Font.Name;
          Size:= WizardForm.FinishedHeadingLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  with TLabel.Create(pnl) do
    begin
      AutoSize:= WizardForm.FinishedLabel.AutoSize;
      SetBounds(WizardForm.FinishedLabel.Left,WizardForm.FinishedLabel.Top,
                WizardForm.FinishedLabel.Width,WizardForm.FinishedLabel.Height);
      WordWrap:= WizardForm.FinishedLabel.WordWrap;
      Caption:= WizardForm.FinishedLabel.Caption;
      with Font do
        begin
          Color:= WizardForm.FinishedLabel.Font.Color;
          Style:= WizardForm.FinishedLabel.Font.Style;
          Name:= WizardForm.FinishedLabel.Font.Name;
          Size:= WizardForm.FinishedLabel.Font.Size;
        end;
      Transparent:= True;
      Parent:= pnl;
    end;
  pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

procedure CurPageChanged(CurPageID: Integer);
begin
  pnl:= TPanel.Create(WizardForm);
  with pnl do
    begin
      Align:= alClient;
      Parent:= WizardForm;
    end;
  with WizardForm do
    begin
      with WizardBitmapImage do
        begin
          Align:= alClient;
          Stretch:= True;
          Parent:= pnl;
        end;
      NextButton.Parent:= pnl;
      CancelButton.Parent:= pnl;
      BackButton.Parent:= pnl;
      Bevel.Parent:= pnl;
      pnl.Repaint;
    end;

  if (CurPageID > wpWelcome) and (CurPageID < wpFinished) then
    begin
      WizardForm.Bevel1.Parent:= pnl;
      with TLabel.Create(pnl) do
        begin
          AutoSize:= WizardForm.PageNameLabel.AutoSize;
          SetBounds(WizardForm.PageNameLabel.Left,WizardForm.PageNameLabel.Top,
                    WizardForm.PageNameLabel.Width,WizardForm.PageNameLabel.Height);
          Caption:= WizardForm.PageNameLabel.Caption;
          with Font do
            begin
              Color:= WizardForm.PageNameLabel.Font.Color;
              Style:= WizardForm.PageNameLabel.Font.Style;
              Name:= WizardForm.PageNameLabel.Font.Name;
              Size:= WizardForm.PageNameLabel.Font.Size;
            end;
          Transparent:= True;
          Parent:= pnl;
        end;
      with TLabel.Create(pnl) do
        begin
          AutoSize:= WizardForm.PageDescriptionLabel.AutoSize;
          SetBounds(WizardForm.PageDescriptionLabel.Left,WizardForm.PageDescriptionLabel.Top,
                    WizardForm.PageDescriptionLabel.Width,WizardForm.PageDescriptionLabel.Height);
          Caption:= WizardForm.PageDescriptionLabel.Caption;
          with Font do
            begin
              Color:= WizardForm.PageDescriptionLabel.Font.Color;
              Style:= WizardForm.PageDescriptionLabel.Font.Style;
              Name:= WizardForm.PageDescriptionLabel.Font.Name;
              Size:= WizardForm.PageDescriptionLabel.Font.Size;
            end;
          Transparent:= True;
          Parent:= pnl;
        end;
      pnl.Repaint;
    end;

  if CurPageID = wpWelcome then WelcomePage;
  if CurPageID = wpSelectDir then SelectDirPage;
  if CurPageID = wpReady then ReadyPage;
  if CurPageID = wpInstalling then InstallingPage;
  if CurPageID = wpFinished then FinishedPage;
end;


Serega 03-11-2009 21:49 1260811

Цитата:

Цитата Tukash
хочу сделать что-бы был шрифт(вернуть его на ВСЕ страницы) и возможность его менять »

Ну так просто не используйте данный код и всё будет по умолчанию, а поменять шрифт можно так:
Код:

  WizardForm.Font.Name:= 'имя шрифта';

kampaster 04-11-2009 04:50 1261040

Доброе утро.... вот зарегистрировался на этом замечательном сайте, делаю репаки - довольно не плохо, вот подумал перекодировать музыку с помощью oggdec.exe..... я знаю как конвертировать музыку из ogg в wav и знаю что писать в батнике и в Inno Setup чтоб это красиво во время установки конвертировалось ну вобщем работало.... но проблема в том что я немогу понять как мне конвертнуть из wav в ogg....
Калбасился калбасился в батнике.... Помогите пожалуйста добрые люди=)
Вот консольный oggdec.exe (команды)

BlackSelf 04-11-2009 07:45 1261078

kampaster, к inno это вообще не относится. А oggdec, к твоему сведению, кодирует только ogg в wav.

kampaster 04-11-2009 09:04 1261101

BlackSelf спасибо за ответ....
Цитата:

А oggdec, к твоему сведению, кодирует только ogg в wav.
Жалко, а я так надеялся....
Цитата:

kampaster, к inno это вообще не относится.
Вобщето относится..... Яже с inno работаю.. поэтому мне это нужно.... Но всёравно спсибо!=)

Tukash 04-11-2009 10:17 1261170

Serega
да не))) я хочу и скрипт и шрифт!

Serega 04-11-2009 15:44 1261447

Цитата:

Цитата Tukash
я хочу и скрипт и шрифт! »

Извините я не телепат и не могу прочитать ваши мысли, что всё таки вы хотите сделать...
К сведению, у каждого TLabel есть Font.Name, т.е. - TLabel.Font.Name:= 'имя'

A1EXXX 04-11-2009 18:27 1261603

Inno Setup Compiler [03.11.09] (English) - новая версия компилятора от ResTools

МИШАНЧИК 05-11-2009 13:50 1262304

Подскажите пожалуйста!
Есть папка Gamedate и нужно сделать чтоб она находилась в дистрибутиве, но копировалась в {app} только когда включен чекбокс на дополнительных задачах.
Как правильно это оформить?

A1EXXX 05-11-2009 14:18 1262324

МИШАНЧИК,
читать дальше »

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

[Tasks]
Name: "gamedata"; Description: "{cm:xxx}";

[CustomMessages]
Russian.xxx=Установить Gamedata?

[Files]
Source: D:\Gamedata\*; DestDir: "{app}"; Tasks: gamedata; Flags: ignoreversion recursesubdirs createallsubdirs

МИШАНЧИК 05-11-2009 15:42 1262405

A1EXXX, большое спасибо!
А ещё вопрос, можно ли как-то сделать чтоб при наведении курсора на этот чекбокс появлялась всплывающая надпись с описанием?

A1EXXX 05-11-2009 17:06 1262475

МИШАНЧИК, можно! Немного повозился и вот, что получилось :)
читать дальше »

Цитата:

; Первоисточник - скрипт ComponentsDescriptions by Victor Dobrov
; изменён и переделан под TaskPage by A1EXXX

[Setup]
AppName=Tasks Descriptions
AppVerName=Tasks Descriptions 1.0
DefaultDirName=Tasks Descriptions
OutputDir=.

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

[Files]
; скачать библиотеку descctrl.dll (6 кб) можно здесь: http://victor-dobrov.narod.ru/inno_descctrl.7z
Source: descctrl.dll; Flags: dontcopy;
Source: D:\Gamedata\*; DestDir: "{app}"; Tasks: gamedata; Flags: ignoreversion recursesubdirs createallsubdirs

[CustomMessages]
Russian.xxx=Установка компонента Gamedata

[Tasks]
Name: "gamedata"; Description: "{cm:xxx}";

[code]
var Point: TPoint; CompDesc: TEdit; MessageForm: TForm; MessagePanel: TPanel; MessageLabel: TLabel; n, frame: integer;

function EnableDesc(TasksListHandle, DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';
function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';
procedure GetCursorPos(var Point: TPoint); external 'GetCursorPos@user32 stdcall delayload';
function SetWindowPos(hWnd, hWndInsertAfter, X, Y, cx, cy, wFlags: Longint):Boolean; external 'SetWindowPos@user32.dll stdcall';

Procedure DrawIcon(Form: TWinControl; File: String; nIcon, Left, Top, Size, BColor: Integer); var Panel: TPanel; Rect: TRect; Begin
Panel:= TPanel.Create(Form); Panel.SetBounds(Left, Top, Size, Size); Panel.Parent:= Form
with TBitmapImage.Create(Panel) do begin Parent:= Panel; with Bitmap do begin
Width:= Size; Height:= Size; Rect.Right:= Size; Rect.Bottom:= Size; Canvas.Brush.Color:= BColor; Canvas.FillRect(Rect); end; end;
End;

Procedure ResizeLabel(Obj: TLabel; Text: String; MaxWidth: Integer); var k, w, h: integer; Begin {размер формы подгоняется под текст}
Obj.AutoSize:= true; Obj.WordWrap:= false; Obj.Caption:= Text; {авторазмер}
w:= Obj.Width; h:= Obj.Height; n:= (w + frame*2)/MaxWidth + 1
Repeat
Obj.Width:= w/n + frame*2*n + k
Obj.Height:= h * n
Obj.WordWrap:= true; k:= k + 4
Until Obj.Height/h = n
End;

Procedure ShowHint(String: string; AIndex: Integer; Center: Bool); Begin {размер формы подгоняется под текст, если AIndex = 0, значок не рисуется}
frame:= 10; if AIndex <> 0 then String:= ' '+ String;
GetCursorPos(Point); MessageLabel.Left:= frame; MessageLabel.Top:= frame
ResizeLabel(MessageLabel, String, WizardForm.ClientWidth)
if Center then n:= WizardForm.Left + WizardForm.Width/2 - (MessageLabel.Width + frame*2 -2)/2 else n:= Point.X + 12
MessageForm.SetBounds(n, Point.Y + 12, MessageLabel.Width + frame*2 -2, MessageLabel.Height + frame*2 -2)
MessageForm.Show; SetWindowPos(MessageForm.Handle, -1, 0, 0, 0, 0, 3);
End;

Procedure DeinitializeSetup();
Begin
disabledesc();
End;

Procedure CurStepChanged(CurStep: TSetupStep);
Begin
if CurStep = ssInstall then disabledesc();
End;

Procedure CurPageChanged(CurPageID: Integer);
Begin
if CurPageID = wpSelectTasks then enableDesc(WizardForm.TasksList.Handle,CompDesc.Handle,
'Демонстрационный режим (описание компонента)'); // текст описания
End;

Procedure ObjectOnClick(Sender: TObject);
Begin
Case TObject(Sender) of {событие объекта}
CompDesc:
if CompDesc.Text > '' then ShowHint(CompDesc.Text, 0, true) else MessageForm.Hide;
MessageForm:
WizardForm.BringToFront;
end;
End;

Procedure InitializeWizard;
Begin
CompDesc:= TEdit.Create(WizardForm)
CompDesc.Parent:= WizardForm
CompDesc.Visible:= false
CompDesc.OnChange:= @ObjectOnClick
MessageForm:= CreateCustomForm;
MessageForm.BorderStyle:= bsNone
MessageForm.OnActivate:= @ObjectOnClick
MessagePanel:= TPanel.Create(MessageForm)
MessagePanel.BevelInner:= bvLowered;
MessagePanel.Align:= alClient;
MessagePanel.Color:= $E1FFFF; // цвет панели
MessagePanel.Parent:= MessageForm
MessageLabel:= TLabel.Create(MessagePanel)
MessageLabel.Transparent:= true
MessageLabel.Font.Name:= 'Tahoma' // шрифт описания
MessageLabel.Font.Size:= WizardForm.Font.Size
MessageLabel.Parent:= MessagePanel
End;

МИШАНЧИК 06-11-2009 07:35 1262937

A1EXXX, большое Вам спасибо! Буду пробовать.

A1EXXX 06-11-2009 15:07 1263218

Подобный вопрос звучал уже неоднократно, но ответа на него так и не увидел... В общем, можно ли прикрутить запрос 2-го диска к скрипту Булата FreeArc_Example? Запаковка arc'ов в инсталл не подходит. Или может можно записать в [Files] архив, который будет находиться на другом носителе (хотя бы для SFX, но чтобы по окончании распаковки основных, выводился запрос для следующего архива....)
А ещё лучше бы сделать так (если возможно): допустим, на 1-ом диске находится 4 архива. Распаковавшись, инсталлятор делает паузу и выводит сообщение (окошко) - мол, хотите продолжить, вставьте диск 2, и по нажатии "Да" инсталл не замечая подвоха распаковывает ещё один архив (вот только как сообщить ему заранее, что архивов 5, чтобы прогресс-бар не заполнился до конца :(), а если "Нет" - завершение установки... А может есть решение куда проще? Жду ваших предложений :)

Serega 06-11-2009 21:16 1263478

Цитата:

Цитата A1EXXX
В общем, можно ли прикрутить запрос 2-го диска к скрипту Булата FreeArc_Example? »

Можно, но об этом спросите автора...
P.S.
Обычно я игнорирую вопросы на данную тему... извините, но просто уже устал разбираться в чужих дебрях...

S.E.K.T.O.R. 06-11-2009 22:19 1263535

Уже задавал этот вопрос но ответа не увидел. Мож кто-нибудь догадался как изменить сообщение "Недостаточно места на диске" или вовсе отключить его, а вместо него заставить инсалл выдавать другое

S.E.K.T.O.R. 06-11-2009 23:15 1263570

Цитата:

Цитата A1EXXX
1) Как сделать, чтобы когда игру уже установлена, при запуске инсталла выскакивало такое вот окошко? »

По-моему никто не ответил, а делается это
так
Код:

[Setup]
AppId={{B9B31282-6F8D-4D74-A8F2-24AE59608A9D}
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
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

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

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

[Registry]
Root: HKLM; Subkey: Software\My Program; ValueType: string; ValueName: InstallPath; ValueData: {app}; Flags: uninsdeletekey

[_Code]
function InitializeSetup: Boolean;
var
  path: string;
  res: Integer;
begin
  Result:= True;
  if RegValueExists(HKLM, 'Software\My Program', 'InstallPath') then
    if RegQueryStringValue(HKLM, 'Software\My Program', 'InstallPath', path) then
      if FileExists(path + '\MyProg.exe') then
  if MsgBox('Запустить My Program?', mbConfirmation, MB_YESNO) = IDYES then
    begin
      Exec(path + '\MyProg.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
      Result:= False;
    end
  else Result:= False;
end;


S.E.K.T.O.R. 07-11-2009 00:12 1263602

Serega, Вы не знаете как инсталл Сталкера определяет версию Windows XP т.е. Professional или Home Edition, а в висте розрядность (32 или 64)

serg aka lain 07-11-2009 00:22 1263606

Цитата:

Цитата S.E.K.T.O.R.
Professional или Home Edition »

Присмотритесь к Help'у, к функции GetWindowsVersionEx(Version);
Код:


  // Disallow installation on Home edition of Windows
  if Version.SuiteMask and VER_SUITE_PERSONAL <> 0 then
  begin
    SuppressibleMsgBox('This program cannot be installed on a Home edition of Windows.',
      mbCriticalError, MB_OK, MB_OK);
    Result := False;
    Exit;
  end;

  // On Windows XP, check for SP2
  if Version.NTPlatform and
    (Version.Major = 5) and
    (Version.Minor = 1) and
    (Version.ServicePackMajor < 2) then
  begin
    SuppressibleMsgBox('When running on Windows XP, Service Pack 2 is required.',
      mbCriticalError, MB_OK, MB_OK);
    Result := False;
    Exit;
  end;


S.E.K.T.O.R. 07-11-2009 01:33 1263648

Я хочу чтобы в проверке сист. требований кроме " Microsoft Windows XP Service Pack 2" еще было "Microsoft Windows XP Professional Edition Service Pack 2, а в Висте "Windows Vista Ultimate, 32 bits, Service Pack 1"

ADremLIN 07-11-2009 03:12 1263686

Inno Setup Form Designer (ISFD).

У кого-нибудь остались старые версии сабжа? 2.0.5, 2.0.6с, 2.0.7?
У меня есть 2.0.4.

А вот 2.0.8 почему-то падает с ошибкой: Runtime error 216 at 00404036 (У меня Win7) :(

И было бы совсем неплохо какой нибудь русский хелп к нему...

Спасибо.

[Добавлено]

Мануалы к ISFD похоже "умерли" вместе с официальным сайтом программы.
Прогуглил все что мог - ничего не нашел :(
В веб-архиве упоминалось даже о видео-мануале:
(2006/08/20 Added Video-Tutorials for ISFD http://web.archive.org/web/200610230...isfd.kaju74.de)

Может у кого завалялось что-нибудь по теме?

serg aka lain 07-11-2009 18:09 1264052

Цитата:

Цитата S.E.K.T.O.R.
хотите сказать, что за это отвечают данные по адресу
HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions\ProductSuite
т.е. если ProductSuite - Personal значит это Home, если значения нет Professional »

Не совсем так (были в сети не так давно статьи, как из Хомяка сделать Профессионал)
Но, тем не менее, примерно так.

Lancer2404 08-11-2009 20:53 1265071

Скажите как сделать чтобы после установки выдавалось сообщение?

serg aka lain 08-11-2009 21:59 1265137

Цитата:

Цитата Lancer2404
Скажите как сделать чтобы после установки выдавалось сообщение? »

Код:

[Setup]
AppName=My Program
AppVerName=My Program
CreateAppDir=False
Uninstallable=False
OutputDir=userdocs:My Program.

[code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then
    MsgBox('Сообщение', mbInformation, MB_OK);
end;


Lancer2404 09-11-2009 18:37 1265918

спасибо

Habetdin 10-11-2009 13:34 1266605

Проблема решена :)
читать дальше »
Решение:
Код:

[code]
procedure CurPageChanged(CurPageID: Integer);
begin
        if CurPageID = wpInstalling then
                begin
                if FileExists(ExpandConstant('{src}\File.ext')) then
                FileCopy(ExpandConstant('{src}\File.ext'), ExpandConstant('{app}\File.ext'), False);
        end;
end;


Serega 10-11-2009 18:36 1266829

Habetdin, дело в том, что есть только:
Код:

function FileCopy(const ExistingFile, NewFile: string; const FailIfExists: Boolean): Boolean;
Цитата:

Цитата из Справки
Копирует ExistingFile в NewFile, сохраняя временные отметки и атрибуты файла.
Если FailIfExists=True и NewFile уже существует, файл не копируется, если FailIfExists=False, существующий файл заменится на NewFile.
Если копирование успешно, возвращает True, иначе False.


lmiol 11-11-2009 11:56 1267365

у меня трабла , при выборе всех компонентов ставятся все ярлыки, а мне нужно чтобы при выборе компонентов main и browser ставился только ярлык Name: "{userdesktop}\Quake Live", а ставятся оба Name: "{userdesktop}\Quake Live" и Name: "{userdesktop}\QuakeLive.com"
Как нужно выставить компоненты чтобы такого небыло или что нужно сделать?

Код:

[Types]
Name: "full"; Description: "Все компоненты";
Name: "custom"; Description: "Выбрать компоненты"; Flags: iscustom

[Components]
Name: "main"; Description: "Главные файлы Quake Live"; Types: full custom; Flags: fixed
Name: "browser"; Description: "Firefox и дополнение Prism"; Types: full custom
Name: "manual"; Description: "Руководство и Награды"; Types: full custom
Name: "anti"; Description: "Античит PunkBuster"; Types: full custom

[Messages]
BeveledLabel=Copyright © Mio Dark Project

[Tasks]
Name: "desktopicon"; Description: "Создать ярлык на Рабочем Столе"; GroupDescription: "{cm:AdditionalIcons}"

[Files]
Source: "uninstall.ico"; Components: main; DestDir: "{userappdata}\id Software\uninstall"; Flags: ignoreversion
Source: "usercur\*"; Components: main; DestDir: "{userappdata}\id Software"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "usercur2\*"; Components: manual; DestDir: "{userappdata}\id Software"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "usercur3\*"; Components: browser; DestDir: "{userappdata}\"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "programfiles\*"; Components: browser; DestDir: "{pf}\"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "pk3\*"; Components: main; DestDir: "{userappdata}\id Software"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension nocompression
Source: "pbsvc.exe" ;Components: anti;DestDir: "{tmp}"; Flags: ignoreversion

[Icons]
Name: "{group}\QuakeLive.com"; Filename: "http://www.quakelive.com"; IconFilename: "{userappdata}\id Software\quakelive\home\baseq3\quakelive.dll"; IconIndex: 0; Components: main
Name: "{group}\Руководство к игре"; Filename: "{userappdata}\id Software\quakelive\home\manual\manual.htm"; IconFilename: "{userappdata}\id Software\quakelive\home\links\qlm.ico"
Name: "{group}\Демки"; Filename: "{userappdata}\id Software\quakelive\home\baseq3\demos"; IconFilename: "{sys}\SHELL32.dll";  IconIndex: 126
Name: "{group}\Скриншоты"; Filename: "{userappdata}\id Software\quakelive\home\baseq3\screenshots"; IconFilename: "{sys}\SHELL32.dll";  IconIndex: 127
Name: "{group}\Удалить игру"; Filename: "{uninstallexe}"; IconFilename: "{userappdata}\id Software\uninstall\uninstall.ico"
Name: "{userdesktop}\QuakeLive.com"; Filename: "http://www.quakelive.com"; Tasks: desktopicon; IconFilename: "{userappdata}\id Software\quakelive\home\baseq3\quakelive.dll"; IconIndex: 0; Components: main
Name: "{userdesktop}\Quake Live"; Filename: {pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe; WorkingDir: {pf}\FirefoxPrismQuakeLive\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Tasks: desktopicon; IconFilename: "{pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe"; IconIndex: 0; Components: browser
Name: "{userdesktop}\Руководство к игре"; Filename: "{userappdata}\id Software\quakelive\home\manual\manual.htm"; IconFilename: "{userappdata}\id Software\quakelive\home\links\qlm.ico"

[Run]
Filename: {tmp}\pbsvc.exe; StatusMsg: "Установка античита PunkBuster..."; Parameters: "/i --no-display --i-accept-the-pb-eula /u"; WorkingDir: {tmp}; Flags: runhidden waituntilterminated ; Components: anti;
Filename: {pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe; WorkingDir: {pf}\FirefoxPrismQuakeLive\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Description: "Войти в игру"; Flags: nowait shellexec postinstall skipifsilent unchecked; Components: browser
Filename: "http://www.quakelive.com/#home"; Description: "Войти в игру"; Flags: nowait shellexec postinstall skipifsilent unchecked; Components: main
Filename: {userappdata}\id Software\quakelive\home\manual\manual.htm; Description: "Прочитать руководство"; Flags: nowait shellexec postinstall skipifsilent unchecked; Components: manual


ADremLIN 11-11-2009 13:12 1267417

Скрипты добавляющие/удаляющие ваш путь в переменной %PATH%:
читать дальше »
Код:

///////////////////////////////////////////////////////////////////////////////////////////////////
// Сохранить сей манускрипт как "env-tools.iss" (без кавычек)
//
//  По мотивам сообщения тов. omals и zhe_zho от 02-12-2008 09:21
//  http://forum.ru-board.com/topic.cgi/tools.cgi?action=notifyon&forum=5&topic=27438&start=1685
//
//  Для применения нового значения %PATH% после завершения инсталяции
//  необходимо добавить в секцию:
//
//  [Setup]
//  ChangesEnvironment=yes
//
//  В скрипт подключается так:
//
//  [_Code]                          "_Code" - Из-за ограничений тегов форума. Имеется ввиду секция Code
//  #include "env-tools.iss"
//
//  Процедуры описаны в env-tools.iss:
//
//  SetEnvironmentPath('<ваш_путь>');    // Добавляет <ваш_путь> к системному %PATH%
//  DeleteEnvironmentPath('<ваш_путь>'); // Удаляет <ваш_путь> из системного %PATH%
//
//  Вызывать по смыслу в нужном месте инсталляции или деинсталяции
//  Например:
//  {После инсталляции:}
//  procedure CurStepChanged(CurStep: TSetupStep);
//  begin
//    if CurStep = ssPostInstall then
//    begin
//      SetEnvironmentPath(ExpandConstant('{app}\bin'));
//    end;
//  end;
//
//  {Перед деинсталляцией:}
//  procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
//  begin
//    if CurUninstallStep = usUninstall then
//    begin
//      DeleteEnvironmentPath(ExpandConstant('{app}\bin'));
//    end;
//  end;
//       
///////////////////////////////////////////////////////////////////////////////////////////////////

procedure SetEnvironmentPath(NewPath: String);
var
  PathStr: String;
begin
  {Получаем значение текущего системного %PATH%}
  RegQueryStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);
  {Ищем NewPath в текущем системном %PATH%}
  if Pos(NewPath, PathStr) <= 0 then // Если в текущем %PATH% не найдено NewPath;
  begin
    PathStr := NewPath + ';' + PathStr;
    RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);
  end;
end;

procedure DeleteEnvironmentPath(OldPath: String);
var
  PathStr: String;
  StartPos, Len: Integer;
begin
  {Получаем значение текущего системного %PATH%}
  RegQueryStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);

  {Ищем OldPath c ";" в текущем системном %PATH%}
  StartPos := Pos(OldPath + ';', PathStr); //индекс начала вхождения OldPath c ";"
  if StartPos > 0 then // Если в текущем %PATH% найден OldPath;
  begin
    Len := Length(OldPath + ';');  //длина строки OldPath c ";"
    Delete(PathStr, StartPos, Len); // удаляем из текущего системного %PATH% (PathStr) строку OldPath c ";"
    {Записываем изменения в реестр}
    RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);
    Exit;
  end;

  {Ищем OldPath без ";" в текущем системном %PATH%}
  StartPos := Pos(OldPath, PathStr);
  if StartPos > 0 then // Если в текущем %PATH% найден OldPath без ";"
  begin
    Len := Length(OldPath); //индекс начала вхождения OldPath без ";"
    Delete(PathStr, StartPos, Len); // удаляем из текущего системного %PATH% (PathStr) строку OldPath без ";"
    {Записываем изменения в реестр}
    RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);
  end;
end;


Может кому пригодится...

Внимание, здесь нет проверки входного параметра функций на "пустую строку" - осторожней с этим... (Доделаю при удобном случае)

ЗЫ: Как принудительно заставить систему обновить(перечитать) измененный %PATH%, ДО ЗАВЕРШЕНИЯ установки?
Дело в том, что ChangesEnvironment=yes срабатывает уже ПОСЛЕ ЗАВЕРШЕНИЯ установки.
А то у меня в постинстале батник не работает т.к. использует уже "новую" %PATH%... :(

abc 11-11-2009 17:54 1267677

Подскажите, как сделать в программе установки проверку на наличие установленного распространяемого пакета ms visual c++ 2008 и в случае отсутствия автоматически (с учётом разрядности системы) загрузить (в ISTool есть модуль закачи файлов) и выполнить файл инсталлятора пакета. Заранее благодарен. Прошу прощение, если это уже где-то обсуждалось.

Serega 11-11-2009 19:36 1267767

Цитата:

Цитата lmiol
у меня трабла , при выборе всех компонентов ставятся все ярлыки »

Добавьте проверку на выбранный компонент:
Код:

Name: "{userdesktop}\Quake Live"; Filename: {pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe; WorkingDir: {pf}\FirefoxPrismQuakeLive\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Tasks: desktopicon; IconFilename: "{pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe"; IconIndex: 0; Components: browser; Check: not IsComponentSelected('main')
Цитата:

Цитата ADremLIN
Дело в том, что ChangesEnvironment=yes срабатывает уже ПОСЛЕ ЗАВЕРШЕНИЯ установки. »

Цитата из Справки
Цитата:

Порядок установки

Задания в секциях от начала до завершения установки выполняются в следующем порядке:

·Выполняется [InstallDelete].

·Параметры секции [UninstallDelete] располагаются в логе деинсталлятора (который на этом этапе находится в оперативной памяти).

·При необходимости создается папка приложения.

·Выполняется [Dirs].

·При необходимости резервируется имя файла деинсталлятора.

·Выполняется [Files]. (Регистрация файлов не происходит.)

·Выполняется [Icons].

·Выполняется [INI].

·Выполняется [Registry].

·Регистрируются файлы, нуждающиеся в регистрации, если только не требуется перезагрузка системы - в этом случае ни один файл не будет зарегистрирован до тех пор, пока система не перезапустится. .

·При необходимости создается пункт в Установка/Удаление программ.

·Параметры [UninstallRun] располагаются в логе деинсталлятора.

·Завершается создание деинсталлятора и он сохраняется на диске.

·При ChangesAssociations=yes меняются ассоциации для файлов.

·Если ChangesEnvironment=yes, остальные приложения информируются об изменении переменных среды.

·Выполняется [Run], за исключением файлов с флагом postinstall, которые выполнятся после того, как отобразится страница Установка завершена.

Все параметры выполняются инсталлятором в том порядке, в котором они располагаются в секции

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

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

Serega 11-11-2009 19:51 1267784

Цитата:

Цитата abc
Подскажите, как сделать в программе установки проверку на наличие установленного распространяемого пакета ms visual c++ 2008 и в случае отсутствия автоматически (с учётом разрядности системы) загрузить»

У меня есть пример проверки и загрузки в случае отсутствия .NET Framework'a, можете сделать по аналогии
Пример
Код:

; определение версии установленного .NetFramework

[Setup]
AppName=NetFramework
AppVerName=NetFramework
DefaultDirName={pf}\NetFramework
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
VersionInfoCopyright=Serega

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

[Code]
const
  MinNetFrameWork = 'v3.5'; // минимальная версия NetFrameWork

var
  url: string;

function GetNetFrameWork(ver: string): Integer;
begin
// страница загрузок http://www.microsoft.com/downloads/results.aspx?pocId=&freetext=Framework&DisplayLang=ru
  Result:= 5;
  url:= 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe';
  case ver of
  'v1.0':
      begin
      // по этой ссылке v1.1, т.к. ссылку на v1.0, я не нашёл... раритет... ;)
        url:= 'http://download.microsoft.com/download/0/8/6/086e7824-ddad-45c0-b765-721e5e28e4c5/dotnetfx.exe';
        Result:= 0;
      end;
  'v1.1':
      begin
        url:= 'http://download.microsoft.com/download/0/8/6/086e7824-ddad-45c0-b765-721e5e28e4c5/dotnetfx.exe';
        Result:= 1;
      end;
  'v2.0':
      begin
        url:= 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe';
        Result:= 2;
      end;
  'v3.0':
      begin
        url:= 'http://download.microsoft.com/download/4/d/a/4da3a5fa-ee6a-42b8-8bfa-ea5c4a458a7d/dotnetfx3setup.exe';
        Result:= 3;
      end;
  'v3.5':
      begin
        url:= 'http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe';
        Result:= 4;
      end;
  end;
end;

function SearchNetFrameWork: Boolean;
var
  Error: Integer;
  VerNetFrameWork: array of string;
  VerNetFrameWorkInstalled: TArrayOfString;
  i, n: Integer;
begin
  VerNetFrameWork:= ['v1.0', 'v1.1', 'v2.0', 'v3.0', 'v3.5'];
  SetArrayLength(VerNetFrameWork, GetArrayLength(VerNetFrameWork));
  if RegGetSubkeyNames(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy', VerNetFrameWorkInstalled) then
    begin
      SetArrayLength(VerNetFrameWorkInstalled, GetArrayLength(VerNetFrameWorkInstalled));
      for i:= 0 to GetArrayLength(VerNetFrameWorkInstalled)-1 do
        begin
          for n:= 0 to GetArrayLength(VerNetFrameWork)-1 do
          if VerNetFrameWorkInstalled[i] = VerNetFrameWork[n] then
          if n >= GetNetFrameWork(MinNetFrameWork) then
            begin
              Result:= True;
              Break;
            end
          else
            begin
              if MsgBox('Для этой программы требуется установленный .NET Framework не ниже ' + MinNetFrameWork + '. ' +
                        'Пожалуйста загрузите и установите .NET Framework и запустите установку снова. ' +
                        'Вы хотите загрузить .NET Framework сейчас?', mbConfirmation, MB_YESNO) = idYes then
              ShellExec('open', url,'','',SW_SHOWNORMAL,ewNoWait,Error);
              Result:= False;
            end;
        end;
    end;
end;

function InitializeSetup: Boolean;
begin
  if SearchNetFrameWork then Result:= True;
end;


lmiol 12-11-2009 00:22 1268040

Цитата:

Добавьте проверку на выбранный компонент
Код:

Name: "{userdesktop}\Quake Live"; Filename: {pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe; WorkingDir: {pf}\FirefoxPrismQuakeLive\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Tasks: desktopicon; IconFilename: "{pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe"; IconIndex: 0; Components: browser; Check: not IsComponentSelected('main')

:
Помогло!!! только надо было наоборот :) , спасибо еще раз!!!

ADremLIN 12-11-2009 01:16 1268054

2 Serega:

Цитата:

Цитата Serega
если вы запускаете в ssPostInstall батник, то соответственно приложения уже перезагрузились. Видимо что-то не так с батником... »

Цитата:

Цитата из справки
·Выполняется [Run], за исключением файлов с флагом postinstall, которые выполнятся после того, как отобразится страница Установка завершена.


Вот-вот, как раз мой случай: запуск батника из [Run] с флагом postinstall :), хотя все равно не работает.

Буду копать дальше. Спасибо!

AH4OyC 12-11-2009 22:47 1268814

Помогите! Что надо сделать со скриптом?



Скрипт
читать дальше »


[Setup]
DiskSpanning=true
DiskSliceSize=1457664000
AppName=Pure 2009
AppVerName=Pure 2009 1.0
AppPublisher=AH4OyC
AppPublisherURL=http://www.pure.com/
AppSupportURL=http://www.pure.com/
AppUpdatesURL=http://www.pure.com/
DefaultDirName={pf}\Pure 2009
DefaultGroupName=Pure 2009
LicenseFile=D:\Репаки\Рисунки\EULARU.txt
OutputDir=D:\Репаки
OutputBaseFilename=setup
WizardImageFile=D:\Репаки\Рисунки\123.bmp
SetupIconFile=D:\Репаки\Рисунки\fr.ico
Compression=lzma/ultra64
SolidCompression=true
InternalCompressLevel=ultra64

[Languages]
Name: russian; MessagesFile: compiler:Default.isl

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

[Files]
Source: ISSkin.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

Source: Vista.cjstyles; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: C:\Users\Максим\Desktop\NOKIA 5800\My cert; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs

[Run]
Tasks: rus; Filename: "{src}\Redist\keygen.exe"; WorkingDir: "{src}\Redist"; Parameters: "/q"; StatusMsg: "Установка Pisix..."; Flags: waituntilterminated

[code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';

function InitializeSetup:boolean;
begin
ExtractTemporaryFile('Vista.cjstyles');
LoadSkin(ExpandConstant('{tmp}')+'\Vista.cjstyles', '');
Result:=True;
end;

const
Color = clGray;

procedure InitializeWizard();
begin
WizardForm.Font.Color:=clWhite;
WizardForm.Color:=Color;
WizardForm.WelcomePage.Color:=Color;
WizardForm.InnerPage.Color:=Color;
WizardForm.FinishedPage.Color:=Color;
WizardForm.LicensePage.Color:=Color;
WizardForm.PasswordPage.Color:=Color;
WizardForm.InfoBeforePage.Color:=Color;
WizardForm.UserInfoPage.Color:=Color;
WizardForm.SelectDirPage.Color:=Color;
WizardForm.SelectComponentsPage.Color:=Color;
WizardForm.SelectProgramGroupPage.Color:=Color;
WizardForm.SelectTasksPage.Color:=Color;
WizardForm.ReadyPage.Color:=Color;
WizardForm.PreparingPage.Color:=Color;
WizardForm.InstallingPage.Color:=Color;
WizardForm.InfoAfterPage.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.DiskSpaceLabel.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.GroupEdit.Color:=Color;
WizardForm.PasswordLabel.Color:=Color;
WizardForm.PasswordEdit.Color:=Color;
WizardForm.PasswordEditLabel.Color:=Color;
WizardForm.ReadyMemo.Color:=Color;
WizardForm.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
WizardForm.InfoBeforeClickLabel.Color:=Color;
WizardForm.MainPanel.Color:=Color;
WizardForm.PageNameLabel.Color:=Color;
WizardForm.PageDescriptionLabel.Color:=Color;
WizardForm.ReadyLabel.Color:=Color;
WizardForm.FinishedLabel.Color:=Color;
WizardForm.YesRadio.Color:=Color;
WizardForm.NoRadio.Color:=Color;
WizardForm.WelcomeLabel2.Color:=Color;
WizardForm.LicenseLabel1.Color:=Color;
WizardForm.InfoAfterClickLabel.Color:=Color;
WizardForm.ComponentsList.Color:=Color;
WizardForm.ComponentsDiskSpaceLabel.Color:=Color;
WizardForm.BeveledLabel.Color:=Color;
WizardForm.StatusLabel.Color:=Color;
WizardForm.FilenameLabel.Color:=Color;
WizardForm.SelectDirLabel.Color:=Color;
WizardForm.SelectStartMenuFolderLabel.Color:=Color;
WizardForm.SelectComponentsLabel.Color:=Color;
WizardForm.SelectTasksLabel.Color:=Color;
WizardForm.LicenseAcceptedRadio.Color:=Color;
WizardForm.LicenseNotAcceptedRadio.Color:=Color;
WizardForm.UserInfoNameLabel.Color:=Color;
WizardForm.UserInfoNameEdit.Color:=Color;
WizardForm.UserInfoOrgLabel.Color:=Color;
WizardForm.UserInfoOrgEdit.Color:=Color;
WizardForm.PreparingLabel.Color:=Color;
WizardForm.FinishedHeadingLabel.Color:=Color;
WizardForm.UserInfoSerialLabel.Color:=Color;
WizardForm.UserInfoSerialEdit.Color:=Color;
WizardForm.TasksList.Color:=Color;
WizardForm.RunList.Color:=Color;
WizardForm.SelectDirBrowseLabel.Color:=Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;
end;

YURSHAT 13-11-2009 04:58 1268984

Цитата:

Цитата AH4OyC
Помогите! Что надо сделать со скриптом? »

попробуйте
так
[Setup]
DiskSpanning=true
DiskSliceSize=1457664000
AppName=Pure 2009
AppVerName=Pure 2009 1.0
AppPublisher=AH4OyC
AppPublisherURL=http://www.pure.com/
AppSupportURL=http://www.pure.com/
AppUpdatesURL=http://www.pure.com/
DefaultDirName={pf}\Pure 2009
DefaultGroupName=Pure 2009
OutputDir=D:\Репаки
OutputBaseFilename=setup
Compression=lzma/ultra64
SolidCompression=true
InternalCompressLevel=ultra64

[Languages]
Name: russian; MessagesFile: compiler:Default.isl

[Files]
Source: ISSkin.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: Vista.cjstyles; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: изображение в нижней части инсталлятора.bmp; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

[Run]
Filename: "{src}\DirectX\DXSETUP.exe"; Parameters: "\silent"; StatusMsg: ExpandConstant('{cm:UP}'); Check: InstallDirectX
Filename: "{src}\Redist\vcredist_x86.exe"; Parameters: "\q"; StatusMsg: "Идет установка Microsoft Visual C++ Redistibutable"; WorkingDir: "{src}\Redist"; Check: InstallRedist

[Icons]
Name: {group}\MyProg.exe; Filename: {app}\iconxp.exe; Check: GroupIcons
Name: {commondesktop}\MyProg.exe; Filename: {app}\iconxp.exe; Check: CreateIcons

[CustomMessages]

russian.DRT=Обновить DirectX
russian.UP=Идет обновление DirectX...
russian.Icons=Создать ярлык на рабочем столе
russian.Group=Создать ярлыки в меню "Пуск"
russian.Redist=Установить Microsoft C++ Redist

[code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';

var
bottom_img:TBitmapImage;
BmpFile: TBitmapImage;

DirectX, Redist, Icons, Group, RunProgram: TCheckBox; //Чекбоксы
IconsLabel, GroupLabel, RedistLabel, DirectXLabel: TLabel; //Надписи к чекбоксам

function InitializeSetup:boolean;
begin
ExtractTemporaryFile('Vista.cjstyles');
LoadSkin(ExpandConstant('{tmp}')+'\Vista.cjstyles', '');
Result:=True;
end;

//Функция проверки чекбоксов
function InstallDirectX: Boolean;
begin
Result:= DirectX.Checked;
end;

function InstallRedist: Boolean;
begin
Result:=Redist.Checked;
end;

function CreateIcons: Boolean;
begin
Result:=Icons.Checked;
end;

function GroupIcons: Boolean;
begin
Result:=Group.Checked;
end;

// Процедура, чтоб отмечался чебокс еси кликнуть по надписи
procedure RedistOnClick(Sender: TObject);
begin
if Redist.Checked = False then
Redist.Checked:= True else
Redist.Checked:= False;
end;

procedure DirectXLabelOnClick(Sender: TObject);
begin
if DirectX.Checked = False then
DirectX.Checked:= True else
DirectX.Checked:= False;
end;

procedure IconsOnClick(Sender: TObject);
begin
if Icons.Checked = False then
Icons.Checked:= True else
Icons.Checked:= False;
end;

procedure GroupOnClick(Sender: TObject);
begin
if Group.Checked = False then
Group.Checked:= True else
Group.Checked:= False;
end;

const
Color = clGray;

procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Visible:= False;
ExtractTemporaryFile('изображение в нижней части инсталлятора.bmp');
bottom_img:= TBitmapImage.Create(WizardForm);
bottom_img.Bitmap.LoadFromFile(ExpandConstant('{tmp}\изображение в нижней части инсталлятора.bmp'));
bottom_img.SetBounds(0, 315, 497, 48);
bottom_img.Parent:= WizardForm;
bottom_img.Stretch:= True;
WizardForm.Font.Color:=clWhite;
WizardForm.Color:=Color;
WizardForm.WelcomePage.Color:=Color;
WizardForm.InnerPage.Color:=Color;
WizardForm.FinishedPage.Color:=Color;
WizardForm.LicensePage.Color:=Color;
WizardForm.PasswordPage.Color:=Color;
WizardForm.InfoBeforePage.Color:=Color;
WizardForm.UserInfoPage.Color:=Color;
WizardForm.SelectDirPage.Color:=Color;
WizardForm.SelectComponentsPage.Color:=Color;
WizardForm.SelectProgramGroupPage.Color:=Color;
WizardForm.SelectTasksPage.Color:=Color;
WizardForm.ReadyPage.Color:=Color;
WizardForm.PreparingPage.Color:=Color;
WizardForm.InstallingPage.Color:=Color;
WizardForm.InfoAfterPage.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.DiskSpaceLabel.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.GroupEdit.Color:=Color;
WizardForm.PasswordLabel.Color:=Color;
WizardForm.PasswordEdit.Color:=Color;
WizardForm.PasswordEditLabel.Color:=Color;
WizardForm.ReadyMemo.Color:=Color;
WizardForm.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
WizardForm.InfoBeforeClickLabel.Color:=Color;
WizardForm.MainPanel.Color:=Color;
WizardForm.PageNameLabel.Color:=Color;
WizardForm.PageDescriptionLabel.Color:=Color;
WizardForm.ReadyLabel.Color:=Color;
WizardForm.FinishedLabel.Color:=Color;
WizardForm.YesRadio.Color:=Color;
WizardForm.NoRadio.Color:=Color;
WizardForm.WelcomeLabel2.Color:=Color;
WizardForm.LicenseLabel1.Color:=Color;
WizardForm.InfoAfterClickLabel.Color:=Color;
WizardForm.ComponentsList.Color:=Color;
WizardForm.ComponentsDiskSpace