Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
Devils Night
24-10-2011, 03:42
А то DeleteIniEntry('Component1','outname',ExpandConstant('{app}\config.ini'));
удаляет первый "outname" в ини
[Component1]
outname=plugin1.dll
outname=plugin2.dll
outname=plugin3.dll
outname=plugin4.dll».Что-то он при установки её удаляет, а нужно чтобы при деинсталяции.
Может я чего в скрипте на чудил?
[ code]
var Flag: boolean;
function InitializeSetup: Boolean;
begin
Flag:= True;
Result:=true;
if not FileExists(ExpandConstant('{pf}')+'\My Program\MyProg.exe')
then
begin
MsgBox('MyProg не найден, сначала установите MyProg.', mbInformation, MB_OK);
Flag:= False;
Result:=false;
end;
end;
procedure DeinitializeSetup();
begin
if Flag then
if WizardForm.CurPageID = WpFinished then
begin
SetIniString('Component1','outname', 'plugin1.dll',ExpandConstant('{app}\config.ini'))
DeleteIniEntry('Component1','outname',ExpandConstant('{app}\config.ini'));
end;
end;
Может я чего в скрипте на чудил? »
Есть немного :) .
[Setup]
AppId={{9CC9A926-EC33-48FC-81D9-2EEAB3BF79B7}
AppName=My Program
AppVersion=1.5
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
AllowNoIcons=yes
OutputDir=.
OutputBaseFilename=setup0
Compression=lzma
SolidCompression=yes
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
[ Code]
var Flag: boolean;
function InitializeSetup: Boolean;
begin
Flag:= True;
Result:=true;
if not FileExists(ExpandConstant('{pf}')+'\My Program\MyProg.exe')
then
begin
MsgBox('MyProg не найден, сначала установите MyProg.', mbInformation, MB_OK);
Flag:= False;
Result:=false;
end;
end;
procedure DeinitializeSetup();
begin
if Flag then
if WizardForm.CurPageID = WpFinished then
begin
SetIniString('Component1','outname', 'plugin1.dll',ExpandConstant('{app}\config.ini'));
end;
end;
procedure InitializeUninstallProgressForm();
begin
DeleteIniEntry('Component1','outname',ExpandConstant('{app}\config.ini'));
end;
Только это не решает поставленной задачи, так как удаляет первую строчку в файле ини, состоящем из нескольких значений key=outname.
Sotonisto
24-10-2011, 12:29
Всем привет! Это сново я :)
Вопрос по поводу этого (http://rghost.ru/26906051) скрипта NFSU2. Мне в нем все нравится, но все же необходимо довавить к нему 2 кнопки - свернуть и закрыть (как на скрине). Как это реализовать (при BorderStyle:=bsNone)?
http://img856.imageshack.us/img856/4320/zzzshy.jpg
valyok666
24-10-2011, 13:05
Sotonisto, уже писал же что это через botva2 реализовано
Devils Night
24-10-2011, 13:07
Есть немного . »Благодарю :yahoo: ! Работает как часы.
Вот только хотелось бы уточнить один факт.
В коде для ini указываю путь к другим дополнениям таким образом
SetIniString('Component1','UtilsFolder', '{app}\Skins\',ExpandConstant('{app}\config.ini')) , если прописываю путь как {app}\Utils\, то он и в ini прописывается так же {app}\Utils\, а хотелось чтобы прописалось так же, куда собственно оно и установилось.
Это вообще возможно сделать, или вообще никак?
SetIniString('Component1','UtilsFolder', '{app}\Skins\',ExpandConstant('{app}\config.ini')) »
SetIniString('Component1','UtilsFolder', ExpandConstant('{app}\Skins\'), ExpandConstant('{app}\config.ini'))
Raf-9600
24-10-2011, 14:35
Ктонить может подсказать скриптик, в котором бы в файл {app}\Components.ini записывалась разрядность ОСи?
valyok666
24-10-2011, 14:36
Devils Night,
определенное значение из INI-файла
[Setup]
AppName={code:GetAppName}
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[code]
var
IniValue, IniFile: String;
//Для получения значения в другую секцию
Function GetAppName(IniFile: String): String;
begin
IniFile:='G:\Name.ini'
IniValue:= GetIniString('ModuleName', 'AppName', '', IniFile);
Result:=IniValue
end;
//Просто получение значения
Procedure InitializeWizard();
begin
IniFile:='G:\Name.ini'
IniValue:= GetIniString('ModuleName'{Название секции}, 'AppName'{Подключ}, '', IniFile{Ini файл});
WizardForm.WelcomeLabel2.Caption:= IniValue;
end;
Edison007
24-10-2011, 14:47
Sotonisto, я кидал пример (http://rghost.ru/26396871) , там, как раз содаются такие кнопки...
FolDer98
24-10-2011, 18:52
Доброго Времени суток)Недавно задался вопросом создать форму)форма получилась но как создать DirEdit не стандартной полоской а картинкой???используются ботва
Edison007
24-10-2011, 19:06
FolDer98, http://rghost.ru/26962561 вот тебе пример
FolDer98
24-10-2011, 19:08
Edison007, разрешите узнать есть ли какая нибудь документация FAQ так сказать по Botva2???
Edison007
24-10-2011, 19:23
FolDer98, ну если только сам модуль, там всё четко расписано, ну и есть куча примеров, по которым легко понять, что к чему
народ а как работают компоненты?
сам механизм действия
как что надо сделать чтобы извлеклась именно русская(английская) озвучка
No4noylis
24-10-2011, 19:36
Tixo, ну если пакуешь стандартным inno, то в секции [Files] файлы этой самой озвучки добавляй отдельно, и в конце соответствующих файлов пиши Components: имя компонента
Если arc'ом пакуешь, то распаковку с выбором компонентов можно реализовать с помощью ISDone, там в справке все подробно описано :)
Пример 2 : распаковка архивов, учитывая выбранные компоненты.
[Types]
Name: full; Description: Full installation; Flags: iscustom
[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive;
Name: text\eng; Description: Английский; Flags: exclusive;
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive;
Name: voice\eng; Description: Английский; Flags: exclusive;
....
Comps1:=0; Comps2:=0; Comps3:=0;
TmpValue:=1;
if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //компонент 3
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 4
....
ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
if not FileSearchInit(false) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\BasicData.arc'), ExpandConstant('{app}\'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\rusvoice.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
ISDoneError:=false;
until true;
ISDoneStop;
end;
в данном примере имеется 4 действующих компонента. Перед инициализацией бибилиотеки состояния чекбоксов компонентов загружаются в переменную Comps1.
Сначала при любом выборе компонентов распаковывается архив BasicData.arc, у которого нет к ним привязки (первый параметр равен 0);
далее уже в зависимости от выбранных пользователем чекбоксов будет распаковываться:
rustext.arc, если был выбран компонент 'text\rus';
engtext.arc, если был выбран компонент 'text\eng';
rusvoice.arc, если был выбран компонент 'voice\rus';
engvoice.arc, если был выбран компонент 'voice\eng';
Вне зависимости от выбора пользователя, прогрессбар автоматически подстраивается под выбранные компоненты, чтобы отображение было без равков и граничным состоянием было 100%. Это достигается тем, что после тестового прохода вся информация о времени выполнения каждого компонента сохраняется в файл records.inf и перед началом реальной установки уже известно какие компоненты не были выбраны и, соответственно, их время будет интерполироваться на все остальные операции, которые точно будут выполнены в процессе установки.
No4noylis,
пакую арком, как там выбрать или ненадо?
Tixo, значит рановато пока это осваивать.
Rikill, надо же когда то учиться)
onlainserver
24-10-2011, 20:58
привет всем у меня простой вопрос как сделать чтобы при распаковке архива создавался ярлык на рабочий стол?
вот например когда игру устанавливаешь ярлык ехе файла автоматом на рабочем столе вот как такое сделать спасибо жду ответов)
Gnom_aka_Lexander
24-10-2011, 21:00
кто работал с gdiplus.dll расскажите пожалуйста что это такое и с чем его едят »
Это одна из бета-версий ботва2. Юршат, вроде, объяснял уже както. поэтому, оптимальнее использовать именно окончательный вариант.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.