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

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

Автор: Kindly
Дата сообщения: 23.07.2007 11:36
Genri, если QuickeneR просматривает форум, то возможно. Но если "реально это значение в инно есть", то может лучше спросить у самого автора - почему оно недоступно?
Автор: Genri
Дата сообщения: 23.07.2007 11:46
Kindly -- автору аналогичный вопрос в конференции на офсайте задавался. Ответ: "Используйте FileSize из препроцессора".
Автор: pasynok
Дата сообщения: 23.07.2007 13:14
вышел Inno Setup 5.1.13 (1 409 744 bytes)
что нового
скачать
Автор: Dima555555
Дата сообщения: 23.07.2007 14:14
Inno Setup 5.1.13

http://www.shareonall.com/isetup-5.1.13_afut.exe
Автор: boss911
Дата сообщения: 23.07.2007 23:02
Innounp 0.19 уже не подходит к IS 5.1.13

Прийдеться подождать!

Ребята, плиз, обьсните в кратце, что такого нового в версии 5.1.13, я очень плохо знаю английский. В частности меня очень интересует, что такого намудрили в:

Цитата:
Components/tasks-related changes
Автор: Genri
Дата сообщения: 24.07.2007 01:19
boss911 -- ну, работая с инно, на таком-то уровне знать имхо надо. По крайней мере со словарем.
[more=Вольный перевод изменений вер.5.1.13]
5.1.13 (2007-07-22)
Добавлен новый lzma/ultra64 уровень сжатия. То же, что и lzma/ultra, но использует вдвое больший словарь (64 Мбайта).
Добавлена новая директива SetupLogging в секции [Setup]. Если установлено в yes, установщик будет создавать лог (аналогично параметру /LOG в командной строке).
Добавлена новая директива AppSupportPhone в секции [Setup].
Добавлен новый флаг solidbreak в секции [Files].
Добавлен новый параметр Verb в секциях [Run] и [UninstallRun]. При использовании с флагом shellexec, определяет действие, которое будет выполнено с файлом.
При использовании флага shellexec в секциях [Run] и [UninstallRun], теперь будет использоваться действие по умолчанию, определенное для файлов данного типа, вместо жестко закодированного ранее действия "открыть". (В случае необходимости, Вы можете изменить это, используя параметр Verb.)
Установщик теперь поддерживает параметр /TYPE, который изменяет установленный по умолчанию тип установки.
Изменения, связанные с параметрами /COMPONENTS и /TASKS:

/COMPONENTS и /TASKS: Установка родительского компонента/задачи, автоматически не устанавливает дочерние компоненты/задачи. При необходимости использования прежнего режима, необходимо указать в качестве префикса родительского компонента/задачи символ "*", или перечислить каждый дочерний компонент/задачу индивидуально.
/COMPONENTS теперь возможно принудительно снять выделение дочернего компонента включением в его название в списке префикса "!". (в параметре /TASKS это поддерживалось и ранее.)
/COMPONENTS теперь игнорируется, если не определен тип по выбору пользователя.
/SAVEINF теперь сохраняет выбранный тип установки в INF-файл. Ранее, при использовании /LOADINF всегда загружался тип по выбору пользователя.
/SAVEINF теперь сохраняет выбранные задачи в INF-файл.
Если один из параметров MinVersion/OnlyBelowVersion/Languages/Check/Components скрывает родительский компонент/задачу, дочерние элементы также будут теперь скрыты. (Ранее было необходимо включить те же самые условия на каждом дочернем элементе для того, чтобы скрыть вместе с родительским элементом.)
Исправлено: добавленные новые дочерние компоненты/задачи при новой установке, всегда по умолчанию выбраны, если родительский компонент/задача при предыдущей инсталляции был выбран.
Исправлено: при использовании параметра /LOADINF, выбираются дочерние компоненты, которые не были выбраны в процессе начальной установки.
Исправлено: при использовании параметра /COMPONENTS, больше нет необходимости перечислять компоненты с флагом fixed для их выбора.
Изменения в Pascal Scripting:

