PDA

Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [65] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Bond01
14-02-2010, 18:54
GrizzlyMK, какой то странный скрипт, разве это inno?

GrizzlyMK
14-02-2010, 18:58
Если-б был он не Inno то я бы обратился в другой форум ))

kro44i
15-02-2010, 02:56
Мне кто-нибудь ответит на мой вопрос?Подскажите скрипт, чтобы был один установочный файл (Setup.exe+.arc).»

Merlin_jr
15-02-2010, 05:04
Приветствую.

Подскажите как средствами Inno Setup

определить версию ЕХЕ-файла лежащего в каталоге назначения
вытащить первую строку из текстового файла и сравнить её значение с "эталоном".

Serega
15-02-2010, 12:10
Подскажите как средствами Inno Setup »

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
function GetFileVersion(const FileName: string): string;
// выводит версию файла в виде строки
var
Version: string;
begin
Result:= 'не определена.';
if GetVersionNumbersString(FileName, Version) then
Result:= Version;
end;

function SelectFileName: string;
// получим имя выбранного пользователем файла
var
FileName: string;
begin
FileName:= '';
GetOpenFileName('Выберите файл для обработки...',
FileName,
ExtractFilePath(ExpandConstant('srcexe')),
'Текстовый документ (*.txt)|*.txt|Все файлы|*.*',
'txt');
Result:= FileName;
end;

function ReadFileName(const FileName, SearchString: string): string;
// получим искомую строку
var
S: TArrayOfString;
i: Integer;
begin
Result:= '';
if not FileExists(FileName) then Exit; // если файла нет, выходим
LoadStringsFromFile(FileName, S); // загружаем файл
for i:= 0 to GetArrayLength(S)-1 do // пробежимся по строкам
if Pos(SearchString, S[i]) > 0 then
begin
Result:= S[i];
Exit;
end;
end;

function InitializeSetup(): Boolean;
var
Search, FileName: string;
begin
// получение версии файла
FileName:= ExpandConstant('{pf}\Inno Setup 5\Examples\MyProg.exe');
MsgBox('Версия ' + ExtractFileName(FileName) + ' - ' + GetFileVersion(FileName), mbInformation, MB_OK);

// обработка текстового файла
Search:= ReadFileName(SelectFileName, 'карандаш');
if Search <> '' then
MsgBox(Search, mbInformation, MB_OK);
end;


fast батут
begin go easter черный
mother happy транквилизатор сигнализация green суспензия diablo rocet
карандаш пистолет автомат
kaspersky fusion черенок
столб application

svensoft
15-02-2010, 19:35
Вчера посредством inno сделал своей милой электронный подарок. Если кому интересно данное произведение, вот тут ( http://rghost.ru/990975/private/8c2086d4f1511c04c0bbe2359cc24d5d) можно взять (ссылка актуальна 3 дня)

BooSla
16-02-2010, 07:58
Подскажите, пожалуйста, как отключить сообщение о завершении деинсталляции (в секции [messages] оно называется UninstalledAll). То, которое "Программа %1 была успешно удалена с Вашего компьютера". Спасибо!

Vengeance
16-02-2010, 12:07
[Setup]
SourceDir=.
OutputDir=Setup
AppName=Half-Life Games
AppVerName=Half-Life Games
AppVersion=Half-Life Games
DefaultDirName={pf}\C \Games\Half-Life
DefaultGroupName=Half-Life Games
AllowNoIcons=yes
OutputBaseFilename=setup
WindowVisible=no
WindowShowCaption=no
WindowResizable=no
Compression=lzma/normal
DiskSpanning=yes
DiskSliceSize=2100000000
SlicesPerDisk=1

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

[Types]
Name: "full"; Description: "Полная установка"
Name: "custom"; Description: "Выборочная установка"; Flags: iscustom

[Components]
Name: g0; Description: Half-Life; Types: full custom; Flags: disablenouninstallwarning checkablealone
Name: g1; Description: Ricochet; Types: full custom; Flags: disablenouninstallwarning checkablealone

[Files]

Source: "C:\Documents and Settings\Админ\Мои документы\Downloads\s\zepsa\*"; DestDir: "{app}\half-life"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension; Components: g0

Source: "C:\Documents and Settings\Админ\Мои документы\Downloads\s\ricochet\*"; DestDir: "{app}\half-life\ricochet"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension; Components: g1

[Icons]
Name: "{group}\{cm:UninstallProgram,Half-Life Games}"; Filename: "{uninstallexe}"

[UninstallDelete]
Type: filesandordirs; Name: "{app}"


Как сделать чтобы компонент g0 нельзя было удалять? А то просто без g0, g1 файлы не запустятся. ?

Merlin_jr
16-02-2010, 13:28
Цитата Merlin_jr:
Подскажите как средствами Inno Setup »
Пример скрипта
Пример текстового файла
С версией все получилось, а вот с текстом из файла не совсем понятно :sorry: забыл уже программирование :cry:

Уточню из файла следующей структуры:
15V44

надо вытащить только текст, что в начале.

UPD
Как правильно полностью завершить работу инсталлятора по событию. Точнее какой функцией или оператором.

Habetdin
16-02-2010, 13:48
Vengeance, Как сделать чтобы компонент g0 нельзя было удалять? »
[Components]
Name: g0; Description: Half-Life; Flags: fixed disablenouninstallwarning; Types: custom full

Serega
16-02-2010, 20:52
как отключить сообщение о завершении деинсталляции »
Стандартными средствами - никак (по крайней мере, мне не известно), а если перехватывать через поиск окна и скрывать его, то на долю секунды сообщение всё равно моргает.

надо вытащить только текст, что в начале. »
Так укажите в ReadFileName(имя файла, '15V44'), результат будет - строка. Потом работаете с этой строкой.

beaverBox
17-02-2010, 09:21
Добрый день, знатоки инсталлов :)
Только начал осваиваться с Inno, сразу вопрос: ограничено ли количество диалогов? И как переходить от одного к другому?
Поясняю. В процессе установки пользователь должен ввести n-ое количество параметров, исходя из которых выполняются определенные действия (создание БД, модификация, и т.д., не суть). Использую инструкции CreateInputQueryPage, CreateInputOptionPage и т.д.
Всё делаю в InitializeWizard.
Не могу понять, как переходить от окна к окну... Я так понимаю, первый параметр AfterID - это идентификатор диалога, который появится по "Далее".
Помогите новичку. Горю по срокам.
Спасибо.

