Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
Sotonisto, а вот теперь про records.inf. После "пробной" распаковки архивов ты наверное заметил этот файл в папке.
Для активации введи в начале скрипта #define records и перекомпилируй. Вуаля, проценты и прогресс бар не шутят. Если будешь подсовывать другие архивы то закомментируй просто #define records и переустанови "пробный" раз игру. Т.е. перераспакуй все архивы.
P.S. Пример был из справки...
Dark_Delphin
07-11-2011, 00:49
Всем привет!)
Подскажите как прикрутить свой (которого Не у кого нет) шрифт у инсаталлятор?
Есть пример?
Заранее спасибо.!
ntrx, к сожалению использование этого кода приводит в неправильному запуску инсталлятора. Проси у Shegorat правильную библиотеку для вывода шрифта, мне он её не даёт.
P. S. Возможно придётся раскошелиться...
Gnom_aka_Lexander
07-11-2011, 10:00
Я имел в виду этот момент »
Понял. тогда так:
#ifdef UNICODE
#define A "W"
#define B "Wide"
#else
#define A "A"
#define B "Ansi"
#endif
function CopyFile(ExistingFile,NewFile: P{#B}Char; bFailIfExists: Boolean): Boolean;
external 'CopyFile{#A}@Kernel32.dll stdcall'; ,будет более правильно, спасибо, что указал :)
... оставляем рабочим вариант уважаемого serg aka lain. оказалось, что инно не знает, что такое PWideChar. так что для юникода, применяем String.
Gugle, когда именно надо кинуть установщик на финиш? »
Извиняюсь за долгое молчание.
После инициализации своих окон в процедуре
PROCEDURE InitializeWizard;
проверяется наличие установленного приложения на ОС пользователя.
Проверка делается функцией взятой отсюда (http://www.vincenzo.net/isxkb/index.php?title=Upgrades). Если ПО установлено, то сравниваются версия, которая ставится (V1) и версия, которая установлена (V2).
Если V1 <= V2 то пользователю задается вопрос, хочет ли он продолжить и при отрицательном ответе надо отправить пользователя на страницу "Финиш".
З.Ы.
А прочитать список файлов в папке как нить можно?
Gnom_aka_Lexander
07-11-2011, 20:24
А прочитать список файлов в папке как нить можно? »
можно:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[*Code]
var
ISCustomPage1: TWizardPage;
Label1: TLabel;
NewListBox1: TNewListBox;
NewButton1: TNewButton;
NewEdit1: TNewEdit;
procedure FindFile(Dir: string);
var
SR: TFindRec;
FindRes: Boolean;
begin
FindRes := FindFirst(Dir + '*.*', SR);
while FindRes do
begin
if ((SR.Attributes and $00000010) = $00000010) and
((SR.Name = '.') or (SR.Name = '..')) then
begin
FindRes := FindNext(SR);
Continue;
end;
// если найден каталог, то
if ((SR.Attributes and $00000010) = $00000010) then
begin
// входим в процедуру поиска с параметрами текущего каталога +
// каталог, что мы нашли
FindFile(Dir + SR.Name + '\');
FindRes := FindNext(SR);
// после осмотра вложенного каталога мы продолжаем поиск
// в этом каталоге
Continue; // продолжить цикл
end;
NewListBox1.Items.Add(SR.Name);
FindRes := FindNext(SR);
end;
FindClose(SR);
end;
procedure NewButton1Click(Sender: TObject);
begin
NewListBox1.Clear; // очистка списка файлов
FindFile(NewEdit1.Text); // поиск файлов с начальными условиями, заданных в NewEdit1
end;
procedure InitializeWizard();
begin
{ Creates custom wizard page }
ISCustomPage1 := CreateCustomPage(wpWelcome, 'Поиск', 'Здесь поиск файлов в заданном каталоге');
{ ISCustomPage1 }
with ISCustomPage1.Surface do
begin
Name := 'ISCustomPage1';
end;
{ Label1 }
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Name := 'Label1';
Parent := ISCustomPage1.Surface;
Caption := 'Введите адрес поиска';
Transparent := False;
Left := ScaleX(8);
Top := ScaleY(192);
Width := ScaleX(114);
Height := ScaleY(13);
end;
{ NewListBox1 }
NewListBox1 := TNewListBox.Create(WizardForm);
with NewListBox1 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(417);
Height := ScaleY(185);
ItemHeight := 13;
ItemIndex := -1;
end;
{ NewButton1 }
NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(342);
Top := ScaleY(208);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Искать';
OnClick := @NewButton1Click;
end;
{ NewEdit1 }
NewEdit1 := TNewEdit.Create(WizardForm);
with NewEdit1 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(0);
Top := ScaleY(212);
Width := ScaleX(329);
Height := ScaleY(21);
Text := ExpandConstant('{pf}\Inno Setup 5\');
end;
end;
Здравствуйте, помогите плиз. Я полный нуб в этой проге и 1 день пытаюсь в ней чтото сделать.
~2 часа себе мозг выносил к прикручиванию 7zip к моему шаблону, но так и не получилось.
Прикрутите плиз к моему шаблону (http://www.mediafire.com/?rcy26qqpktx7nva), напишите как архивы кидать в инсталлер (чтобы они распаковывались от инсталлера, но были отдельным файлом).
И еще вопрос как сделать (а лучше это тоже прикрутить к шаблону) чтобы если пользователь выбирает существующую папку, то все файлы в этой папки перемещались в *эта папка*\backup.
Если подобный вопрос уже был, сорьте, я убъюсь если буду читать ~400 страниц в 3 темах.
Gnom_aka_Lexander
07-11-2011, 20:43
~2 часа себе мозг выносил к прикручиванию 7zip »
Можно объяснить смысл сего действа? Инно сама умеет использовать сжатие lzma2 и ultra64 ировни. в том числе непрерывное сжатие не хуже 7z, в общем, что и неудивительно, поскольку 7zip алгоритмы там и работают. Плюс дополнительные настройки сжатия можно найти в справке к инно. Тоесть, прикручивать 7zip к 7zip-у - полный маразм, в моем понимании.Если подобный вопрос уже был, сорьте, я убъюсь если буду читать ~400 страниц в 3 темах. »
Бекап фалов - пять минут поиска в гугле. Ссылка (http://forum.ru-board.com/topic.cgi?forum=5&topic=30413&start=2274&limit=1&m=1#1)
Здравствуйте, помогите плиз. Я полный нуб в этой проге и 1 день пытаюсь в ней чтото сделать.
~2 часа себе мозг выносил к прикручиванию 7zip к моему шаблону, но так и не получилось.
Прикрутите плиз к моему шаблону (http://www.mediafire.com/?rcy26qqpktx7nva), напишите как архивы кидать в инсталлер (чтобы они распаковывались от инсталлера, но были отдельным файлом).
И еще вопрос как сделать (а лучше это тоже прикрутить к шаблону) чтобы если пользователь выбирает существующую папку, то все файлы в этой папки перемещались в *эта папка*\backup.
Если подобный вопрос уже был, сорьте, я убъюсь если буду читать ~400 страниц в 3 темах. »
GameScript Generator (http://rghost.ru/28966711) тебе в помощь
Необходимо создать новое диалоговое окно,которое будет спрашивать: на какой сервер ставить программу, сервер базы данных, логин и пароль для доступа к серверу базы данных. все эти переменные необходимо записать в нужном месте. Я первый раз работаю с Inno setupом,подскажите как это сделать,пожалуйста
Цитата krutx:
~2 часа себе мозг выносил к прикручиванию 7zip »
Можно объяснить смысл сего действа? Инно сама умеет использовать сжатие lzma2 и ultra64 ировни. в том числе непрерывное сжатие не хуже 7z, в общем, что и неудивительно, поскольку 7zip алгоритмы там и работают. Плюс дополнительные настройки сжатия можно найти в справке к инно. Тоесть, прикручивать 7zip к 7zip-у - полный маразм, в моем понимании.
Цитата krutx:
Если подобный вопрос уже был, сорьте, я убъюсь если буду читать ~400 страниц в 3 темах. »
Бекап фалов - пять минут поиска в гугле. Ссылка »
на счет бекапа я спросил потому что уже задрался с решением 1вой проблемы.
Спс
Такгда еще 2 вопроса
1 как сделать чтобы инсталлятор бился на несколько частей?
2 файлы запакованные в инсталлятор в exe тоже хранятся, или в отдельных архивах?
Я немного не понял тот скрипт (а точнее почти полностью не понял)
А также вообще не понял как бекап прикрутить к скрипту, который я использую.
Единственное что я понял (хотя могу ошибаться) он делает бекап, но не удаляет файлы в папке.
А мне нужно чтобы в папке куда пользователь указал устанавливать все файлы удалялись, перед этим бекапясь.
krutx, пример для разбивки на DVD 4.3 гб
[Setup]
DiskSpanning=yes //разбивать на части
DiskSliceSize=1555000000 //размер части в байтах
SlicesPerDisk=3 //кол-во частей
подскажите код, для замены страници приветсвия на фото и добовление прозрачности (для Вин 7) с кликабельным логотипом слева-внизу
valyok666
08-11-2011, 14:45
aXmeD, поточнее изложи что надо)
valyok666, вот http://imageshack.us/photo/my-images/406/911ecfcb9b.jpg/
видите прозрачность и лого, вот оно нужно, чёб можно было жмакать на лого
и вместо экрана приветствия с текстом была фотография
valyok666
08-11-2011, 15:21
aXmeD, вы пишите по русски=)
Вот лого W1n7 (http://rghost.ru/29060121)
Еще вопрос появился: как делать проверку процесара (в системных стребованиях) 2х и болие ядерных?
#define Processor "3000"
тут указывается частота процессора, и я так понимаю только для 1 ядра.
krutx, библиотека вроде бы на это не способна.
krutx,
isUtils.dll v1.00 [18.08.2010] от ExpeditorR (http://rghost.ru/2373114)
Библиотека для проверки системных требований. Ключевой особенностью isUtils.dll является то, что вы может написав всего пару-тройку строчек кода выводить всю информацию прямо в окно Inno Setup, при этом возможно использование любых цветов, размеров и шрифтов и всё это займёт всего 4-5 строк кода. Ну, и конечно же имеются функции для ручного вывода и проверки системных требований.
В архиве имеется файл Readme.rtf с подробным описанием всех функций, а так же два примера - автоматической и ручной проверки.
HWREQ v 1.11 от Shegorat [20.03.2011] (http://rghost.ru/25328111)
HWREQ - Модуль системных требований для Inno Setup.
Создает страницу системных требований, при этом вам потребуется прописать всего несколько функций.
В архиве есть несколько примеров использования.
Список изменений:
Относительно v.1.0:
Полностью переписан скрипт.
Теперь не нужна библиотека get_hw_caps.dll
Доброго времени суток!
Необходим пример чтения xml файла. Объяснюсь. Я видел пример, как писать и/или заменять данные в xml, но никак не могу разобраться, как можно пробежаться по дереву и вытащить необходимые данные.
Пример xml:
<root>
---<element_1>
------<element_11>
------<element_12>
---------<element_121 attr1='121.1' attr1='121.2' attr1='121.3'>
---------<element_122 attr1='122.1' attr1='122.2' attr1='122.3'>
---------<element_123 attr1='123.1' attr1='123.2' attr1='123.3'>
------<element_13>
---<element_2>
------<element_21>
------<element_22>
------<element_23>
---<element_3>
</root>
Что понятно.
xmlParser := CreateOleObject('Microsoft.XMLDOM'); // используем dom
xmlParser.load(fileName); // Загрузили файл
rootElement:= xmlParser.getElementsByTagName('element_12'); // Вытащили все элементы с именем element_12
Что хочется.
1. Вытащить список елементов. После метода xmlParser.getElementsByTagName('element_12'); получить список имен элементов входящих в "element_12". Т.е.
element_121
element_122
element_123
Метод, который бы это сделал я не нашел.
2. Вытащить список атрибутов. Т.е. я получил список элементов по имени с помощью метода xmlParser.getElementsByTagName('element_122');, если использовать xml выше, то элемент будет один, но возможно их будет и несколько, а потом получить список
attr1
attr2
attr3
Опять таки я не понимаю, как вытащить названия самих атрибутов.
При переборе названий хотелось бы иметь метод получения значение атрибута. Его я то же не смог найти.
krutx,
isUtils.dll v1.00 [18.08.2010] от ExpeditorR
Библиотека для проверки системных требований. Ключевой особенностью isUtils.dll является то, что вы может написав всего пару-тройку строчек кода выводить всю информацию прямо в окно Inno Setup, при этом возможно использование любых цветов, размеров и шрифтов и всё это займёт всего 4-5 строк кода. Ну, и конечно же имеются функции для ручного вывода и проверки системных требований.
В архиве имеется файл Readme.rtf с подробным описанием всех функций, а так же два примера - автоматической и ручной проверки.
HWREQ v 1.11 от Shegorat [20.03.2011]
HWREQ - Модуль системных требований для Inno Setup.
Создает страницу системных требований, при этом вам потребуется прописать всего несколько функций.
В архиве есть несколько примеров использования.
Список изменений:
Относительно v.1.0:
Полностью переписан скрипт.
Теперь не нужна библиотека get_hw_caps.dll »
у меня сама библиотека есть, я хз как записать проверку многоядерного проца.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.