FindFirst/FindNext: в структуру TFindRec добавлены поля CreationTime, LastAccessTime, LastWriteTime, AlternateName.
TInputFileWizardPage: Добавлено новое свойство IsSaveButton. Установка свойства может использоваться для открытия по нажатию кнопки диалогового окна "Сохранить Как", вместо установленного по умолчанию диалогового окна "Открыть".
TNewCheckListBox: установка свойства Checked[] в True, больше не будет автоматически отмечать дочерние элементы. Теперь, для выполнения данного действия, необходимо вызвать новый метод CheckItem с установленным в coCheckWithChildren параметром AOperation.
ParamStr/ParamCount: пустые параметры ("") больше не пропускаются.
/LOG: сохраненное время теперь включает миллисекунды.
Изменения интегрированной среды разработки компилятора:
В течении компиляции, строка состояния теперь показывает предполагаемый остаток времени и скорость сжатия ( Кб/сек )
Комбинация горячих клавиш для Edit | Redo - теперь Ctrl+Y. Предыдущая комбинация (Shift+Ctrl+Z) работает также.
Исправлено: В секции [INI], если Имя файла было пустым, флаги uninsdelete* фактически ничего не удаляли.
Версия программы деинсталляции - 51.47.0.0.
Небольшие улучшения.
[/more]
Автор: boss911
Дата сообщения: 24.07.2007 02:02
Genri

Цитата:
ну, работая с инно, на таком-то уровне знать имхо надо.

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

Большое спасибо за чудесный перевод, но я чего так и не вкурил, что там они сделали по поводу изменений связанных с параметрами /COMPONENTS и /TASKS, уж слишком мудрено написано, хотя бы примеры дали! Блин, опять прийдеться лезть в английский хелп! Надеюсь, что трудностей с этими ключами у меня не возникнут!

Так это получается, что русский хелп уже требует обновления с текущими изменениями?
Что скажет BagIra для таких неутов как я в английском?
Автор: Genri
Дата сообщения: 24.07.2007 02:35
boss911 -- а ты используешь запуск инсталлятора с параметрами ? Если нет, то это тебе и не надо. Или возьми файл Components.iss из примеров в поставке инно, скомпили и запусти - выбраны три компонента (програмные файлы, хелп и ридми). А теперь запусти с параметром :
/COMPONENTS="program,readme"
и посмотри, что поменялось на странице компонентов. Ну и так далее (пробуй параметры /SAVEINF="c:\temp\filename.inf" и /LOADINF="c:\temp\filename.inf" )

hint! Параметры можно прописать в меню Run -> Parameters...
Автор: boss911
Дата сообщения: 24.07.2007 03:34
Genri

Цитата:
а ты используешь запуск инсталлятора с параметрами ?

Да, использую и очень активно!

Как только выйдет Innounp под 5.1.13, тогда и обновлюсь, сейчас для меня нет смылса, потом буду смотреть, что поменялось с параметрами запуска инсталла!
Автор: maxdddca123
Дата сообщения: 24.07.2007 08:59
Вообще есть ли возможность связаться с bagira для обновления хелпа ? Он ведь уже очень давно не обновлялся !
Автор: Chuvakstepan
Дата сообщения: 24.07.2007 10:56
Возможно, вопрос немного не в тему, но все-равно опытные программисты знают.
Как переделать из Inno Setup функцию в Delphi; Допустим эту:


Цитата:
[Files]
Source: get_hw_caps.dll; Flags: dontcopy noencryption

[Code]
function GetVideoCardName(): PChar;
external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

Label1.Caption:=GetVideoCardName;


Заранее спасибо за ответ
Автор: Genri
Дата сообщения: 24.07.2007 12:23
Я не програмер, тем более не опытный, но имхо примерно так :

function GetVideoCardName (): PChar;
var
fName: function(): PChar; stdcall;
Handle: HWND;
dllName: string;
pdllName: PChar;
begin
try
dllName:= 'get_hw_caps.dll';
pdllName:= PChar(dllName);

Handle:= LoadLibrary(pdllName);
@fName := GetProcAddress(Handle, 'hwc_GetVideoCardName');
Result:= fName();
except
ShowMessage('Cannot load get_hw_caps.dll !');
end; { try }
end;

Вызов также как и в инно :

Label1.Caption:=GetVideoCardName;

а может и так :

