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

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

Автор: maxdddca123
Дата сообщения: 27.05.2007 08:50
Genri
Да спасибо со сравнением всё нормально, а вот с цветами не подскажешь ? Вверху страницы описан вопрос.
Автор: NightW0lf
Дата сообщения: 27.05.2007 12:14
Всем привет!

*Вопрос 1й - остается актуальным*

Такой вопрос - возможноли сделать так т.е. чтобы картинка была во всех окнах [и на всех страницах кроме привествия и завершения] инсталлятора, а то просто у меня пример как сделать только для страницы привествия и завершения.

*Вопрос 2й*

Как сделать так чтобы изменить размер и текст кнопки "Далее" на одной странице и это изменение не влияло на все другие страницы.
[more=Вот код]

Код:
[Setup]
AppName=Change.Next.Button
AppVerName=Change.Next.Button
DefaultDirName={pf}\Change.Next.Button


[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectDir then
begin
WizardForm.NextButton.Width:=ScaleX(150);
WizardForm.NextButton.Left:=WizardForm.ClientWidth - ScaleX(232 + 10); //Отступ слева кнопки: Отмена.
WizardForm.NextButton.Top:=WizardForm.ClientHeight - ScaleY(23 + 10); //Отступ сверху кнопки: Отмена.
WizardForm.BackButton.Left:=WizardForm.ClientWidth - ScaleX(315 + 10); //Отступ слева кнопки: Отмена.
WizardForm.BackButton.Top:=WizardForm.ClientHeight - ScaleY(23 + 10); //Отступ сверху кнопки: Отмена.
WizardForm.NextButton.Caption:= 'Инициализировать дискету';
end;
end;
Автор: DuhaLab
Дата сообщения: 27.05.2007 13:08
Или вот вопрос, есть скрипт:

#include "SHFileOperation.iss"

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes

[Files]
Source: Files\*.*; DestDir: {app}; Flags: ignoreversion recursesubdirs; BeforeInstall: CreateBackup

[Code]
function MoveFile(const srcFile, destFile: PChar):Integer;
external 'MoveFileA@kernel32.dll stdcall';

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
MoveDir(ExpandConstant('{app}\Backup\'),ExpandConstant('{app}'));
RemoveDir(ExpandConstant('{app}\Backup\'));
end;
end;

procedure CreateBackup;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
basePath:= ExpandConstant('{app}');
srcFile:= ExpandConstant(CurrentFileName);
shortPath:= srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile:= ExpandConstant('{app}\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;


как сделать, чтоб резервировался файл, при парсинге ini файлов? т.к. BeforeInstall: CreateBackup не работает в данном случае (при установке вылетает ошибка)
Автор: Genri
Дата сообщения: 27.05.2007 14:20
DuhaLab
Цитата:
как сделать, чтоб резервировался файл, при парсинге ini файлов? т.к. BeforeInstall: CreateBackup не работает в данном случае
-- а что в данном случае подразумевается под "парсингом" ? Отработка секции [INI] или прописан свой парсер ? Если первое, то в таком виде работать не будет, так как используемая функция CurrentFileName валидна только в секции [Files] (решается передачей имени файла в качестве параметра). Если второе, то надо смотреть где и что вызывается.

Автор: maxdddca123
Дата сообщения: 27.05.2007 14:45
Как перенести неумещающийся текст на следующую строку ?
InfoNamePanel:=TPanel.Create(Page);
with InfoNamePanel do
begin
Parent:=Page.Surface;
Caption:='Вот тут когда набираешь очень много текста'+ chr(13)+'он всё равно не переносится на следующую, как это слделать ?';
Left:=AbonentNamePanel.Left;
Top:=Info.Top;
Width:=AbonentNamePanel.Width;
Height:=ScaleY(50);
BevelInner:=bvLowered;
TabOrder:=1;
Color:=12639424;
Alignment:=taLeftJustify;
end;

*********
Ещё вопрос: у кажд страницы есть page.ID А какой ID у страницы, которую я сам создал ? Как это определить ?
Автор: NightW0lf
Дата сообщения: 27.05.2007 14:59
Genri
Посматри личку пожалуйста.
Автор: Sero
Дата сообщения: 27.05.2007 15:11
maxdddca123

Цитата:
Как перенести неумещающийся текст на следующую строку ?


Код:
Caption:='Вот тут когда набираешь очень много текста' #13 + 'он всё равно не переносится на следующую, как это слделать ?';
Автор: maxdddca123
Дата сообщения: 27.05.2007 15:17
Sero
Не понял ???
Автор: Sampron
Дата сообщения: 27.05.2007 15:32
maxdddca123
Width:=497
Height:=28
Autosize:=False
WordWrap:=True
Автор: maxdddca123
Дата сообщения: 27.05.2007 15:37
Sampron
Ругается на неизвестный идентификатор Autosize и WordWrap
Автор: Sampron
Дата сообщения: 27.05.2007 15:41
maxdddca123
Сорри незаметил что у тебя TPanel я думал TLabel.

Добавлено:
Так создай новый текст на панели.
Автор: maxdddca123
Дата сообщения: 27.05.2007 15:54
Sampron
Типа ещё одну панель что ли ? Или как ?
Автор: EagleSH
Дата сообщения: 27.05.2007 16:00
Sampron как убрать страницу с доп задачами?

а сделал:

if CurPageID=wpSelectTasks then
begin
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end

вот токо назад не работает кнопка в таком случае
Автор: Sampron
Дата сообщения: 27.05.2007 16:25
maxdddca123

Цитата:
Типа ещё одну панель что ли ? Или как ?

Пример:

[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;

Добавлено:
EagleSH

Цитата:
как убрать страницу с доп задачами?

А ты не используй доп задачи, и не будет страницы.

Добавлено:
NightW0lf

Цитата:
Как сделать так чтобы изменить размер и текст кнопки "Далее" на одной странице и это изменение не влияло на все другие страницы.

Примерно так:
[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpWelcome then
begin
WizardForm.NextButton.Width:=75
WizardForm.NextButton.Left:=327
end
if CurPageID = wpSelectDir then
begin
WizardForm.BackButton.Left:=180
WizardForm.NextButton.Width:=150
WizardForm.NextButton.Left:=255
WizardForm.NextButton.Caption:='Инициализировать дискету'
end
if CurPageID = wpReady then
begin
WizardForm.NextButton.Width:=75
WizardForm.NextButton.Left:=327
WizardForm.BackButton.Left:=252
end
end;
Автор: Victor_Dobrov
Дата сообщения: 27.05.2007 17:53
Проверка системных требований, исправление согласно указанию Genri
Автор: NightW0lf
Дата сообщения: 27.05.2007 18:04
Sampron

Цитата:
Примерно так:

Спасибо!
Автор: ZavadS
Дата сообщения: 27.05.2007 19:32
Как можно заменить надпись клавиши 'OK' на 'Далее', каторое зявляеться в сообщении, в этому коду.

Цитата:
function InitializeSetup(): Boolean;
begin
If RunTask('oodcnt.exe', false) then
begin
if MsgBox('Программа установки русификатора обнаружила, что программа "O&O Defrag Professional Edition",'#13'запушена в данный момент. Рекомендуется закрыть программу перед тем, как продлить.'#13#13
'Нажмите «Далее», программа установки закроет и не сохранит измененные настройки в программе.'#13#13
'Нажмите «Отмена», чтобы выйти из программы установки русификатора.', mbInformation, MB_OkCancel) = idOk then
begin
KillTask('oodcnt.exe');
Result := True;
end else
Exit;
end;
Result := True;


А также можно ли вставить текс названия программы из [Setup] AppName (что-то подобное на это)

Цитата:
if MsgBox('Программа установки русификатора обнаружила, что программа '+ExpandConstant('{AppName}')+','#13'запушена в данный момент. Рекомендуется закрыть программу перед тем, как продлить

но так оно не работает


Автор: DuhaLab
Дата сообщения: 27.05.2007 19:35
Genri
Да первое, про это знаю, вот и спрашиваю, есть ли другой способ сделать резервную копию...
Автор: maxdddca123
Дата сообщения: 27.05.2007 22:28
Sampron
Как сделать неактивной кнопку далее на createcustompage ?
WizardForm.NextButton.Enabled:=false;
не работает почему то
Автор: Sampron
Дата сообщения: 27.05.2007 23:18
maxdddca123

Цитата:
Как сделать неактивной кнопку далее на createcustompage

Сам незнаю.
Автор: maxdddca123
Дата сообщения: 28.05.2007 05:59
Ааа дожили. Genri ну хоть ты помоги плиз !
Автор: Genri
Дата сообщения: 28.05.2007 09:09
DuhaLab -- способов десятки. Например, как я уже говорил, в этом варианте можно передавать имя файла как параметр:
Код:
[Setup]
AppName=My Program
AppVerName=My Program ver.1.5
DefaultDirName={pf}\My Program

[INI]
Filename: "{app}\MyProg.ini"; Section: "InstallSettings"; Flags: uninsdeletesection; BeforeInstall: CreateBackup('{app}\MyProg.ini')
Filename: "{app}\MyProg.ini"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"


Код:
procedure CreateBackup(filename: string);
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
basePath:= ExpandConstant('{app}');
srcFile:= ExpandConstant(filename);
shortPath:= srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile:= ExpandConstant('{app}\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
FileCopy(PChar(srcFile), PChar(destFile), False);
end;
Автор: DuhaLab
Дата сообщения: 28.05.2007 09:37
Вопрос: как сделать вторую страницу дополнительных задач (следом за первой) и перенести часть кнопок (чекбоксов) на новую.
Автор: Genri
Дата сообщения: 28.05.2007 10:30
DuhaLab

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

[Tasks]
Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"
Name: desktopicon\common; Description: "For all users"; GroupDescription: "Additional icons:"; Flags: exclusive
Name: desktopicon\user; Description: "For the current user only"; GroupDescription: "Additional icons:"; Flags: exclusive unchecked
Name: quicklaunchicon; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:"; Flags: unchecked
Name: associate; Description: "&Associate files"; GroupDescription: "Other tasks:"; Flags: unchecked

[Code]
var
Page: TInputOptionWizardPage;
IsRegisteredUser: Boolean;

procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'License Information', 'Are you a registered user?',
'If you are a registered user, please check the box below, then click Next.',
False, False);

Page.Add('I am a registered user');
Page.Values[0] := False;
end;
Автор: maxdddca123
Дата сообщения: 28.05.2007 12:37
Genri
В выложенном тобой выше примере аналоге GetSectionName в строке
if IniStrings[i][1] = '[' then
на каком то шаге выдаётся ошибка Out of string range (не с самого начала тоесть). Не подскажешь что надо проверить в первую очередь ? Вообще что это означает ? Если словами сказать.
Автор: Genri
Дата сообщения: 28.05.2007 13:37
maxdddca123 -- в указанном примере, IniStrings: TArrayOfString (т.е. массив строк). Каждая строка, в свою очередь, массив символов.
Например:
IniStrings:= ['abc','def'];
... тогда:
IniStrings[0] = 'abc' (т.е. первая строка)
IniStrings[1] = 'def' (т.е. вторая строка)
IniStrings[0][1] = 'a' (т.е. первый символ перовй строки)
IniStrings[1][1] = 'd' (т.е. первый символ второй строки)

Обрати внимание, что элементы массива нумеруются с 0, а символы в строке с 1.
Либо ты пытаешься обработать пустую строку, либо i у тебя принимает значение больше, чем кол-во строк - 1 (если строк две , то доступны только два элемента: IniStrings[0] и IniStrings[1])

ЗЫ. на будущее, указывай хотя бы страницу, где находится пример.
Автор: maxdddca123
Дата сообщения: 28.05.2007 13:52
Genri
Да у меня есть пустая строка. Они там периодически идут. Как с ними бороться ?
Автор: NightW0lf
Дата сообщения: 28.05.2007 13:57
Genri
А возможно ли сделать так чтобы отмеченные данные на этой странице вносились на страницу wpReady?
Автор: Genri
Дата сообщения: 28.05.2007 14:27
NightW0lf

Код:
var
Page: TInputOptionWizardPage;

procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'License Information', 'Are you a registered user?',
'If you are a registered user, please check the box below, then click Next.',
False, False);

Page.Add('I am a registered user');
Page.Add('Install Acrobat Reader');
Page.Values[0] := False;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpReady then
begin
if Page.Values[0] then
WizardForm.ReadyMemo.Lines.Add('Confirm registration');
if Page.Values[1] then
WizardForm.ReadyMemo.Lines.Add('Install Acrobat Reader');
end;
end;
Автор: NightW0lf
Дата сообщения: 28.05.2007 14:48
Genri
А можно еще чтоб на этой новой странице можно было сделать так то что омечается переносилост на страницу wpReady с названием группы?
[more=Пример для новой страницы на странице wpReady:]

Код:
Additional tasks:
Additional icons:
Create a desktop icon
For all users
Other tasks:
Associate files

Additional programms:
Confirm registration
Install Acrobat Reader

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


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