Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 5]
Johny777
29-08-2012, 16:17
Как текструировать DirEdit и GroupEdit через ботву »
нафиг тебе
сделай так
with WizardForm.DirEdit do
begin
BorderStyle := bsNone;
Color := clBtnFace;
end;
чтоб эдит сливался с окном (не было границ)
и картинку наложи
Ivan_009, вот пример
[Setup]
AppName=«Company of Heroes. Anthology»
AppVersion=1.5
DefaultDirName={pf}\Company of Heroes. Anthology
DefaultGroupName=Company of Heroes. Anthology
[Files]
Source: Files\botva2.dll; DestDir: {tmp}; Flags: dontcopy;
Source: Files\b2p.dll; DestDir: {tmp}; Flags: dontcopy;
Source: Files\Edit.png; DestDir: {tmp}; Flags: dontcopy;
[Icons]
Name: "{group}\«Company of Heroes. Anthology»"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:UninstallProgram,«Company of Heroes. Anthology»}"; Filename: "{uninstallexe}"
[Code]
var
Edit,GroupEdit: Longint;
DirEditLabel, GroupEditLabel: TLabel;
#include "Modules\botva2.iss"
function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\b2p.dll')) then ExtractTemporaryFile('b2p.dll');
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
Result:=True;
end;
procedure DirChange(Sender: TObject);
begin
DirEditLabel.Caption:=MinimizePathName(WizardForm.DirEdit.Text, DirEditLabel.Font, DirEditLabel.Width);
end;
procedure GroupChange(Sender: TObject);
begin
GroupEditLabel.Caption := MinimizePathName(WizardForm.GroupEdit.Text, GroupEditLabel.Font, GroupEditLabel.Width);
end;
procedure InitializeWizard;
begin
Edit:=ImgLoad(WizardForm.SelectDirPage.Handle,ExpandConstant('{tmp}\Edit.png'),ScaleX(0), ScaleY(81),ScaleX(332),ScaleY(22),True,True);
GroupEdit:=ImgLoad(WizardForm.SelectProgramGroupPage.Handle,ExpandConstant('{tmp}\Edit.png'),ScaleX( 0), ScaleY(81),ScaleX(332),ScaleY(22),True,True);
ImgApplyChanges(WizardForm.SelectDirPage.Handle);
ImgApplyChanges(WizardForm.SelectProgramGroupPage.Handle);
DirEditLabel := TLabel.Create(WizardForm);
with DirEditLabel do begin
AutoSize:=False;
SetBounds(ScaleX(5), ScaleY(85), ScaleX(446), ScaleY(15));
WordWrap:= True;
ShowAccelChar := False;
Transparent:=True;
Font.Name:= 'Arial'
Font.Size:= 9;
Font.Color:=$000000;
Font.Style:=[fsBold];
Caption := MinimizePathName(WizardForm.DirEdit.Text, DirEditLabel.Font, DirEditLabel.Width);
Parent := WizardForm.SelectDirPage;
end;
GroupEditLabel := TLabel.Create(WizardForm);
with GroupEditLabel do begin
AutoSize:=False;
SetBounds(ScaleX(5), ScaleY(85), ScaleX(446), ScaleY(15));
WordWrap:= True;
ShowAccelChar := False;
Transparent:=True;
Font.Name:= 'Arial'
Font.Size:= 9;
Font.Color:=$000000;
Font.Style:=[fsBold];
Caption := MinimizePathName(WizardForm.GroupEdit.Text, GroupEditLabel.Font, GroupEditLabel.Width);
Parent := WizardForm.SelectProgramGroupPage;
end;
WizardForm.DirEdit.OnChange := @DirChange;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text;
WizardForm.GroupEdit.OnChange := @GroupChange;
end;
procedure HideComponents;
begin
WizardForm.DirEdit.Hide;
WizardForm.GroupEdit.Hide;
DirEditLabel.Hide;
GroupEditLabel.Hide;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
HideComponents;
case CurPageID of
wpSelectDir:
begin
DirEditLabel.Show;
end;
wpSelectProgramGroup:
GroupEditLabel.Show;
end;
end;
procedure DeinitializeSetup();
begin
gdipShutdown;
end;
MogilShik2007
29-08-2012, 19:40
Привет, подскажите скрипт и что за .dll использовались на скринах:
http://s017.radikal.ru/i408/1208/01/fcbb1acb7ed7.jpg
http://s019.radikal.ru/i604/1208/ea/3cdfd35de576.jpg
И если можно поподробнее)))
MogilShik2007, набери в Google "ISDone" и ищи! Тысеача раз уже спросили!
Ivan_009
29-08-2012, 21:14
Привет, подскажите скрипт и что за .dll использовались на скринах: »
Лови
Johny777
30-08-2012, 11:09
El Sanchez,
можно пожалуйста пример загрузки скина из оперативки (тогда его не нужно копировать в директорию установки а оттуда в темп для деинсталятора и загрузка должна быть быстрее)?
и скажи можно ли пихать библиотеки в RawDataResource (если да то с примером пожалуйста для например той же ISSkin.dll)?
так не работает - procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@RawDataResource:skin stdcall setuponly';
в Example_RawDataResource.iss немного не то тк файл извлекается в конечном итоге в темп и грузится оттуда
Здравствуйте!
Я использую Stormlib.dll для упаковки игровых архивов.
У меня не получается использовать Callback с помощью функции SFileSetAddFileCallback.
Вот описание функции: http://www.zezula.net/en/mpq/stormlib/sfilesetaddfilecallback.html
Вылетает ошибка:
"Access violation at address xxxxxxxx. Write of address xxxxxxxx
Дебаггер указывает на SFileSetAddFileCallback (phMPQ, @AddFileCallback, 0);
Очень надеюсь на помощь, заранее спасибо!
Вот мой код:
var
phMPQ: THandle;
type
TCallback = function (pvUserData: Integer; dwBytesWritten:DWORD; dwTotalBytes: DWORD; bFinalCall: BOOL): PAnsiChar;
function SFileSetAddFileCallback(phMPQ: THandle; pfnAddFileCB: TCallback ; pvUserData: Integer): BOOL; external 'SFileSetAddFileCallback@files:StormLib.dll stdcall';
// Функция, которая должна вызываться dll-кой
function AddFileCallback (pvUserData: Integer; dwBytesWritten:DWORD; dwTotalBytes: DWORD; bFinalCall: BOOL): PAnsiChar;
begin
end;
//
procedure CurStepChanged(CurStep: TSetupStep);
begin
SFileSetAddFileCallback (phMPQ, @AddFileCallback, 0);
end;
MogilShik2007
30-08-2012, 17:10
MogilShik2007, набери в Google "ISDone" и ищи! Тысеача раз уже спросили! »
Мне нужен конкретный скрипт, как на скринах, а не сидеть и подбирать из нескольких десятков найденных в нете...
MogilShik2007, http://freearc.org/ru/InnoSetup.aspx
El Sanchez
30-08-2012, 18:50
можно пожалуйста пример загрузки скина из оперативки (тогда его не нужно копировать в директорию установки а оттуда в темп для деинсталятора и загрузка должна быть быстрее)?
и скажи можно ли пихать библиотеки в RawDataResource (если да то с примером пожалуйста для например той же ISSkin.dll)? »
Этот геморрой (http://www.rsdn.ru/article/baseserv/peloader.xml) не стоит свеч.
Я использую Stormlib.dll для упаковки игровых архивов.
У меня не получается использовать Callback с помощью функции SFileSetAddFileCallback. »
al1511,
var
phMPQ: THandle;
function SFileSetAddFileCallback(hMpq: THandle; pfnAddFileCB, pvUserData: Longint): BOOL; external 'SFileSetAddFileCallback@files:stormlib.dll stdcall';
procedure AddFileCallback(pvUserData: Longint; dwBytesWritten, dwTotalBytes: DWORD; bFinalCall: BOOL);
begin
//
end;
//
procedure CurStepChanged(CurStep: TSetupStep);
begin
SFileSetAddFileCallback (phMPQ, CallbackAddr('AddFileCallback'), 0);
end;
Gnom_aka_Lexander
30-08-2012, 19:14
Этот геморрой не стоит свеч. »
там немного другое, инно этого точно не умеет. попытки были - модификации своего исполняемого файла инно также не поддерживает. Да и загрузку длл из Stream инно тоже не может. посему, только RawDataResource и только предварительная распаковка на диск. Хотя, никто не запрещает плагин, который будет за инно грузить нужные функции из длл прямо из памяти, куда эту длл можно кинуть из ресурсов. У Инно, все-таки, великолепная расширяемость плагинами, плюс есть простые и понятные примеры в папке Inno Setup 5\Examples\MyDll
Ivan_009
30-08-2012, 19:24
Как на b2p сделать деинсталлятор как инсталлятор или это надо делать на botva2 подскажите пожалуйста...
На b2p не получается... :(
Gnom_aka_Lexander
30-08-2012, 19:30
Ivan_009, никак. тоесть, можно, конечно - загнать графику в те-же RawDataResource и переписать модуль для b2p. Могу занятся, если время будет. но скорей всего в ближайшее время его не будет - мне на сборку-то мою, и то пришлось соавтора приглашать...
P.S. И да, b2p - это всего лишь воспомогательный плагин для botva2, который подает botva2 картинки из памяти, не более, сами картинки грузит из botva2.
Здравствуйте.
В общем, есть игра, которую можно модифицировать поместив в нужную папку файлы. Так вот, мне нужно создать инсталлятор, который распакует в папку указанную пользователем нужные файлы и папки. НО! Есть одна самая главная проблема, нужно чтобы при установке был выбор компонентов установки. Например, некие два файла это "Мод_1" следующие 3 файла "Мод_2" и нужно что бы пользователь ставил галочки, что ему нужно, а, что нет. Так вот, как это реализовать.
Заранее спасибо.
Gnom_aka_Lexander
30-08-2012, 20:47
Справка. Секция [Files] и ее связь с секцией [Components]
Приер из инсталлятора InnoUltra:
[Components]
Name: std; Description: {cm:Comp2Label}; Flags: exclusive; Types: custom compact full;
Name: std\a; Description: {cm:CompANLabel}; Flags: exclusive; Types: custom compact full;
Name: std\u; Description: {cm:CompULabel}; Flags: exclusive; Types: custom compact;
[Files]
Source: ANSI\ISCC.exe; DestDir: {app}; Components: std\a
Source: ANSI\ISCmplr.dll; DestDir: {app}; Components: std\a
Source: ANSI\ISPP.dll; DestDir: {app}; Components: std\a
Source: ANSI\Setup.e32; DestDir: {app}; Components: std\a
Source: ANSI\SetupLdr.e32; DestDir: {app}; Components: std\a
Source: ANSI\Compil32.exe; DestName: Compil32.exe; DestDir: {app}; Components: std\a;
Source: UNICODE\Compil32.exe; DestName: Compil32.exe; DestDir: {app}; Components: std\u;
Source: UNICODE\ISCC.exe; DestDir: {app}; Components: std\u
Source: UNICODE\ISCmplr.dll; DestDir: {app}; Components: std\u
Source: UNICODE\ISPP.dll; DestDir: {app}; Components: std\u
Source: UNICODE\Setup.e32; DestDir: {app}; Components: std\u
Source: UNICODE\SetupLdr.e32; DestDir: {app}; Components: std\u
Gnom_aka_Lexander, извиняюсь, это мне ответ? Если нет то простите, если да, то что с этим делать и как использовать? Заранее спасибо.
Gnom_aka_Lexander
30-08-2012, 22:11
извиняюсь, это мне ответ? »
Ага.то что с этим делать и как использовать? »
Использовать. Имена и надписи компонентов меняшь на свои, файлы тоже.
Gnom_aka_Lexander, а в какое место это вставлять в скрипте и где что менять, а то вдруг что-то не то изменю. Прочтите за надоедливость, первый раз с этим столкнулся. Заранее спасибо!
Gnom_aka_Lexander
30-08-2012, 22:23
Ооо... Как можно первый раз столкнуться с тем, с чего обычно начинают? Почитайте справку на ночь - очень просветляет.
Gnom_aka_Lexander,
Англоязычная версия..,пожалуйста, просто изучать конкретно нет времени, пожалуйста. Что с этим кодом делать. Заранее спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.