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

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

Автор: NightW0lf
Дата сообщения: 30.03.2007 22:29
Возможноли как нибудь это реализовать:

1. Чтобы в одном инсталляторе можно было использовать 2 разных WizardImageFile для страниц Привествия и Завершения.
2. Растянуть 2 разных WizardImageFile на страницах Привествия и Завершения на всю форму.

Вот пример:
страница Привествия
страница Завершения

Заранее благодарю!
Автор: Sampron
Дата сообщения: 31.03.2007 00:25
NightW0lf

[Setup]
WizardImageFile=C:\Image1.bmp

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

[Code]
var
Image2: TBitmapImage;

procedure InitializeWizard();
var
Page: TWizardPage;
begin
ExtractTemporaryFile('Image2.bmp')
WizardForm.WizardBitmapImage.Width:=497
WizardForm.WelcomeLabel1.Visible:=False
WizardForm.WelcomeLabel2.Visible:=False
WizardForm.WizardBitmapImage2.Visible:=False
WizardForm.FinishedLabel.Visible:=False
WizardForm.FinishedHeadingLabel.Visible:=False
end;

procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpFinished then
begin
Image2:=TBitmapImage.Create(WizardForm)
with Image2 do begin
Left:=0
Top:=0
Width:=497
Height:=313
Parent:=WizardForm.FinishedPage
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Image2.bmp')
end
end
end;
Автор: boss911
Дата сообщения: 31.03.2007 01:23
Dima555555

Цитата:
а поподробней

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



Genri

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

Код: [Types]
Name: delall; Description: Снять выделение
Автор: Sampron
Дата сообщения: 31.03.2007 01:55
boss911
В инсталл можно включить уже зарегеную программу используй regshot отличная прога.
Автор: boss911
Дата сообщения: 31.03.2007 03:45
Sampron

Причем тут regshot? Речь идет о том, что есть программы, которые регистрируются только на одной машине и все ровно, где регистрационные данные хранятся, либо это реестр или файл, так регистрационные данные могут завить от конкретного железа или установленной системы! Я прекрасно знаю, что такое regshot и как внести необходимый ключ реестра, чтоб программа установилась уже зарегистрированной! Все, заканчиваем оффтоп!
Автор: Dima555555
Дата сообщения: 31.03.2007 08:27
boss911 хех я сделал чтоб после усановки сам по себе патч запустился ник вбиваешь жмёшь крек ит и всё...
Автор: Chuvakstepan
Дата сообщения: 31.03.2007 10:13
Привет всем!
Помогите, пожалуйста дописать код проверки пути установки файлов на наличие в пути русских символов


Цитата:
function NextButtonClick(CurPageID: Integer): Boolean;
var
s: string;
begin
Result := True;
if CurPageID = wpSelectDir then
begin
if {app} содержит русские символы then
s := 'В пути установки присутствуют русские буквы, что недопустимо'#13#13'Пожалуйста, повторите ввод.';
MsgBox(s, mbError, mb_Ok);
Result := False //запрет перехода на след страницу
else Result := True; //разрешаем переход на след страницу
end;
end;


Вот надо под тип такого:
Автор: GloThin
Дата сообщения: 31.03.2007 12:14
Chuvakstepan
12:13 31-03-2007
Цитата:
Привет всем!
Помогите, пожалуйста дописать код проверки пути установки файлов на наличие в пути русских символов
Вот надо под тип такого:

Попробуй вот это:

Код:
function NextButtonClick(CurPageID: Integer): Boolean;
var
i,j: integer;
s,c: string;
begin
Result := True;
if CurPageID = wpSelectDir then
begin
c := 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя';
for i:=1 to length(WizardForm.DirEdit.text) do
for j:=1 to length(c) do
begin
if WizardForm.DirEdit.text[i] = c[j] then //{app} содержит русские символы
begin
s := 'В пути установки присутствуют русские буквы, что недопустимо'#13#13'Пожалуйста, повторите ввод.';
MsgBox(s, mbError, mb_Ok);
Result := False ;//запрет перехода на след страницу
exit;
end
else Result := True; //разрешаем переход на след страницу
end;
end;
end;
Автор: Kindly
Дата сообщения: 31.03.2007 12:20
boss911
Есть программы, которые используют активацию не только по обычному алгоритму, но и по данным Hardware ID, т.е. по железу. Поэтому на другой машине программа не будет полноценно работать. Тут два варианта: или включай в сборку активатор, или ищи отломанный экзешник.
Автор: Sero
Дата сообщения: 31.03.2007 12:56
NightW0lf
Проверь личку!
Автор: NightW0lf
Дата сообщения: 31.03.2007 13:27
Sampron
Спасибо за код - работатет!

