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

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

Автор: noiseless
Дата сообщения: 28.01.2009 15:38
de_MAX
Уже тут обсуждали добавление дополнительного прогрессбара. Пока решения не нашли
Автор: Yoldosh
Дата сообщения: 28.01.2009 16:25
Как Изменить Текст Страницу Приветствия

Добавлено:
Как Изменить Текст МенюПриветствия
Автор: noiseless
Дата сообщения: 28.01.2009 16:36
Yoldosh
А по подробней? Что значит "изменить"? Изменить текст, изменить картинку?
И что такое "Меню приветствия"?
Автор: Yoldosh
Дата сообщения: 28.01.2009 16:42
Help !!!!!!!!! Как Изменить Текст Страницу Приветствия Зарнее Спасибо

Добавлено:
noiseless Текст Вас Приветствует Матер Установки
Автор: YurCompMan2
Дата сообщения: 28.01.2009 16:55
Victor_Dobrov

Помогите, пожалуйста, преобразовать этот скрипт [more]
function enabledesc(ComponentsListHandle: HWND; DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';
function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';

var
Info: TNewStaticText;
InfoCaption: TNewStaticText;
InfoPanel: TPanel;

procedure DeinitializeSetup();
begin
disabledesc();
end;

procedure InitializeWizard();
begin
WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top - WizardForm.TypesCombo.Height;
WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top+24;
WizardForm.ComponentsList.Width := ScaleX(417);

InfoPanel := TPanel.Create(WizardForm);
InfoPanel.Parent := WizardForm.SelectComponentsPage;
InfoPanel.Caption := '';
InfoPanel.Top := ScaleY(190);
InfoPanel.Left := ScaleX(0);
InfoPanel.Width := ScaleX(417);
InfoPanel.Height := ScaleY(40);
InfoPanel.BevelInner := bvRaised;
InfoPanel.BevelOuter := bvLowered;
InfoCaption := TNewStaticText.Create(WizardForm);
InfoCaption.Parent := WizardForm.SelectComponentsPage;
InfoCaption.Caption := 'Описание';
InfoCaption.Left := ScaleX(7);
InfoCaption.Top := InfoPanel.Top - ScaleY(6);
InfoCaption.Font.Color := clActiveCaption;

Info := TNewStaticText.Create(WizardForm);
Info.Parent := InfoPanel;
Info.AutoSize := False;
Info.Left := ScaleX(6);
Info.Width := ScaleX(403);
Info.Top := ScaleY(12);
Info.Height := ScaleY(24);
Info.Caption := 'Наведите курсор мыши на компонент, чтобы прочитать его описание.';
Info.WordWrap := true;

enabledesc(WizardForm.ComponentsList.Handle,Info.Handle,
'qwe;'+
'qwerty;'+
'qwertyui;'+
'qwertyuiop;'
);
end;[/more], чтобы вместо descctrl.dll использовать возможности расширенной версии Inno Setup Compiler http://restools.hanzify.org/.

Вы мне уже давали пример скрипта на этой расширенной версии inno, но там было использование подсказки. А здесь используется дополнительная панель, что, по-моему, удобнее. Я пытался что-то сделать - ничего не получается.
Автор: noiseless
Дата сообщения: 28.01.2009 17:07
Yoldosh
В папке, куда установлен INNO, находится подпапка Languages. Это локализованные тексты страничек и сообщений инсталлятора. Выбираешь язык, открываешь файл блокнотом и редактируешь.
Автор: YurCompMan2
Дата сообщения: 29.01.2009 01:59
Люди, помогите, пожалуйста. Я здесь обнаружил dll ExpeditorR'а "isjpgtobmp.dll", которая преобразует jpg в bmp. Так вот, на файлообменнике она была удалена. Помогите, скажите, где можно взять эту dll?

Добавлено:
Люди, помогите, пожалуйста. Я здесь обнаружил dll ExpeditorR'а "isjpgtobmp.dll", которая преобразует jpg в bmp. Так вот, на файлообменнике она была удалена. Помогите, скажите, где можно взять эту dll?
Автор: GRom_V
Дата сообщения: 29.01.2009 02:52
Все разобрался
Автор: stNeko
Дата сообщения: 29.01.2009 03:29
Yoldosh, так будет проще:

[Messages]
WelcomeLabel1= заголовок
WelcomeLabel2= текст
Автор: Victor_Dobrov
Дата сообщения: 29.01.2009 04:34
LouisVuitton
Цитата:
Подскажите, пожалуйста, реально ли сделать что бы здесь текст был без фона, то есть поверх картинки.

Посмотри, как сделано здесь: http://victor-dobrov.narod.ru/NSIS_ImageHeader.rar

YurCompMan2
Цитата:
...вместо descctrl.dll использовать возможности расширенной версии Inno Setup Compiler

Вот пример: [more]

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe

[Types]
Name: compact; Description: Оптимальный выбор
Name: full; Description: Выбрать все компоненты
Name: deselect; Description: Сбросить все компоненты
Name: custom; Description: Пользовательский режим; Flags: iscustom

[Components]
Name: program; Description: program; Types: full compact custom; Flags: fixed
Name: help; Description: help; Types: full
Name: readme; Description: readme; Types: full
Name: readme\en; Description: en; Flags: exclusive
Name: readme\ru; Description: ru; Flags: exclusive

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

[CustomMessages]
ru.desc=Наведите курсор мыши на компонент, чтобы прочитать его описание.

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: program
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Components: help

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

[Code]
var
Info: TNewStaticText;
InfoCaption: TNewStaticText;
InfoPanel: TPanel;
Descriptions: String;
CompHints: array of String;

Function StringToArray(Text, Cut: String): array of String; var t, i, k: Integer; Begin    { создать массив из текста}
SetArrayLength(Result, 0);
Repeat SetArrayLength(Result, GetArrayLength(Result) + 1); t:= 1; k:= Pos(Cut, Text);
if k > 0 then t:= Length(Cut) else k:= Pos(#10, Text); i:= GetArrayLength(Result) - 1;
if k > 0 then begin Result[i]:= Copy(Text, 1, k - 1); Text:= Copy(Text, k + t, Length(Text)) end else begin Result[i]:= Text; SetLength(Text, 0) end;
Until Length(Text) = 0;
End;

Procedure CompMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
Begin
    if (Index < 0) or (Index + 1 > GetArrayLength(CompHints)) then Info.Caption:= ExpandConstant('{cm:desc}') else Info.Caption:= CompHints[Index]
End;

procedure InitializeWizard();
begin
WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top - WizardForm.TypesCombo.Height;
WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top+24;
WizardForm.ComponentsList.Width := ScaleX(417);
InfoPanel := TPanel.Create(WizardForm);
InfoPanel.Parent := WizardForm.SelectComponentsPage;
InfoPanel.Caption := '';
InfoPanel.Top := ScaleY(192);
InfoPanel.Left := ScaleX(0);
InfoPanel.Width := ScaleX(417);
InfoPanel.Height := ScaleY(40);
InfoPanel.BevelInner := bvRaised;
InfoPanel.BevelOuter := bvLowered;
InfoCaption := TNewStaticText.Create(WizardForm);
InfoCaption.Parent := WizardForm.SelectComponentsPage;
InfoCaption.Caption := 'Описание';
InfoCaption.Left := ScaleX(7);
InfoCaption.Top := InfoPanel.Top - ScaleY(6);
InfoCaption.Font.Color := clActiveCaption;
Info := TNewStaticText.Create(WizardForm);
Info.Parent := InfoPanel;
Info.AutoSize := False;
Info.Left := ScaleX(6);
Info.Width := ScaleX(403);
Info.Top := ScaleY(12);
Info.Height := ScaleY(24);
Info.WordWrap := true;
Info.Caption:= ExpandConstant('{cm:desc}')

Descriptions:=
'Основные файлы;' +
    'Файлы справки;' +
    'Файл readme;' +
    'readme на английском;' +
    'readme на русском;'
CompHints:= StringToArray(Descriptions,';')
    WizardForm.ComponentsList.OnItemMouseMove:= @CompMouseMove;
end;
[/more]

Только у этого способа есть недостатки: размер списка компонентов меньше, чем стандартный и в панель описаний входит меньше текста, чем в отдельной всплывающей подсказке.
Автор: ExpeditorR
Дата сообщения: 29.01.2009 08:53
YurCompMan2
Перезалил isjpgtobmp.dll по новой Ссылка. В архиве имеется пример показа слайд-шоу из jpg картинок, картинки меняются по процентам установки.

P.S.
На днях закончу новую dll для показа jpg,bmp,png без предварительной конвертации, плюс будут эффекты переходов из одной картинки в другую, и этой же библиотекой можно будет проигрывать практически любой звуковой файл.
Автор: vserd
Дата сообщения: 29.01.2009 10:42
Доброго здравия всем!!!
Подскажите как можно реализовать такую конструкцию в inno

Код:
type
TFunc = function (): String;

var
AFunc : TFunc;

function Demo : String;
begin
Result := 'demo';
end;


Procedure A1;
begin
if not Assigned(AFunc) then AFunc := Demo;
if AFunc() = 'Demo' then .....
end;

Автор: YurCompMan2
Дата сообщения: 29.01.2009 13:20
Victor_Dobrov
ExpeditorR

Большое спасибо.
Автор: Sig666
Дата сообщения: 29.01.2009 20:54
Ребят подскажите чайнику Нужно в строковом массиве найти слово (имя файла). Есть такой код, но он ищет целую строку:

procedure searchstring;
var
flist: TArrayOfString;
fitem: String;
i:integer;
begin
LoadStringsFromFile('C:\List.txt', flist);
for i := 0 to GetArrayLength(flist)-1 do begin
fitem := flist[i]
if fitem='dcready.exe' then
MsgBox('found!', mbInformation, MB_OK);
end;
end;
Автор: LordVeider
Дата сообщения: 29.01.2009 21:06
В IS куча функций для работы со строковыми переменными.
В том числе для выдергивания из них путей/имен файлов etc.
Читайте стандартный мануал.
Автор: Diawer
Дата сообщения: 29.01.2009 22:26
Кому интересно жители поднебесной сделали очередную версию расширенных возможностей Inno Setup 5.2.3 (ISPP 5.2.3.0) (build 090115), по мне так она намного интереснее (удобнее) оригинала, тем более что, начиная с (build 090110) багов мной замечено не было.
Качаем
Автор: stNeko
Дата сообщения: 30.01.2009 08:28
Кстати, насчёт этого китайского Inno. Кто-нибудь знает простой способ сделать так, чтобы пункты в режиме TreeView были свёрнуты по умолчанию?
Автор: vserd
Дата сообщения: 30.01.2009 09:50
Diawer

Цитата:
Кому интересно жители поднебесной сделали очередную версию расширенных возможностей Inno Setup 5.2.3

А где-то можно почитать описание расширенных возможностей? (английский, русский)


Цитата:
Качаем

А зачем так сложно? Требует оригинальных файлов, на уже модифицированный inno не встает, папку куда установить нет возможности.
Проще взять с оригинала: hччp://restools.hanzify.org/inno/InnoCompiler090115_English.zip банальная распаковка и все работат.

Как вызвать автодополнение (кроме точки)?


Автор: LordVeider
Дата сообщения: 30.01.2009 12:42

Цитата:
Кстати, насчёт этого китайского Inno. Кто-нибудь знает простой способ сделать так, чтобы пункты в режиме TreeView были свёрнуты по умолчанию?
Флаг Collapsed для родительского компонента сворачивает его.
Автор: CrackMe
Дата сообщения: 30.01.2009 13:21
Привет всем, прошу проверить правильно я ассоцииирую программу с типом файла [more][Registry]
Root: HKLM; Subkey: "SOFTWARE\Classes\.ScanTailor"; ValueType: string; ValueName: ""; ValueData: "Scan Tailor File"; Flags: uninsdeletevalue
Root: HKLM; Subkey: "SOFTWARE\Classes\Scan Tailor File"; ValueType: string; ValueName: ""; ValueData: "Scan Tailor File"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Scan Tailor File\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\scantailor.exe,0"
Root: HKLM; Subkey: "SOFTWARE\Classes\Scan Tailor File\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\scantailor.exe"" ""%1"""
[/more]
Автор: Sig666
Дата сообщения: 30.01.2009 14:43
LordVeider


Цитата:
В том числе для выдергивания из них путей/имен файлов etc.
Читайте стандартный мануал.

Нашел в хелпе функцию pos и успешно приспособил для своей задачи. Вот мой код

procedure searchstring;
var
flist: TArrayOfString;
fitem: String;
i:integer;
begin
LoadStringsFromFile('C:\List.txt', flist);
for i := 0 to GetArrayLength(flist)-1 do begin
fitem := flist[i]
if Pos('dcready.exe',fitem) <> 0 then
MsgBox('found!', mbInformation, MB_OK)
else
MsgBox('not found!', mbInformation, MB_OK)
end;
end;

но проблема в следующем: сообщений выскакивает столько, сколько строк + совпадений. Как изменить код, чтоб это происходило только 1 раз?
Автор: Dimika
Дата сообщения: 30.01.2009 16:21
Привет.
Как сделать чтобы в одном случае из [Files] файл копировался в одно место, а в другом в другое. Например если винда 64х разрядная то в програм файлс, если нет то просто на диск с:
Автор: SotM
Дата сообщения: 30.01.2009 16:23
Sig666
Странно, что такие вопросы задаются здесь. Лучше найти форум по Pascal / Delphi и задавать там. Там больше людей смогут помочь.

А свой код мог бы и так [more=переписать]
Код:
procedure searchstring;
var
    flist: TArrayOfString;
    fitem: String;
    i:integer;
    found: boolean;
begin
    found := false;
    LoadStringsFromFile('C:\List.txt', flist);
    for i := 0 to GetArrayLength(flist)-1 do begin
        fitem := flist[i]
        if Pos('dcready.exe',fitem) <> 0 then
        begin
            found := true;
            break;
        end;
    end;
    
    if found then
        msgbox( 'Found', mbinformation, MB_OK )
    else
        msgbox( 'Not Found', mbinformation, MB_OK );
end;
Автор: Dimika
Дата сообщения: 30.01.2009 16:48
SortM
Все обыскал - никак не могу найти. Может ссылкой поможешь?
Автор: vserd
Дата сообщения: 30.01.2009 17:36
Как можно отменить установку если произошла ошибка в CurStepChanged?

т.е.

Код:
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then begin
If AlarmFunc then begin
{здесь должен быть некоторый код, который отменит установку.}
(*
WizardForm.close;
abort;
этот код не отменяет устновку :(
*)
end;
end
end;
Автор: Don_Juan
Дата сообщения: 30.01.2009 17:36
Dimika

Так вроде:


Код: [Files]
Source: "Файлы 32\*"; DestDir: "{sd}\Bin32"; Check: "not Is64BitInstallMode";
Source: "Файлы 64\*"; DestDir: "{pf64}\Bin64"; Check: "Is64BitInstallMode";
Автор: Dimika
Дата сообщения: 30.01.2009 17:43
Don_Juan
А если этих условий несколько
Можно как-нибудь вставить функцию, которая возвращала быть путь, в DestDir?
Автор: Don_Juan
Дата сообщения: 30.01.2009 18:15
Dimika

Можно поподробнее?.. Какие условия и что кого должно возвращать?
Автор: Serega0675
Дата сообщения: 30.01.2009 20:13
vserd
Я вам уже ответил.
Хорошо, [more=повторюсь][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Code]
function NextButtonClick(CurPage: Integer): Boolean;
var
ResultCode: Integer;
begin
Result:=True;
if CurPage=14 then
If (FileSearch('Program.exe', ExpandConstant('{pf}'))='') then
Exec(ExpandConstant('{uninstallexe}'), '/verysilent', ExpandConstant('{app}'), SW_HIDE, ewNoWait, ResultCode);
end; [/more]...
Вместо проверки на присутствие файла, поставьте проверку вашего условия.
Автор: Don_Juan
Дата сообщения: 30.01.2009 21:33
Ребят, помогите, пожалуйста, с этим кодом.
В общем, после удаление программы остаётся папка с файлами которую трогать не надо. А с использованием этого кода он эту папку видит и удаляет. Так вот можно как-нибудь папку скрыть, чтобы этот код пост удаления её не видел?


Код: [code]

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if ( CurUninstallStep = usPostUninstall ) then
If DirExists(ExpandConstant('{app}') + '')
then
if MsgBox('Удалить файлы не входящие в пакет установки игры?', mbConfirmation, mb_YesNo) = idYes then
begin
DelTree(ExpandConstant('{app}')+ '', True, True, True);
end;
end;

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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