South
17-02-2010, 10:06
beaverBox, AfterID - идентификатор страницы после которой появится созданная тобой страница.
т.е. если напишешь
MyPage:=CreateInputQueryPage(wpWelcome,'caption','description','subcaption');

, то MyPage появится после страницы приветствия

beaverBox
17-02-2010, 10:08
Да, раскурил много форумов, вроде так.
Сейчас попробую пошаманить.
South, спасибо!

Мозг взрывается.
Как мне вставить страничку лицензии в "определенное" место?
И можно ли использовать значение AfterID в пределах диапазона Integer? (например 100, 500...).
Извините за нубство, просто я не дельфист/паскалевед :)

Погодите, вроде работает.
:)

beaverBox
17-02-2010, 10:45
Вопрос по GUI.
Есть ли стандартное средство для создания в одном окне диалога поля выбора UNC-пути с кнопкой "Обзор" и других полей?
Т.е. объединение в одном окне диалога "разношерстных" компонентов.

Merlin_jr
17-02-2010, 15:22
Цитата Merlin_jr:
надо вытащить только текст, что в начале. »
Так укажите в ReadFileName(имя файла, '15V44'), результат будет - строка. Потом работаете с этой строкой. »
Так дело в том, что этот самый текст неизвестен и соответственно предложенный вариант не совсем подходит.
Структура файла такая какую указал.

beaverBox
18-02-2010, 08:08
Сунул файлы инсталлятора Фаерберда:
[Files]
Source: Firebird-2.1.3.18185_0_Win32.exe; Flags: dontcopy
Source: fbinst.inf; Flags: dontcopy
В function NextButtonClick() делаю:
if CurPageID = FirebirdQueryPage.ID then begin
if FirebirdQueryPage.SelectedValueIndex = 0 then begin
if Exec(ExpandConstant('{tmp}\Firebird-2.1.3.18185_0_Win32.exe'), ' /loadinf="{tmp}\fbinst.inf" /silent', '', SW_SHOW, ewWaitUntilTerminated, resCodeFB) then begin
if not (resCodeFB = 0) then begin
MsgBox('Бла-бла, типа ошибка', mbError, MB_OK);
Result := false;
end;
end;
end;
end;
Код не отрабатывает, в дебаге просто пролетает мимо.
Что не так?

beaverBox
18-02-2010, 08:44
Решилось
ExtractTemporaryFile('Firebird-2.1.3.18185_0_Win32.exe');
ExtractTemporaryFile('fbinst.inf');

beaverBox
18-02-2010, 12:39
Выставил
Encryption=yes
Password=blabla
Теперь инсталлятор ругается ошибкой Cannot read an encrypted file before the key has been set..
Как запустить закриптованный инсталлятор?

beaverBox
18-02-2010, 13:37
Нашел решение: в диалоге wpPassword в textBox установить значение пароля, диалог пользователю не показывать.
P.S.: монолог какой-то получается :)




© OSzone.net 2001-2012