А вот у меня еще один вопрос:
Как это сделать?

Как надо
Как получается

[more=код]

Код:
[Setup]
WizardSmallImageFile=C:\WizardSmallImage.bmp

[Code]
//при запуске инсталлятора выполняем вот этот код:
procedure InitializeWizard();
begin
with WizardForm do begin
with MainPanel do
Height := Height - 0;
with WizardSmallBitmapImage do begin
Left := 347; //значение 0 - слева, 347 - справа
Top := 0;
Height := 58; //Размер рисунка
Width := 150; //
end;
with PageNameLabel do begin
Width := Width - 0; //Поставьте здесь значения на 0 если хотите вернуть текст
Left := Left + 0; //
end;
with PageDescriptionLabel do begin
Width := Width - 0; //Поставьте здесь значения на 0 если хотите вернуть текст
Left := Left + 0; //
end;
end;
end
end;
Автор: Sampron
Дата сообщения: 31.03.2007 14:07
NightW0lf
Так будет проще:

[Setup]
WizardSmallImageFile=C:\WizardSmallBitmapImage.bmp

[Code]
procedure InitializeWizard();
begin
WizardForm.WizardSmallBitmapImage.Top:=0
WizardForm.WizardSmallBitmapImage.Left:=347
WizardForm.WizardSmallBitmapImage.Width:=150
WizardForm.WizardSmallBitmapImage.Height:=58
WizardForm.PageNameLabel.Width:=300
WizardForm.PageDescriptionLabel.Width:=300
end;

Автор: NightW0lf
Дата сообщения: 31.03.2007 16:09
Sampron
Еще раз спасибо!
Автор: Kindly
Дата сообщения: 31.03.2007 17:50
Если еще кому надо, нашел прогу, которая создает файлы-пустышки вместе с директориями с сохранением оригинального расположения. Кто в танке, объясняю, если игровые архивы сжаты внешним компрессором, например, 7z, то Inno не будет знать какие файлы были включены в сборку и при удалении не удалит их. С помощью этой проги можно создать файлы-пустышки и включить их в инсталлятор. Эти файлы потом перезапишутся файлами из архива, и Inno уже будет знать, какие файлы были включены и удалит их после деинсталляции. Но прога оказалась с функциональными ограничениями, нельзя создавать пустышки из директории больше 4 метров, но я исправил это недоразумение и выложил комплект: прога + патч. Лучше всего использовать в качестве папки вывода уже существущшую директорию. Кому надо забирайте:
http://rl-team.ru/1536240
или
http://rapidshare.com/files/23671193/fake.twin.2.0.incl.patch.zip.html

Официальный сайт программы:
http://hangvogel.fly.to/

Автор: boss911
Дата сообщения: 01.04.2007 00:17
Dima555555

Цитата:
хех я сделал чтоб после усановки сам по себе патч запустился ник вбиваешь жмёшь крек ит и всё...

Kindly

Цитата:
Тут два варианта: или включай в сборку активатор, или ищи отломанный экзешник.

Ребята, я так именно и поступаю, о чем раньше и хотел сказать!

Но, есть такие программы, например, BSPlayer серийник к которому, раньше сгенерированный, уже не подойдет на новой (переустановленной) системе! Вот и приходится: запускать кейген, копировать сериал, запускать прогу и вводить серийник, потом программа сама создает ключ, короче неудобности одни! Вот если бы кейген сам создавал ключ (*.key) , а самое лучшие, это заменить на правильный (патченный) екзешник!

Сори, оффтоп!
Автор: NightW0lf
Дата сообщения: 01.04.2007 20:20
Не подскажите как сделать так чтобы при запуске инсталлятора происходила проверка на наличие Microsoft .NET Framework 2.0 в системе, если он не найден то тогда появляется сообщение о том что "На Вашем компьютере не установлен Microsoft .NET Framework 2.0.'#13#13'Установить Microsoft .NET Framework 2.0? [Да\Нет]" - если "да" тогда запускается установка Microsoft .NET Framework 2.0 расположенного рядом с инсталлятором, если - "нет" то тогда установка прекращается.

Заранее благодарю за помощь!
Автор: boss911
Дата сообщения: 02.04.2007 00:29
NightW0lf

Цитата:
чтобы при запуске инсталлятора происходила проверка на наличие Microsoft .NET Framework 2.0 в системе


Цитата:
Как определить, какие версии .NET Framework установлены в системе и установлены ли пакеты обновлений

Не совсем помощь, но в тему!
Автор: xternalx
Дата сообщения: 02.04.2007 13:22
товарищи, скажите плиз, когда создаю проект, указываю директиву DefaultDirName=C:\Games\someGame если пользователь изменяет дефолтный путь установки, то к нему автоматически приписывается имя последней папки, т.е. если я выберу путь D:\Shared\Games, то в конец этого пути допишется папка someGame и получается D:\Shared\Games\someGame
как избавиться от автоматической приписки последней директории?
Автор: NightW0lf
Дата сообщения: 02.04.2007 13:51
xternalx

Цитата:
как избавиться от автоматической приписки последней директории?


Код:
[Setup]
AppendDefaultDirName=false
Автор: xternalx
Дата сообщения: 02.04.2007 14:16
NightWolf, респект
Автор: KeyGen
Дата сообщения: 03.04.2007 01:34
NightW0lf

Цитата:
...так чтобы при запуске инсталлятора происходила проверка на наличие Microsoft .NET Framework 2.0 в системе



Тут при распаковке одной программы обнаружил такой [more=скриптик]
#ifdef UNINSTALLQUEST
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
ErrorCode: Integer;
begin
case CurUninstallStep of
usPostUninstall:
begin
ShellExec('open', 'http://www.lingobit.com/uninstallfeedback.htm', '', '', SW_SHOW, ewNoWait, ErrorCode);
end;
end;
end;
#endif

var
Page: TWizardPage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
FileList: TListBox;
Directory: TEdit;
Browse: TButton;

procedure AdditionalFiles_Activate(Page: TWizardPage);
begin

end;

function AdditionalFiles_ShouldSkipPage(Page: TWizardPage): Boolean;
begin
Result := False;
end;

function AdditionalFiles_BackButtonClick(Page: TWizardPage): Boolean;
begin
Result := True;
end;

function AdditionalFiles_NextButtonClick(Page: TWizardPage): Boolean;
begin
Result := True;
end;

procedure AdditionalFiles_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
begin
end;

procedure Browse_OnClick(Sender: TObject);
var
sDir: String;
begin
sDir := Directory.Text;
if BrowseForFolder('Select a folder in the list below, then click OK.', sDir, true) then Directory.Text := sDir;
end;

function AdditionalFiles_CreatePage(PreviousPageId: Integer): Integer;
begin
Page := CreateCustomPage(
PreviousPageId,
ExpandConstant('{cm:AdditionalFilesCaption}'),
ExpandConstant('{cm:AdditionalFilesDescription}')
);

{ Label1 }
Label1 := TLabel.Create(Page);
with Label1 do
begin
Parent := Page.Surface;
Left := ScaleX(0);
Top := ScaleY(160);
Width := ScaleX(266);
Height := ScaleY(13);
Caption := 'Setup will install additional files into the following folder.';
end;

{ Label2 }
Label2 := TLabel.Create(Page);
with Label2 do
begin
Parent := Page.Surface;
Left := ScaleX(0);
Top := ScaleY(176);
Width := ScaleX(390);
Height := ScaleY(13);
Caption := 'To continue, click Next. If you would like to select a different folder, click Browse.';
end;

{ Label3 }
Label3 := TLabel.Create(Page);
with Label3 do
begin
Parent := Page.Surface;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(320);
Height := ScaleY(13);
Caption := 'Following additional files are attached to this installation package. ';
end;

{ FileList }
FileList := TListBox.Create(Page);
with FileList do
begin
Parent := Page.Surface;
Left := ScaleX(0);
Top := ScaleY(24);
Width := ScaleX(409);
Height := ScaleY(121);
TabOrder := 0;

#ifdef PROJECTFILE
Items.Add(ExtractFileName('{#PROJECTFILE}'));
#endif

#ifdef FILE1
Items.Add(ExtractFileName('{#FILE1}'));
#endif

#ifdef FILE2
Items.Add(ExtractFileName('{#FILE2}'));
#endif

#ifdef FILE3
Items.Add(ExtractFileName('{#FILE3}'));
#endif

#ifdef FILE4
Items.Add(ExtractFileName('{#FILE4}'));
#endif

#ifdef FILE5
Items.Add(ExtractFileName('{#FILE5}'));
#endif

end;

{ Directory }
Directory := TEdit.Create(Page);
with Directory do
begin
Parent := Page.Surface;
Left := ScaleX(0);
Top := ScaleY(200);
Width := ScaleX(329);
Height := ScaleY(21);
TabOrder := 1;
Text := ExpandConstant('{userdocs}\Lingobit Localizer');
end;

{ Browse }
Browse := TButton.Create(Page);
with Browse do
begin
Parent := Page.Surface;
Left := ScaleX(336);
Top := ScaleY(200);
Width := ScaleX(73);
Height := ScaleY(21);
Caption := 'Browse...';
TabOrder := 2;
OnClick:= @Browse_OnClick;
end;


with Page do
begin
OnActivate := @AdditionalFiles_Activate;
OnShouldSkipPage := @AdditionalFiles_ShouldSkipPage;
OnBackButtonClick := @AdditionalFiles_BackButtonClick;
OnNextButtonClick := @AdditionalFiles_NextButtonClick;
OnCancelButtonClick := @AdditionalFiles_CancelButtonClick;
end;

Result := Page.ID;
end;

procedure InitializeWizard();
begin
#ifdef PROJECTFILE
AdditionalFiles_CreatePage(wpSelectDir);
#endif
end;

function GetAdditionalDir(t: String):String;
begin
Result:=Directory.Text;
end;

function GetProjectTgtDir(t: String):String;
begin
#ifdef PROJECTFILE
Result:=AddBackslash(GetAdditionalDir(''))+ExtractFileName('{#PROJECTFILE}');
#endif
end;

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: String;
begin
S := '';
S := S + MemoDirInfo + NewLine + NewLine;

#ifdef PROJECTFILE
S := S + 'Additional Files Directory:' + NewLine;
S := S + Space + Directory.Text + NewLine + NewLine;
#endif

// S := S + MemoTypeInfo + NewLine + NewLine;
// S := S + MemoComponentsInfo + NewLine + NewLine;
S := S + MemoGroupInfo + NewLine + NewLine;
S := S + MemoTasksInfo;

Result:=S;
end;

function ShouldSkipPage(CurPage: Integer): Boolean;
begin
if Pos('/SP-', UpperCase(GetCmdTail)) > 0 then
case CurPage of
wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo,
wpSelectDir, wpSelectProgramGroup, wpInfoAfter:
Result := True;
end;
end;

function IsDotNET11Detected(): boolean;
var
NetSuccess: boolean;
NetInstall: cardinal;
begin
NetSuccess := RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322', 'Install', NetInstall);
Result := NetSuccess and (NetInstall = 1);
end;

procedure DeinitializeSetup();
var
issiNetDetect: boolean;
begin
if not IsDotNET11Detected then begin
MsgBox(ExpandConstant('{cm:IssiRequiresNet}'), mbInformation, MB_OK);
issiNetDetect := false;
end else begin
issiNetDetect := true;
end;

RegWriteStringValue(HKEY_CURRENT_USER, 'Software\Lingobit\Lingobit Localizer','GUILanguage', ExpandConstant('{language}'));

#ifdef REGKEYPATH
if RegValueExists(HKEY_CURRENT_USER, '{#REGKEYPATH}', 'Key') then
begin
if MsgBox('Lingobit Localizer is already registered on this computer. Update registration information?', mbConfirmation, MB_YESNO) = IDYES then
begin
RegWriteStringValue(HKEY_CURRENT_USER, '{#REGKEYPATH}', 'Key', '{#REGKEYVALUE}');
end;
end;
if not RegValueExists(HKEY_CURRENT_USER, '{#REGKEYPATH}', 'Key') then
RegWriteStringValue(HKEY_CURRENT_USER, '{#REGKEYPATH}', 'Key', '{#REGKEYVALUE}');



#endif


end;

function InitializeSetup(): Boolean;
var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);

if Version.Major < 5 then
begin
SuppressibleMsgBox('Microsoft Windows 2000, Microsoft Windows XP or higher is required.',
mbCriticalError, MB_OK, MB_OK);
Result := False;
Exit;
end;
Result := True;
end;
[/more]

Там правда описывается для версии 1.1, но кое что почерпнуть можно.


