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

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

Автор: Serega0675
Дата сообщения: 13.01.2009 17:03
Я уже как-то спрашивал, но немного по другому... Как в этом [more=скрипте][Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

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

[Components]
Name: main; Description: Моя программа™; Check: IsComponent1; Types: full custom; Flags: fixed
Name: help; Description: Помощь; Types: full custom
Name: help\documentation; Description: Документация; Check: IsComponent2; Types: full custom
Name: help\manual; Description: Руководство пользователя; Check: IsComponent3; Types: full custom

[Files]
Source: {src}\main\proga.exe; DestDir: {app}; Components: main; Flags: ignoreversion external
Source: {src}\main\documentation.txt; DestDir: {app}; Components: help\documentation; Flags: ignoreversion external
Source: {src}\main\manual.txt; DestDir: {app}; Components: help\manual; Flags: ignoreversion external

[Code]
function IsComponent1:boolean;
begin
Result:=True;
begin
If (FileSearch('proga.exe', ExpandConstant('{src}\main'))='') then
Result:=False
end;
end;

function IsComponent2:boolean;
begin
Result:=True;
begin
If (FileSearch('documentation.txt', ExpandConstant('{src}\main'))='') then
Result:=False
end;
end;

function IsComponent3:boolean;
begin
Result:=True;
begin
If (FileSearch('manual.txt', ExpandConstant('{src}\main'))='') then
Result:=False
end;
end;
[/more], сделать, когда происходит проверка на присутствие внешнего компонента, то он не пропадал в списке компонентов, а был не активен, т.е. выбрать его нельзя.

Всех со старым НОВЫМ ГОДОМ!!!
Автор: VinogradOFF
Дата сообщения: 13.01.2009 20:20
День добрый сетаповцы)
У меня к вам просьба) помогите со следующей проблемкой
Создаю обыкновенный пустой iss который заливает exe файл один и отключаю требования админ прав след. образом :
PrivilegesRequired=none
однако в Висте при запуске дабл кликом этой сетапки - UAC запрашивает Allow Cancel.
Возможен ли запуск, при котором UAC не будет задавать этого вопроса?
Автор: Sig666
Дата сообщения: 14.01.2009 14:21
Как при выборе, допустим, русского языка в начале установки установить флажок на задаче rus, с задачи eng его снять. При выборе же английского наоборот - с rus снять, а на eng установить. Надеюсь ясно выразился Заранее спс.
Автор: chelobey
Дата сообщения: 14.01.2009 14:44
Sig666,

Цитата:
Как при выборе, допустим, русского языка в начале установки установить флажок на задаче rus, с задачи eng его снять
, вот [more=код...]

[Setup]
AppName=MyProg
AppVerName=MyProg 1.0
DefaultDirName={pf}\MyProg
DefaultGroupName=MyProg
AllowNoIcons=yes
OutputBaseFilename=MyProg
ShowLanguageDialog=True

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

[Files]
Source: compiler:license.txt; DestDir: {app}; DestName: MyProg.exe; Check: english
Source: compiler:license.txt; DestDir: {app}; DestName: MyProg.exe; Check: russian

[Icons]
Name: {group}\MyProg; Filename: {app}\MyProg.exe; WorkingDir: {app}
Name: {group}\Uninstall MyProg; Filename: {uninstallexe}; WorkingDir: {app}

[Code]
var
RadioButton1, RadioButton2: TNewRadioButton;

function russian: Boolean;
begin
Result := RadioButton1.Checked;
end;

function english: Boolean;
begin
Result := RadioButton2.Checked;
end;

procedure InitializeWizard();
var
MsgStr: TNewStaticText;
begin
MsgStr := TNewStaticText.Create(WizardForm);
with MsgStr do
begin
Top := ScaleY(130);
Left := ScaleX(3);
Width := ScaleX(400);
AutoSize := False;
Caption := 'Выбирете, какой язык установить для MyProg:';
Parent := WizardForm.SelectDirPage;
end;

RadioButton1 := TNewRadioButton.Create(WizardForm);
with RadioButton1 do
begin
Top := ScaleY(150);
Left := ScaleX(10);
Width := ScaleX(300);
Caption := 'Русский';
Parent := WizardForm.SelectDirPage;
end;

RadioButton2 := TNewRadioButton.Create(WizardForm);
with RadioButton2 do
begin
Top := ScaleY(170);
Left := ScaleX(10);
Width := ScaleX(300);
Caption := 'Английский';
Parent := WizardForm.SelectDirPage;
end;

if ActiveLanguage = 'russian' then
begin
RadioButton1.Checked := True;
end else
begin
RadioButton2.Checked := True;
end;
end;

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

S := S + 'Выбирете, какой язык установить для MyProg:' + NewLine;
if RadioButton1.Checked then
begin
S := S + Space + 'Русский' + NewLine + NewLine;
end else
begin
S := S + Space + 'Английский' + NewLine + NewLine;
end;

if (WizardForm.NoIconsCheck.Checked) = False then
begin
S := S + MemoGroupInfo + NewLine + NewLine;
end;

Result := S;
end;
[/more], взятый из примеров.
Автор: Sig666
Дата сообщения: 14.01.2009 17:35
ой сорри, я болван
Вопрос снимается
Автор: Diawer
Дата сообщения: 14.01.2009 18:36
Люди, ну подскажите же, как сделать чтобы имена НЕ ВЛЕЗШИХ в окно файлов – ПЕРЕНОСИЛИСЬ, прокрутка есть, сталось дело тока за переносом.
[more=DelSaveFilesRO_Memo.iss][Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
DirExistsWarning=no

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

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; DestName: MyProg MyProg MyProg MyProg MyProg MyProg MyProg MyProg MyProg MyProg MyProg.exe; Flags: uninsneveruninstall
Source: compiler:Examples\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs uninsneveruninstall

[Icons]
Name: {commonprograms}\Удалить для проверки; Filename: {uninstallexe}; WorkingDir: {app}

[_Code]
var
Form: TSetupForm;
ListBox: TListBox;
CancelButton, DelButton: TButton;
UpImage, DownImage: TBitmapImage;
UpPanel, DownPanel: TPanel;
NameLabel, DescriptionLabel, BeforeListBoxLabel: TLabel;
DownTextLabel: TLabel;

procedure FillListBox(const fromDir, fileMask: string; Level: Byte);
var
FSR, DSR: TFindRec;
FindResult: Boolean;
APath: String;
MainLen: Integer;
i: Integer;
begin
MainLen:= Length(ExpandConstant('{app}'));
APath := AddBackslash(fromDir);
FindResult := FindFirst(APath + fileMask, FSR);
try
while FindResult do
begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
{files} i:= ListBox.Items.Add(Copy(APath + FSR.Name, MainLen+2, Length(APath + FSR.Name)));
end;
FindResult := FindNext(FSR);
end;
FindResult := FindFirst(APath + '*.*', DSR);
while FindResult do
begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then
begin
{Recursion} FillListBox(APath + DSR.Name, fileMask, Level+1);
end;
FindResult := FindNext(DSR);
end;
finally
FindClose(FSR);
FindClose(DSR);
end;
end;

procedure DeleteFiles();
begin
DelTree(ExpandConstant('{app}'), True, True, True);
end;

procedure BrowseRemainedFiles();
begin
Form := CreateCustomForm;
Form.ClientWidth := ScaleX(504);
Form.ClientHeight := ScaleY(358);
Form.Caption := 'Paradise - InstallShield Wizard';
Form.Center;

UpImage := TBitmapImage.Create(Form);
UpImage.Top := ScaleY(0);
UpImage.Left := ScaleX(0);
UpImage.Width := Form.ClientWidth;
UpImage.Height := ScaleY(59);
UpImage.BackColor := clWhite;
UpImage.Parent := Form;

DownImage := TBitmapImage.Create(Form);
DownImage.Top := ScaleY(61);
DownImage.Left := ScaleX(0);
DownImage.Width := Form.ClientWidth;
DownImage.Height := Form.ClientHeight - DownImage.Top;
DownImage.BackColor := $EEE9EB;
DownImage.Parent := Form;

UpPanel := TPanel.Create(Form);
UpPanel.Top := ScaleY(59);
UpPanel.Width := Form.ClientWidth;
UpPanel.Height := ScaleY(2);
UpPanel.BevelOuter := bvLowered;
UpPanel.Parent := Form;

NameLabel := TLabel.Create(Form);
NameLabel.Top := ScaleY(5);
NameLabel.Left := ScaleX(16);
NameLabel.Font.Style := [fsBold];
NameLabel.Caption := 'Внимание!';
NameLabel.Color := clWhite;
NameLabel.Parent := Form;

DescriptionLabel := TLabel.Create(Form);
DescriptionLabel.Top := ScaleY(24);
DescriptionLabel.Left := ScaleX(25);
DescriptionLabel.Caption := 'Папка установки содержит посторонние файлы. Удалить их?';
DescriptionLabel.Color := clWhite;
DescriptionLabel.Parent := Form;

BeforeListBoxLabel := TLabel.Create(Form);
BeforeListBoxLabel.Top := ScaleY(68);
BeforeListBoxLabel.Left := ScaleX(25);
BeforeListBoxLabel.Caption := 'Если Вы уверены, что хотите удалить папку установки со всеми указанными файлами,'#13
'нажмите Да.'
BeforeListBoxLabel.Color := $EEE9EB;
BeforeListBoxLabel.Parent := Form;

DownPanel := TPanel.Create(Form);
DownPanel.Left := ScaleX(65);
DownPanel.Top := ScaleY(308);
DownPanel.Width := ScaleX(435);
DownPanel.Height := ScaleY(2);
DownPanel.BevelOuter := bvLowered;
DownPanel.Parent := Form;

DownTextLabel := TLabel.Create(Form);
DownTextLabel.Top := ScaleY(302);
DownTextLabel.Caption := ' InstallShield';
DownTextLabel.Font.Color := $99A8AC;
DownTextLabel.Color := $EEE9EB;
DownTextLabel.Parent := Form;

ListBox := TListBox.Create(Form);
ListBox.Left:= ScaleX(25);
ListBox.Top:= ScaleY(108);
ListBox.Width:= Form.ClientWidth - ScaleX(50);
ListBox.Height:= ScaleY(180);
ListBox.Color := $EEE9EB;
ListBox.Parent:= Form;

CancelButton := TButton.Create(Form);
CancelButton.Parent := Form;
CancelButton.Width := ScaleX(75);
CancelButton.Height := ScaleY(23);
CancelButton.Left := Form.ClientWidth - CancelButton.Width - ScaleX(20);
CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
CancelButton.Caption := 'Нет';
CancelButton.ModalResult := mrCancel;
CancelButton.Cancel := True;

DelButton := TButton.Create(Form);
DelButton.Parent := Form;
DelButton.Width := ScaleX(75);
DelButton.Height := ScaleY(23);
DelButton.Left := CancelButton.Left - DelButton.Width - ScaleX(10);
DelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
DelButton.Caption := 'Да';
DelButton.ModalResult := mrOk;

Form.ActiveControl := CancelButton;

FillListBox(ExpandConstant('{app}'), '*', 1);

if Form.ShowModal() = mrOk then DeleteFiles();
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if DirExists(ExpandConstant('{app}')) and (CurUninstallStep = usPostUninstall) then
BrowseRemainedFiles();
end;[/more]
Автор: Artem_Butenko
Дата сообщения: 15.01.2009 02:27
Друзья, пожалуйста, поясните, можно ли в фоне отрисовывать одновременно изображение *.bmp и, поверх него, анимированный *.gif с прозрачным фоном. Как эффективнее это реализовать? Буду очень благодарен за ценные советы!
Автор: stNeko
Дата сообщения: 15.01.2009 04:15

Цитата:
Люди, ну подскажите же, как сделать чтобы имена НЕ ВЛЕЗШИХ в окно файлов – ПЕРЕНОСИЛИСЬ, прокрутка есть, сталось дело тока за переносом.


В примерах нашёл, жожет поможет...

[more]Как перенести неумещающийся текст на следующую строку? [Setup]
AppName=AppName
AppVerName=AppVerName
DefaultDirName={pf}\AppName

[Code]
var
Panel: TPanel;
Text: TNewStaticText;

procedure InitializeWizard();
begin
Panel:=TPanel.Create(WizardForm)
Panel.Left:=3
Panel.Top:=315
Panel.Width:=245
Panel.Height:=44
Panel.BevelInner:=bvLowered
Panel.Color:=12639424
Panel.Parent:=WizardForm

Text:=TNewStaticText.Create(WizardForm)
Text.Left:=2
Text.Top:=2
Text.Width:=242
Text.Height:=38
Text.AutoSize:=False
Text.WordWrap:=True
Text.Caption:='действительно на панели не переносится но как вариант можно сделать так'
Text.Parent:=Panel
end; [/more]
Автор: ExpeditorR
Дата сообщения: 15.01.2009 07:25
Diawer
В listbox нельзя сделать перенос невместившегося текста.
Artem_Butenko
Могу такое сделать через dll, причём можно даже swf и flv на фон поставить. Правда dll будет около 200кб., но зато будет работать в люьой версии винды.
Автор: Diawer
Дата сообщения: 15.01.2009 08:05
stNeko
Спасибо, но перенос TNewStaticText не проблема.

ExpeditorR
Жаль.
У меня еще вопрос, в ListBox прокрутка по вертикали появляется по необходимости, и по скольку перенос сделать нереально, то может можно сделать прокрутку по горизонтали.
Автор: ExpeditorR
Дата сообщения: 15.01.2009 09:39
Diawer

Цитата:
У меня еще вопрос, в ListBox прокрутка по вертикали появляется по необходимости, и по скольку перенос сделать нереально, то может можно сделать прокрутку по горизонтали.

Можно вот так: SendMessage(LIstBox.Handle, $0194, 1000, 0);
Но вот только горизонт. scroll будет появлятся всегда, ибо нужно делать проверку длинны каждой строки и если хоть одна строка длиннее положенного то показывать scroll способом описанным выше, кстати 1000 это ширина прокрутки т.е. чем длинне строка тем больше ставь значение.

Автор: stNeko
Дата сообщения: 15.01.2009 11:26
Проблема со сравнением файлов. Надо, чтобы во время инсталляции определась версия одного из файлов, затем при деинсталляции снова определялась версия этого файла и происходило сравнение, изменилась ли версия файла с момента инсталляции. По результатам сравнения выдавалось бы соответствующее результату сообщение.

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

[more]procedure CurPageChanged(CurPageID: Integer);
var
fileversion1, fileversion2: string;
begin
if CurPageID=wpInstalling
then
GetVersionNumbersString(ExpandConstant('{app}') + '\file.exe', fileversion1)
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
fileversion1, fileversion2: string;
begin
if CurUninstallStep = usUninstall then
then
GetVersionNumbersString(ExpandConstant('{app}') + '\file.exe', fileversion2) then
if fileversion2 = fileversion1 then
begin
MsgBox('Версии файлов идентичны...', MbInformation, Mb_Ok);
end;[/more]

Видимо как-то надо записать результат от GetVersionNumbersString(ExpandConstant('{app}') + '\file.exe', fileversion1), чтобы потом правильно подхватить его при деинсталляции... Не могу догадаться =\
Автор: EagleSH
Дата сообщения: 15.01.2009 11:31
ExpeditorR
а вот мне пофиг на объём, сделай плиз анимацию (swf, flv) - мож ещё какието форматы.
Автор: Artem_Butenko
Дата сообщения: 15.01.2009 14:54
ExpeditorR -- было бы неплохо реализовать подобную библиотеку, если у Вас, конечно, есть свободное время и желание.
Автор: stNeko
Дата сообщения: 15.01.2009 15:36
Снимаю свой предыдущий вопрос про сравнение файлов..
Нашёл удовлетворяющее меня решение через функции SaveStringToFile и LoadStringFromFile.

В первом случае выдернул версию файла и свёл её в строку текстового файла, который был создан в указанной мною папке при инсталляции. При деинсталляции я выдернул эти данные и использовал для сравнения с текущей версией файла.
Автор: Geneziz
Дата сообщения: 15.01.2009 17:40
у кого-нибудь есть ISSkin? с оф.сайта не качается...
Автор: Diawer
Дата сообщения: 15.01.2009 20:00
ExpeditorR
Да, визуально смотрится хорошо, но по функционалу коряво

Цитата:
кстати 1000 это ширина прокрутки, т.е. чем длиннее строка, тем больше ставь значение.

надо что бы это число отслеживалось и выставлялось автоматом.
Я понимаю, что писать код - дело утомительное, но может это где-то использовалось, если знаешь где искать, подскажи.
Автор: VinogradOFF
Дата сообщения: 15.01.2009 21:17
Ребятки помогите плз))) прошу в очередной раз ))

проблемка такая :
Создаю обыкновенный пустой iss который заливает exe файл один и отключаю требования админ прав след. образом :
PrivilegesRequired=none
однако в Висте при запуске дабл кликом этой сетапки - UAC запрашивает Allow Cancel.
Возможен ли запуск, при котором UAC не будет задавать этого вопроса?
Автор: ExpeditorR
Дата сообщения: 16.01.2009 08:20
Artem_Butenko
Хорошо, как появится время сделаю.
Diawer
Вот накидал на скорую руку, пробуй [more][Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
DirExistsWarning=no

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

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; DestName: MyProg MyProg MyProg MyProg MyProg MyProg MyProg MyProg MyProg MyProg MyProg.exe; Flags: uninsneveruninstall
Source: compiler:Examples\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs uninsneveruninstall

[Icons]
Name: {commonprograms}\Óäàëèòü äëÿ ïðîâåðêè; Filename: {uninstallexe}; WorkingDir: {app}

[Code]
var
Form: TSetupForm;
ListBox: TListBox;
CancelButton, DelButton: TButton;
UpImage, DownImage: TBitmapImage;
UpPanel, DownPanel: TPanel;
NameLabel, DescriptionLabel, BeforeListBoxLabel: TLabel;
DownTextLabel: TLabel;

procedure FillListBox(const fromDir, fileMask: string; Level: Byte);
var
FSR, DSR: TFindRec;
FindResult: Boolean;
APath: String;
MainLen: Integer;
i,w,maxwidth: Integer;
begin
MainLen:= Length(ExpandConstant('{app}'));
APath := AddBackslash(fromDir);
FindResult := FindFirst(APath + fileMask, FSR);
try
while FindResult do
begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
{files} i:= ListBox.Items.Add(Copy(APath + FSR.Name, MainLen+2, Length(APath + FSR.Name)));
end;
FindResult := FindNext(FSR);
end;
FindResult := FindFirst(APath + '*.*', DSR);
while FindResult do
begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then
begin
{Recursion} FillListBox(APath + DSR.Name, fileMask, Level+1);
end;
FindResult := FindNext(DSR);
end;
finally
FindClose(FSR);
FindClose(DSR);
end;
maxwidth:=0;
for w:=0 to listbox.items.count-1 do
begin
if (length(listbox.items.strings[w])>73) and (length(listbox.items.strings[w])>maxwidth) then maxwidth:=length(listbox.items.strings[w]);
end;
if maxwidth>73 then SendMessage(LIstBox.Handle, $0194, maxwidth*6, 0);
end;

procedure DeleteFiles();
begin
DelTree(ExpandConstant('{app}'), True, True, True);
end;

procedure BrowseRemainedFiles();
begin
Form := CreateCustomForm;
Form.ClientWidth := ScaleX(504);
Form.ClientHeight := ScaleY(358);
Form.Caption := 'Paradise - InstallShield Wizard';
Form.Center;

UpImage := TBitmapImage.Create(Form);
UpImage.Top := ScaleY(0);
UpImage.Left := ScaleX(0);
UpImage.Width := Form.ClientWidth;
UpImage.Height := ScaleY(59);
UpImage.BackColor := clWhite;
UpImage.Parent := Form;

DownImage := TBitmapImage.Create(Form);
DownImage.Top := ScaleY(61);
DownImage.Left := ScaleX(0);
DownImage.Width := Form.ClientWidth;
DownImage.Height := Form.ClientHeight - DownImage.Top;
DownImage.BackColor := $EEE9EB;
DownImage.Parent := Form;

UpPanel := TPanel.Create(Form);
UpPanel.Top := ScaleY(59);
UpPanel.Width := Form.ClientWidth;
UpPanel.Height := ScaleY(2);
UpPanel.BevelOuter := bvLowered;
UpPanel.Parent := Form;

NameLabel := TLabel.Create(Form);
NameLabel.Top := ScaleY(5);
NameLabel.Left := ScaleX(16);
NameLabel.Font.Style := [fsBold];
NameLabel.Caption := 'Âíèìàíèå!';
NameLabel.Color := clWhite;
NameLabel.Parent := Form;

DescriptionLabel := TLabel.Create(Form);
DescriptionLabel.Top := ScaleY(24);
DescriptionLabel.Left := ScaleX(25);
DescriptionLabel.Caption := 'Ïàïêà óñòàíîâêè ñîäåðæèò ïîñòîðîííèå ôàéëû. Óäàëèòü èõ?';
DescriptionLabel.Color := clWhite;
DescriptionLabel.Parent := Form;

BeforeListBoxLabel := TLabel.Create(Form);
BeforeListBoxLabel.Top := ScaleY(68);
BeforeListBoxLabel.Left := ScaleX(25);
BeforeListBoxLabel.Caption := 'Åñëè Âû óâåðåíû, ÷òî õîòèòå óäàëèòü ïàïêó óñòàíîâêè ñî âñåìè óêàçàííûìè ôàéëàìè,'#13
'íàæìèòå Äà.'
BeforeListBoxLabel.Color := $EEE9EB;
BeforeListBoxLabel.Parent := Form;

DownPanel := TPanel.Create(Form);
DownPanel.Left := ScaleX(65);
DownPanel.Top := ScaleY(308);
DownPanel.Width := ScaleX(435);
DownPanel.Height := ScaleY(2);
DownPanel.BevelOuter := bvLowered;
DownPanel.Parent := Form;

DownTextLabel := TLabel.Create(Form);
DownTextLabel.Top := ScaleY(302);
DownTextLabel.Caption := ' InstallShield';
DownTextLabel.Font.Color := $99A8AC;
DownTextLabel.Color := $EEE9EB;
DownTextLabel.Parent := Form;

ListBox := TListBox.Create(Form);
ListBox.Left:= ScaleX(25);
ListBox.Top:= ScaleY(108);
ListBox.Width:= Form.ClientWidth - ScaleX(50);
ListBox.Height:= ScaleY(180);
ListBox.Color := $EEE9EB;
ListBox.Parent:= Form;

CancelButton := TButton.Create(Form);
CancelButton.Parent := Form;
CancelButton.Width := ScaleX(75);
CancelButton.Height := ScaleY(23);
CancelButton.Left := Form.ClientWidth - CancelButton.Width - ScaleX(20);
CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
CancelButton.Caption := 'Íåò';
CancelButton.ModalResult := mrCancel;
CancelButton.Cancel := True;

DelButton := TButton.Create(Form);
DelButton.Parent := Form;
DelButton.Width := ScaleX(75);
DelButton.Height := ScaleY(23);
DelButton.Left := CancelButton.Left - DelButton.Width - ScaleX(10);
DelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
DelButton.Caption := 'Äà';
DelButton.ModalResult := mrOk;

Form.ActiveControl := CancelButton;

FillListBox(ExpandConstant('{app}'), '*', 1);

if Form.ShowModal() = mrOk then DeleteFiles();
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if DirExists(ExpandConstant('{app}')) and (CurUninstallStep = usPostUninstall) then
BrowseRemainedFiles();
end;[/more]
Только сразу предупреждаю, если поменять шрифт, то и другие значения длинны строки подставлять в коде надо будет. Что-то другое придумывать весьма сложно, если вообще возможно.

Автор: Diawer
Дата сообщения: 16.01.2009 10:59
ExpeditorR

Цитата:
Вот накидал на скорую руку...Что-то другое придумывать весьма сложно, если вообще возможно.


Это именно то, что надо, большего и не требуется. Выглядит и работает отлично.
Реально-большое спасибо.
Автор: JuNoS
Дата сообщения: 17.01.2009 09:57
Можно-ли разбить инсталл на нужные размеры?
Например
Setup-1.bin - 20Mb
Setup-2.bin - 500Mb
Setup-3.bin - что осталось.
Автор: paul_smART
Дата сообщения: 17.01.2009 10:53
JuNoS

Код: ExtraDiskSpaceRequired=1
Автор: JuNoS
Дата сообщения: 17.01.2009 12:32
paul_smART

[more][Setup]
AppName=TEST
AppVerName=TEST
AppPublisher=TEST
DefaultDirName={pf}\TSTS\
DefaultGroupName=SSWEW\
OutputDir=.
Compression=none
ExtraDiskSpaceRequired=594288000
DiskSpanning=yes
DiskSliceSize=524288000

[Files]
Source: "Drivers.iso"; DestDir: "{app}\"; Flags: ignoreversion[/more]

Ни чего не происходит Не создается

Цитата:
Setup-1.bin - 20Mb

Автор: Unc1e
Дата сообщения: 17.01.2009 13:54
JuNoS

Код: DiskSpanning=yes
DiskSliceSize=524288000
ReserveBytes=503316480
Автор: JuNoS
Дата сообщения: 17.01.2009 14:26
Unc1e

Спасибо!
Автор: Artem_Butenko
Дата сообщения: 17.01.2009 16:02
Друзья, заранее извиняюсь за, м.б., глупый вопрос, но все же, каким образом в скрипте можно реализовать назначение каждому собираемому архиву "сложного" имени, например, Setup-1а.bin, Setup-2b.bin и т.д. Нечто подобное можно наблюдать в инсталляторах S.T.A.L.K.E.R. (1С) и Blazing Angels (Акелла). Заранее спасибо за пояснения.
Автор: JuNoS
Дата сообщения: 17.01.2009 16:07

Цитата:
Друзья, заранее извиняюсь за, м.б., глупый вопрос, но все же, каким образом в скрипте можно реализовать назначение каждому собираемому архиву "сложного" имени, например, Setup-1а.bin, Setup-2b.bin и т.д. Нечто подобное можно наблюдать в инсталляторах S.T.A.L.K.E.R. (1С) и Blazing Angels (Акелла). Заранее спасибо за пояснения.


[Setup]
SlicesPerDisk=2
Автор: Artem_Butenko
Дата сообщения: 17.01.2009 18:31
JuNoS -- спасибо, перечитаю хэлп.
Автор: clemenco
Дата сообщения: 17.01.2009 19:58
Подскажите пожалуйста.
Есть такая проблем, кнопка Далее активируется если лицензионное соглашение прокрутить до предпоследней строчки. Так вот, у некоторых кнопка не активируется даже если прокрутить до конца. С чем это связано, кто знает?

И как можно распаковать с innounp инсталлятор, сохранив структуру папок такой же как до компиляции? Очень нужно!!!
Автор: Serega0675
Дата сообщения: 17.01.2009 22:19
Здравствуйте, подскажите пожалуйста, как на форме [more=сообщения][Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program

[Code]
const
MB_ICONINFORMATION = $40;

function MessageBox(hWnd: Integer; lpText, lpCaption: string; uType: Cardinal): Integer;
external 'MessageBoxA@user32.dll stdcall';
function GetFileTime(hfile: longint; var lpcreation, lpaccess, lpwrite: TFileTime): boolean;
external 'GetFileTime@kernel32.dll stdcall';

procedure AboutButtonOnClick(Sender: TObject);
var
hWnd: Integer;
begin
hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
MessageBox(hWnd, '' #13 'My Program, версия 1.5' + #13#13 +
'Домашняя страница: http://........html' +#13#13 +
'Форум: http://........html' +#13#13 +
'Связаться с автором: My_Program@mail.ru', 'Информация', MB_OK or $40);
end;


procedure InitializeWizard();
var
AboutButton, CancelButton: TButton;
begin
CancelButton := WizardForm.CancelButton;

AboutButton := TButton.Create(WizardForm);
AboutButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
AboutButton.Top := CancelButton.Top;
AboutButton.Width := CancelButton.Width;
AboutButton.Height := CancelButton.Height;
AboutButton.Caption := 'Подробнее';
AboutButton.ShowHint := True
AboutButton.Hint := 'О программе'
AboutButton.OnClick := @AboutButtonOnClick;
AboutButton.Parent := WizardForm;
AboutButton.Cursor := crHand;
end;
[/more] сделать ссылки кликабельными?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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