Label1.Caption:= string(GetVideoCardName);
Автор: Chuvakstepan
Дата сообщения: 24.07.2007 12:32
Genri
Большое спасибо! выручил!
Автор: Genri
Дата сообщения: 24.07.2007 12:44
Chuvakstepan -- хм, любопытно. и что, работает ? с путями только разберись. и желательно Handle проверять на 0 после LoadLibrary. имхо.
Автор: Chuvakstepan
Дата сообщения: 24.07.2007 12:57
Работает, отлично работает. Только эта функция "PChar" а как быть с функциями "Integer"? а то выставляю вторую функцию на определение оперативной памяти - ничего невыходит
Написал всё в личку
Автор: Genri
Дата сообщения: 24.07.2007 13:02
Chuvakstepan -- в личку. все в личку. включая все примеры на инно, которые надо переделать.
Автор: omals
Дата сообщения: 24.07.2007 13:38
Привет всем!
у меня есть свободное место на хостинге (хостинг на ягуаре jaguarpc.com)
место свободное есть и скорость там тоже нормальная
и для всех (и для себя в том числе) хотелось бы сделать шото полезное
предлагаю
мне присылаете в личку или по мылу
а) архив со своим (или чужим) скриптом, который возможно будет полезен для всех;
б) краткое описание скрипта (в описании желательно указать ключевые слова для поиска);
я у себя на сервере это выкладываю, а тут будет линк (если админ позволит) на мою страничку
обязуюсь выкладывать в течении суток (ну в крайнем случає 2-3 суток , если праздники или ешо какие-то непредвиденные обстоятельства)

стоит всем обсудить идею
или если уж кому-то хочется (может) написать php-код для такой странички
на протяжении 7-10 дней такую страничку смогу сделать (сейчас нет свободного времени)
но до того времени нужно чтоб желающие прислали свои архивы (хотя б несколько)
если идея не стоит внимания, то так сразу и скажите
Автор: maxdddca123
Дата сообщения: 24.07.2007 13:39
Genri

Цитата:
Я не програмер, тем более не опытный, но имхо примерно так :

Всё прибедняетесь прибедняетесь, а в инно как царь и Бог разбираетесь.... ВО всяком случае лучше всех присутствующих на мой взгляд)))
Автор: Genri
Дата сообщения: 24.07.2007 13:46
maxdddca123 -- "Ватсон, Вы делаете совершенно неверные выводы!" ((С)Шерлок Холмс и Доктор Ватсон - Знакомство)
Автор: Gerrr
Дата сообщения: 24.07.2007 16:23
Подскажите пожалуйста как в разделе "code" можно выхватить значения отставок, выбранных на странице формируемой в "components"
Автор: Genri
Дата сообщения: 24.07.2007 16:31
Gerrr -- а что такое "отставки" ? Если имеются ввиду выбранные компоненты, то смотри в хелпе :
function WizardSelectedComponents(const Descriptions: Boolean): String;
- возвращает строку, состоящую из разделенных запятыми именами компонентов или их описаний (если Descriptions:= True)

или :
function IsComponentSelected(const Components: String): Boolean;
- проверка выбран ли конкретный компонент.
Автор: boss911
Дата сообщения: 24.07.2007 18:57
maxdddca123

Цитата:
Вообще есть ли возможность связаться с bagira для обновления хелпа ?

Ну так обратись к ему в ПМ с просьбой! И будут тебе все благодарны, я в первую очередь!
Автор: maxdddca123
Дата сообщения: 25.07.2007 10:32
Как посчитать такую штуку в инно ? Пишет синтаксическая ошибка.
с:=с*(k+1)/(k+2);
Автор: Genri
Дата сообщения: 25.07.2007 11:22
maxdddca123
Цитата:
с:=с*(k+1)/(k+2);

c:=c*(k+1)/(k+2);

скопируй в свой код эту строку и попробуй понять в чем разница

Добавлено:
... в смысле, почему одна работает, а другая нет.
Автор: Gerrr
Дата сообщения: 25.07.2007 11:29
Дайте догадаюсь одна из букв - русская )
Автор: Genri
Дата сообщения: 25.07.2007 11:41
Gerrr -- ответ неверный. обе 'с' - русские.


Добавлено:
... именно поэтому не рекомендуется обозначать переменные одной буквой, за исключением локальной переменной, используемой в цикле (чаще используется 'i' )
Автор: NightW0lf
Дата сообщения: 25.07.2007 21:06
В новом Inno Setup QuickStart Pack v5.1.13 выскакивает ошибка при сборке этого скрипта:
[more=Вот скрипт]

Код:
[Setup]
;Название программы - инсталлятора, а также заголовок инсталлятора, (пожеланию можно версию указать):
AppName=about.button
;Версия программы - инсталлятора, (пожеланию можно указать - название + версию):
AppVerName=about.button
;Директория установки для программы - инсталлятора:
DefaultDirName={pf}\about.button
;Название выходного файла компилятора:
OutputBaseFilename=about.button