Программа Inno Script Generator обновилась до версии 1.0.2.5 (02. April 2007)

Если вдруг кому то захочется перевести эту программу, то:
1. Качаем DKLang Localization Package (Прога бесплатная) _http://www.dk-soft.org/download.php?lang=ru&cat_id=4
2. В папке с Inno Script Generator находится файл InnoScriptGenerator.dklang (Его используем в качестве исходного языкового файла)
3. Дальше либо создаём новый файл перевода, либо берём мой _http://filepost.ru/?act=files&id=3340218 или _http://keygen.ifolder.ru/1559987 (перевёл немного для проверки софтины).
Автор: maxdddca123
Дата сообщения: 03.04.2007 06:18
Всем привет, такой вопрос. Мне после установки надо, что бы выполнялась команда copy /b key.pub DBKeys.pub Как это лучше реализовать ?
Автор: Genri
Дата сообщения: 03.04.2007 10:29
NightW0lf
Цитата:
при запуске инсталлятора происходила проверка на наличие Microsoft .NET Framework


http://forum.ru-board.com/topic.cgi?forum=5&topic=4801&start=1360#7
Автор: kxox
Дата сообщения: 03.04.2007 13:26
Приветы.
Как проверить свободное место на диске с помощью IS?
Т.е. как сделать чтобы в форме где происходит выбор директории для установки, а также показывается количество необходимого места, также отображалось количество свободного места на диске, на который предполагается установка, и как запретить установку (По нажатию Далее мсгбокс с фразой "Не хватает места", и возврат на форму) в этом случае?
Автор: Genri
Дата сообщения: 03.04.2007 16:12
kxox

Цитата:
Как проверить свободное место на диске

В хелпе смотри описание функции GetSpaceOnDisk
Автор: NightW0lf
Дата сообщения: 03.04.2007 19:11
Genri
Спасибо за подсказку с Microsoft .NET Framework - разобрался!
[more=Вот код]

Код:
[Code]
function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
NetFrameWorkInstalled: Boolean;
Result1: Boolean;
begin
NetFrameWorkInstalled := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy\v2.02');
if NetFrameWorkInstalled = true then
begin
Result := true;
end;

if NetFrameWorkInstalled = false then
begin
Result1 := MsgBox('На Вашем компьютере не установлен Microsoft .NET Framework 2.0,' #13 'для продолжения установки необходима его установить.' #13#13 'Установить Microsoft .NET Framework 2.0?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 = false then
begin
Result := false;
end
else
begin
Result := false;
ShellExec('open', ExpandConstant('{src}\Redist\setup-ms.net.framework.2.0.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode);
end;
end;
end;
Автор: Genri
Дата сообщения: 03.04.2007 21:15
kxox
NightW0lf

Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

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

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

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

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

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

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

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

function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < NeedSize then
begin
MsgBox('Недостаточно места на диске!', mbInformation, MB_OK)
Result:= False;
end;
end;
end;
Автор: maxdddca123
Дата сообщения: 03.04.2007 21:40
Genri
А как мне сделат произвольную страницу после установки, что бы на ней отображалась только bmp картинка ?
Автор: NightW0lf
Дата сообщения: 03.04.2007 21:48
Genri
Спасибо!
Но еще один вопрос на эту же тему:
Можно ли сделать точно так же как у S.T.A.L.K.E.R. и чтобы при нажатии [из этого списка дисков] на один из локальных дисковего его буква прописывалась в путь установки? Т.е. например путь установки по умолчанию "C:\Program Files\My game", а при выборе например локального диска "E:" [из этого списка локальных дисков] путь становился таким "E:\Program Files\My game".

Буду очень признателен запомощь!
Автор: Sampron
Дата сообщения: 03.04.2007 23:48
maxdddca123
[Code]
var
Page: TWizardPage;
BitmapImage: TBitmapImage;

procedure InitializeWizard();
begin
ExtractTemporaryFile('Image.bmp')
Page:=CreateCustomPage(wpInstalling, 'Картинка', 'Тут что-то еще написать можно!')
BitmapImage:=TBitmapImage.Create(Page)
with BitmapImage do begin
Left:=0
Top:=0
Width:=417
Height:=237
Parent:=Page.Surface
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Image.bmp')
end
end;

Добавлено:
[Files]
Source: C:\Image.bmp; DestDir: {tmp}; Flags: dontcopy

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


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