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

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

Автор: boss911
Дата сообщения: 24.05.2008 02:34
Sampron

Цитата:
TButton заменён на TNewButton, не заметил?

Да откуда мне такое заметить. Говорю же, далек от этого (програмирование).

Поменял клас, теперь вроде все ок, только вот после деинсталляции вылазит окно, что приложение было полностью удалено с вашего компьютера или он и было, я уже не помню. Спасибо, но на этом я заканчивать не хочу, ты уж прости, смотри ПМ.
Автор: alfonser
Дата сообщения: 24.05.2008 18:48
Подскажите в чем ошибка?

Код: [Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssDone
then
begin
function FileCopy(ExpandConstant('(src}\Patch_1200\wkwin32.DLL'), ExpandConstant('{reg:HKLM\SOFTWARE\WIBU-SYSTEMS\WIBU-KEY\Setup\Applications\{{00060000-0000-1004-8002-0000C06B5161%7d,SourcePath}'), True);
end;
Автор: Sampron
Дата сообщения: 24.05.2008 20:19
alfonser
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssDone
then
begin
FileCopy(ExpandConstant('(src}\Patch_1200\wkwin32.DLL'), ExpandConstant('{reg:HKLM\SOFTWARE\WIBU-SYSTEMS\WIBU-KEY\Setup\Applications\{{00060000-0000-1004-8002-0000C06B5161%7d,SourcePath}'), True);
end;
end;
Автор: alfonser
Дата сообщения: 24.05.2008 20:26
Sampron
Спасибо, получилось!
А если я поставлю

Код: FileCopy(ExpandConstant('(src}\Patch_1200\*').......
Автор: alfonser
Дата сообщения: 25.05.2008 15:13
Sampron

Цитата:
Переделал 5 скинов InstallShield и добавил ещё 5 забираем здесь:
http://data.cod.ru/901414346
Изменения:
Из скриптов удалены ненужные для редактирования строки, решена проблема с цветом текста кнопок переключения на странице лицензии и чек-бокса на странице программной группы, и самое главное на стандартные кнопки наложены текстуры в формате bmp. Чистые текстуры кнопок без текста также идут в комплект.


Можно перезалить?
Автор: chelobey
Дата сообщения: 25.05.2008 15:42
вопрос простой, кажется, но как воплотить ответ в код не соображу.
в секции [Registry]
Root: HKLM; SubKey: SOFTWARE\tra; ValueType: string; ValueName: InstallDirectory; ValueData: ?
вместо знака вопроса нужно вставить место расположения файла (Path\Path) без указания диска. то есть, результат будет такой же как при {app}, но без, положим, С:\
Автор: serg_aka_lain
Дата сообщения: 25.05.2008 16:32
chelobey

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

Root: HKLM; SubKey: SOFTWARE\tra; ValueType: string; ValueName: InstallDirectory; ValueData: {code:GetFullPathWithoutDrive};

Коде:

function GetFullPathWithoutDrive(Param: String): String;
begin
Result := Copy(ExpandConstant('{app}'), 4 , Length( ExpandConstant('{app}') ));
end;
Автор: alfonser
Дата сообщения: 25.05.2008 17:56

Код: [Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssDone
then
begin
FileCopy(ExpandConstant('(src}\Patch_1200\ArchiCAD.exe.BAK'), ExpandConstant('{reg:HKLM\SOFTWARE\WIBU-SYSTEMS\WIBU-KEY\Setup\Applications\{{00060000-0000-1004-8002-0000C06B5161%7d,SourcePath}'), False);
FileCopy(ExpandConstant('(src}\Patch_1200\wkwin32.DLL'), ExpandConstant('{reg:HKLM\SOFTWARE\WIBU-SYSTEMS\WIBU-KEY\Setup\Applications\{{00060000-0000-1004-8002-0000C06B5161%7d,SourcePath}'), False);
FileCopy(ExpandConstant('(src}\Patch_1200\ArchiCAD.exe'), ExpandConstant('{reg:HKLM\SOFTWARE\WIBU-SYSTEMS\WIBU-KEY\Setup\Applications\{{00060000-0000-1004-8002-0000C06B5161%7d,SourcePath}'), False);
end;
end;
function NeedRestart(): Boolean;
begin
Result:=True;
end;
Автор: chelobey
Дата сообщения: 25.05.2008 18:49

Цитата:
function GetFullPathWithoutDrive(Param: String): String;
begin
Result := Copy(ExpandConstant('{app}'), 4 , Length( ExpandConstant('{app}') ));
end;


спасибо
Автор: elapse
Дата сообщения: 25.05.2008 18:58
alfonser, имеем:
ExpandConstant('(src}\Patch_1200\ArchiCAD.exe.BAK')
Надо:
ExpandConstant('{src}\Patch_1200\ArchiCAD.exe.BAK')
Справку почитать очень сложно. А, она же на английском. Пофигу. Давайте постить фигню. Ага.
Автор: alfonser
Дата сообщения: 25.05.2008 20:11
elapse
Спасибо!
Это чистая опечатка. Я даже не обратил на это внимание.Думал ошибка в чем-то другом.
Еще раз спасибо!
Автор: Diawer
Дата сообщения: 25.05.2008 20:51
Появилась мысль, помогите реализовать.
Как сделать на странице где происходит выбор создания ярлыка на рабочем столе ещё один пункт, создавать или нет деинсталлятор, то есть если стоит галочка, то деинсталлятор создаётся, а если нет то всё что к нему относится, не создается, включая реестр. (Типа Uninstallable=yes – no)

Автор: alfonser
Дата сообщения: 25.05.2008 20:53
Подскажите в каком файле находятся параметры скина, выбранного по умолчанию?
Конкретно интересует параметры BeveledLabel
Автор: serg_aka_lain
Дата сообщения: 25.05.2008 23:15
Diawer
Вот простенькое (даже примитивное) решение
[more]
[Tasks]
Name: "uninstallable"; Description: "Создать деинсталлятор";

[Code]

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
begin
if IsTaskSelected('uninstallable') = False then
begin
DeleteFile(ExpandConstant('{uninstallexe}'));
DeleteFile(ExpandConstant('{app}') + '\unins000.dat');
RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My Proga_is1');
end;
end;
end;

Если чекбокс отмечен, то деинсталлятор создаётся, если не отмечен то удаляются ключ реестра и Unins000.exe , Unins000.dat
[/more]

Добавлено:
alfonser

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


Не очень понятно, о чём ты?
Если о надписи в левом нижнем углу то
Messages
BeveledLabel=InnoSetup
Автор: alfonser
Дата сообщения: 25.05.2008 23:47
serg_aka_lain

Цитата:
Не очень понятно, о чём ты?
Если о надписи в левом нижнем углу то

Это я в курсе.Мне хотелось бы сместить эту надпись и изменить цвет шрифта.Я понял как это делается в скинах от kindly, но где файл параметров стандартного скина не найду.
Автор: serg_aka_lain
Дата сообщения: 26.05.2008 00:07
alfonser

Как от Kindly я не знаю,
А по умолчанию её расположение примерно такое

procedure InitializeWizard();
begin
with WizardForm do
begin
with BeveledLabel do
begin
Left := 0;
Top := 306;
Width := 5;
Height := 14;
Font.Style := [fsBold];
Caption := ' InnoSetup ';
Enabled := False;
end;
end;
end;
Автор: alfonser
Дата сообщения: 26.05.2008 00:33
serg_aka_lain
Спасибо, попробую! А где ты нашел эти данные?
Автор: alfonser
Дата сообщения: 26.05.2008 12:33
Подскажите, можно ли из пути установки, взятого из реестра, исключить последнее значение?
Т.е. есть значение реестра: [HKEY_CURRENT_USER\Software\Graphisoft\ArchiCAD\ArchiCAD 11.0.0 RUS R1]
@="C:\\1\\ArchiCAD 11\\ArchiCAD.exe"

и путь установки определяется как C:\1\ArchiCAD 11\ArchiCAD.exe
А мне надо C:\1\ArchiCAD 11.
Возможно ли такое?
Автор: SotM
Дата сообщения: 26.05.2008 14:11
alfonser
Ответ: можно.
Есть такие функции:
function ExtractFileExt(const FileName: string): String;
function ExtractFileDir(const FileName: string): String;
function ExtractFilePath(const FileName: string): String;
function ExtractFileName(const FileName: string): String;
function ExtractFileDrive(const FileName: string): String;
function ExtractRelativePath(const BaseName, DestName: String): String;
в Help'е про них написано.

All:
Есть такая часть скрипта:

Код:
[Tasks]
Name: desktopicon; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";
Name: desktopicon\common; Description: "{cm:ForAllUsers}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive
Name: desktopicon\user; Description: "{cm:ForCurrentUser}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive unchecked
Name: russian; Description: "&Russian"; Flags: unchecked
Автор: KurtWagner
Дата сообщения: 27.05.2008 02:37
Как сделать так? http://htrtwagner.wen.ru/Simpsons.jpg "копирования новых файлов" потом "выгрузка видео файлов" после "выгрузка аудио файлов" и т.д. ЗАРАНЕЕ СПАСИБО!!!

Добавлено:
ПОПРАВКА http://kurtwagner.wen.ru/Simpsons.jpg
Автор: SotM
Дата сообщения: 27.05.2008 07:41
KurtWagner
Сразу логический вопрос: а зачем тебе так?!
Пускай всё подряд и распаковывается, зачем усложнять этот процесс?
Автор: AlexDJ666
Дата сообщения: 27.05.2008 08:49
И снова здравствуйте)

Продолжаю добивать свой инсталлятор и теперь хотел бы узнать, как в блоке описания, который сделан через (Memo:=TMemo.Create(WizardForm)) сделать форматированный текст? То есть текст должен быть с абзацами, цветами, заголовками и т.п.

Ниже вкладываю очищенный кусок кода.

[more]
[_CODE]

Procedure InitializeWizard();

Var
Page: TWizardPage;
Text301: TNewStaticText;
ListBox: TListBox;
Check301: TCheckBox;
NoChecks,Label301: TLabel;
Image301: TBitmapImage;
var
Lbl: TLabel;
Memo: TMemo;
Bmp: TBitmapImage;
begin

Function Checked301: Boolean;
begin
Result:=Check301.Checked
end;

Procedure Check301OnClick (Sender: TObject);
begin
Check301.Checked:=Not(Check301.Checked)
end;

procedure Check301MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text301.Enabled:=True
Text301.Caption:='Здесь должен быть форматированный текст'
Image301.Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizModernSmallImage.bmp'))
Image301.Visible:=True
end;

// Заголовок страницы
Page:=CreateCustomPage(3, 'Интерфейс', 'Выберите компоненты, которые вы хотите установить.')

// Блок скриншотов

Memo :=TMemo.Create(WizardForm)
Memo.SetBounds (16,161,198,143)
Memo.Color :=clBtnFace
Memo.Enabled :=False
Memo.BorderStyle :=bsNone
Memo.Parent :=Page.Surface

Bmp :=TBitmapImage.Create(WizardForm)
Bmp.SetBounds (15,160,200,145)
Bmp.AutoSize :=False
Bmp.BackColor :=$cccccc
Bmp.Parent :=Page.Surface

Image301 :=TBitmapImage.Create(WizardForm)
Image301.Left :=10
Image301.Top :=10;
Image301.Width :=55
Image301.Height :=55
Image301.Parent :=Memo

// Блок описания компонентов

Memo :=TMemo.Create(WizardForm)
Memo.SetBounds (231,1,288,303)
Memo.Color :=clBtnFace
Memo.Enabled :=False
Memo.BorderStyle :=bsNone
Memo.Parent :=Page.Surface

Bmp :=TBitmapImage.Create(WizardForm)
Bmp.SetBounds (230,0,290,305)
Bmp.AutoSize :=False
Bmp.BackColor :=$cccccc
Bmp.Parent :=Page.Surface

Text301 :=TNewStaticText.Create(Page)
Text301.Left :=15
Text301.Top :=15
Text301.Width :=260
Text301.Height :=275
Text301.AutoSize :=False
Text301.WordWrap :=True
Text301.Parent :=Memo

NoChecks :=TLabel.Create(Page)
NoChecks.Width :=WizardForm.Width
NoChecks.Height :=WizardForm.Height
NoChecks.Autosize :=False
NoChecks.Transparent :=True
//NoChecks.OnMouseMove :=@NoChecksMouseMove
NoChecks.Parent :=Page.Surface

// Блок списка компонентов

ListBox := TListBox.Create(Page)
ListBox.Left := 15
ListBox.Top := 0
ListBox.Width := 200
ListBox.Height := 149
//ListBox.BorderStyle := bsNone
ListBox.Parent := Page.Surface

// Список компонентов

Check301:=TCheckBox.Create(Page)
Check301.Left:=2
Check301.Top:=0
Check301.Width:=196
Check301.Checked:=True
Check301.Parent:=ListBox

Label301:=TLabel.Create(Page)
Label301.Autosize:=True
Label301.WordWrap:=False
Label301.Left:=16
Label301.Top:=2
Label301.Caption:='Atlas (v1.11.0)'
Label301.OnClick:=@Check301OnClick
Label301.OnMouseMove:=@Check301MouseMove
Label301.Parent:=Check301
end;
[/more]

Добавлено:
И возможно ли в ListBox'e и TMemo сделать прокрутку?
Автор: SotM
Дата сообщения: 27.05.2008 09:47

Цитата:
И возможно ли в ListBox'e и TMemo сделать прокрутку?

Memo.ScrollBars:= ssVertical;
Это и в примерах можно было найти


Цитата:
сделать форматированный текст? То есть текст должен быть с абзацами, цветами, заголовками и т.п.

Т.е. есть готовый текст? Попробуй использовать rtf.

Автор: Genri
Дата сообщения: 27.05.2008 11:14
AlexDJ666, SotM -- TMemo не может отображать форматированный текст. Для этого используется его потомок TRichEditViewer.

[more=Пример 1]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: ReadMe.rtf; Flags: dontcopy

[_Code]
var
Page: TWizardPage;
Memo: TRichEditViewer;

procedure InitializeWizard();
begin
ExtractTemporaryFile('ReadMe.rtf');

Page := CreateCustomPage(wpWelcome,
'Information', 'Please read the following important information before continuing.');

Memo := TRichEditViewer.Create(Page);
Memo.Top := ScaleY(8);
Memo.Width := Page.SurfaceWidth;
Memo.Height := ScaleY(89);
Memo.ScrollBars := ssVertical;
Memo.Parent := Page.Surface;
Memo.Lines.LoadFromFile(ExpandConstant('{tmp}\ReadMe.rtf'));
end;
[/more]; [more=Пример 2]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: ReadMe.rtf; Flags: dontcopy

[_Code]
var
Page: TOutputMsgMemoWizardPage;
rtfStr: string;

procedure InitializeWizard();
begin
ExtractTemporaryFile('ReadMe.rtf');
LoadStringFromFile(ExpandConstant('{tmp}\ReadMe.rtf'), rtfStr);

Page := CreateOutputMsgMemoPage(wpWelcome,
'Information', 'Please read the following important information before continuing.',
'When you are ready to continue with Setup, click Next.', rtfStr);
end; [/more]
Автор: SotM
Дата сообщения: 27.05.2008 12:46

Цитата:
TMemo не может отображать форматированный текст. Для этого используется его потомок TRichEditViewer.

Гы, точно. Посмотрел щас твои ссылки на примеры. Помню что где-то видел подобное
Автор: antifire
Дата сообщения: 27.05.2008 15:49
Как организовать чтение бинарного файла???

Ситуация такая:
Есть бинарник, с параметром VolumesCount, который указывает количество томов для записи ("том" - файл с информацией и документами размером около 650 мб). Как сделать так, чтоб инсталятор читал параметр VolumesCount из бинарника, и в зависимости от значения выдавал сообщение - "Вставьте следующий диск" (если VolumesCount=2, 3 и т.д.)

DiskSpanning и DiskSliceSize не подходят - так как информация в "томах" и их количество постоянно меняеться - очень неудобно каждый раз по новому делать установщик.

Если этот вопрос задавали ранее прошу прощения, дайте ссылку.
Автор: SotM
Дата сообщения: 27.05.2008 21:38
antifire
Не совсем понятен вопрос насчет томов.
А сами тома чем сделаны то?!
Автор: alfonser
Дата сообщения: 27.05.2008 22:09
Подскажите, возможно ли просматривать скины в "реальном" времени? Т.е. есть скрипт скина я хочу внести изменнения. Как эти изменения можно просмотреть?
Автор: SotM
Дата сообщения: 28.05.2008 07:49
alfonser
Ты хоть сам понял что написал? Какие скины? Где посмотреть? Какие изменения?
Перефразируй свой вопрос, тут не все могут читать мысли.
Автор: AlexDJ666
Дата сообщения: 28.05.2008 07:59
SotM, про Мемо понятно, а с ListBox'ом как быть? ListBox.ScrollBars    := ssVertical; не срабатывает

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Поиск в WinDjView


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