[Code]
type
TFileTime = record
lowdatatime: longint;
highdatatime: longint;
end;

TSystemTime = record //Здесь ошибка Duplicate identifier 'TFileTime'
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;

const
MB_ICONINFORMATION = $40;
MB_ICONEXCLAMATION = $30;
MB_ICONQUESTION = $20;
MB_ICONSTOP = $10;
MB_ICONNONE = $0;

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

function FileTimeToSystemTime(var tftm: TFileTime; var systm: TSystemTime): boolean;
external 'FileTimeToSystemTime@kernel32.dll stdcall';

function FileTimeToLocalFileTime(utct: TFileTime; var loct: TFileTime): boolean;
external 'FileTimeToLocalFileTime@kernel32.dll stdcall';

function GetDateFormat(Locale: Integer; dwFlags: LongInt;
var lpDate: TSystemTime; lpFormat: PChar; lpDateStr: string;
cchDate: Integer): Integer; external
'GetDateFormatA@kernel32.dll';

function GetTimeFormat(Locale: Integer; dwFlags: LongInt;
var
lpTime: TSystemTime; lpFormat: PChar; lpTimeStr: string;
cchDate: Integer): Integer; external
'GetTimeFormatA@kernel32.dll';


var
strFile: string;
strCreTime: string;
strModTime: string;
strAccessTime: string;


function FormattedTime(t: TSystemTime): string;
var
s, fmt: string;
begin
fmt := StringOfChar(' ', 64);
GetDateFormat(0, 0, t, 'yyyy.MM.dd', fmt, 63);
fmt := CastIntegerToString(CastStringToInteger(fmt));

s := '' + fmt;

fmt := StringOfChar(' ', 64);
GetTimeFormat(0, 0, t, 'hh:mm:ss tt', fmt, 63);
fmt := CastIntegerToString(CastStringToInteger(fmt));

s := s + ' at ' + fmt;

Result := s;
end;


function GetFileSysTime(nomef: string; var stime: string; idx: Integer): TSystemTime;
var
fs: TFileStream;
risul: TSystemTime;
creat, access, write, local: TFileTime;
begin
fs := TFileStream.Create(nomef, fmOpenRead);
GetFileTime(fs.handle, creat, access, write);
fs.Free;
case idx of
1: FileTimeToLocalFileTime(creat, local);
2: FileTimeToLocalFileTime(access, local);
3: FileTimeToLocalFileTime(write, local);
end;
FileTimeToSystemTime(local, risul);
stime := FormattedTime(risul);
Result := risul;
end;


procedure AboutButtonOnClick(Sender: TObject);
var
hWnd: Integer;
begin
hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
MessageBox(hWnd, '' +
+#13 'Released: ' + strCreTime, 'Инфо', MB_OK or $40);
end;


procedure InitializeWizard();
var
Width, Height, I: Integer;
AboutButton, CancelButton: TButton;
filename, s: string;
t: TSystemTime;
begin
filename := ExpandConstant('{srcexe}');
strFile := filename;
t := GetFileSysTime(filename, s, 1);
strCreTime := s;
t := GetFileSysTime(filename, s, 2);
strAccessTime := s;
t := GetFileSysTime(filename, s, 3);
strModTime := s;

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 := 'About';
AboutButton.ShowHint := True
AboutButton.Hint := 'О программе'
AboutButton.OnClick := @AboutButtonOnClick;
AboutButton.Parent := WizardForm;
AboutButton.Cursor := crHand;
//AboutButton.Font.Style := AboutButton.Font.Style + [fsUnderline];
end;
Автор: Genri
Дата сообщения: 25.07.2007 21:16
NightW0lf -- в новой версии тип TFileTime уже изначально определен (посмотри в хелпе описание функции FindFirst - там есть определение TFileTime).

Для работоспособности указанного скрипта, достаточно убрать определение типа TFileTime. Оно теперь не нужно.

Автор: Chanka
Дата сообщения: 26.07.2007 09:39
Genri,

А можно ли переделать твой скрипт удаления файлов
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235&start=991&limit=1&m=1#1
чтобы он был вот так
http://img171.imageshack.us/my.php?image=innogi3.jpg
Автор: Genri
Дата сообщения: 26.07.2007 11:26
Chanka -- если это запрос моего разрешения, то я не возражаю - можешь переделывать Если речь идет о дизайне, то каких-либо сложностей я не вижу. Разве что больше компонентов - больше кода.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

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


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