Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
GrizzlyMK, какой то странный скрипт, разве это inno?
GrizzlyMK
14-02-2010, 18:58
Если-б был он не Inno то я бы обратился в другой форум ))
Мне кто-нибудь ответит на мой вопрос?Подскажите скрипт, чтобы был один установочный файл (Setup.exe+.arc).»
Merlin_jr
15-02-2010, 05:04
Приветствую.
Подскажите как средствами Inno Setup
определить версию ЕХЕ-файла лежащего в каталоге назначения
вытащить первую строку из текстового файла и сравнить её значение с "эталоном".
Подскажите как средствами 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 дня)
Подскажите, пожалуйста, как отключить сообщение о завершении деинсталляции (в секции [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
как отключить сообщение о завершении деинсталляции »
Стандартными средствами - никак (по крайней мере, мне не известно), а если перехватывать через поиск окна и скрывать его, то на долю секунды сообщение всё равно моргает.
надо вытащить только текст, что в начале. »
Так укажите в ReadFileName(имя файла, '15V44'), результат будет - строка. Потом работаете с этой строкой.
beaverBox
17-02-2010, 09:21
Добрый день, знатоки инсталлов :)
Только начал осваиваться с Inno, сразу вопрос: ограничено ли количество диалогов? И как переходить от одного к другому?
Поясняю. В процессе установки пользователь должен ввести n-ое количество параметров, исходя из которых выполняются определенные действия (создание БД, модификация, и т.д., не суть). Использую инструкции CreateInputQueryPage, CreateInputOptionPage и т.д.
Всё делаю в InitializeWizard.
Не могу понять, как переходить от окна к окну... Я так понимаю, первый параметр AfterID - это идентификатор диалога, который появится по "Далее".
Помогите новичку. Горю по срокам.
Спасибо.
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC