PDA

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


Страниц : 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

Николай_Николаич@vk
24-05-2015, 21:48
В ISDone 06final есть пример SecondProgressBar »
Он без Isdone работает?

OldGamer
25-05-2015, 18:47
Всем привет!

Подскажите, пожалуйста, как изменить стандартное окно выбора языков установки?
Нужно точно так, как на скриншоте (http://i70.fastpic.ru/big/2015/0525/a4/03f54d4313ad080592cfc2a4f921eea4.png)

1. В шапке - название программы;
2. "Выберите язык установщика" по-английски и по-русски в 2 строки;
3. Названия языков чтоб отображались через "/".

vint56
26-05-2015, 15:33
OldGamer, вот пример автор sergey3695 я его не много подправил под твой скрин http://rghost.ru/8tQSLWRVD
вот мой скрин
http://i71.fastpic.ru/big/2015/0526/6d/68cf4139b57b6683d0edbdb049ac8e6d.png (http://fastpic.ru/)

sergey3695
26-05-2015, 19:22
vint56, (Unicode)
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

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

[LangOptions]
english.LanguageName=English / Английский
russian.LanguageName=Russian / Русский

Dodakaedr
26-05-2015, 23:15
OldGamer, Еще один вариант, чисто средствами inno[Setup]
AppName=app
AppVersion=1.5
DefaultDirName={sd}\app

[Files]
Source: compiler:WizModernSmallImage-IS.bmp; DestName: "1.bmp"; Flags: dontcopy

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

[LangOptions]
english.LanguageName=English / Английский
russian.LanguageName=Russian / Русский

[Messages]
SelectLanguageLabel=Please select a language.%nВыберите язык установщика.
SelectLanguageTitle=Ashampoo® Burning Studio 15

[Code]
function InitializeLanguageDialog(): Boolean;
begin
with SelectLanguageForm do
begin
ExtractTemporaryFile('1.bmp');
IconBitmapImage.SetBounds(ScaleX(IconBitmapImage.Left), ScaleY(IconBitmapImage.Top), ScaleX(55), ScaleY(55));
IconBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
SelectLabel.Left := ScaleX(SelectLanguageForm.SelectLabel.Left + 25);
LangCombo.SetBounds(ScaleX(LangCombo.Left + 25), ScaleY(LangCombo.Top), ScaleX(LangCombo.Width - 60), ScaleY(LangCombo.Height));
end;
result := true;
end;

OldGamer
27-05-2015, 00:58
Всем большое спасибо за примеры выше - всё работает :up

habib2302
27-05-2015, 13:53
как изменить стандартное окно выбора языков установки? »
А как просто заменить bmp на png?

Dodakaedr
27-05-2015, 14:27
А как просто заменить bmp на png? »
Через ботву.

habib2302
27-05-2015, 14:28
Dodakaedr, ну понятно, что через ботву. я что-то сделал, но не работает
#include "botva2.iss"
[Setup]
AppName=DrawImageExample by South.Tver
AppVerName=DrawImageExample by South.Tver
DefaultDirName={pf}\ImageExample
OutputBaseFilename=setup
RawDataResource=Botva:botva2.dll|Lang.png

[Code]
function GetFromRes(const ResName, SaveFileName: String): Boolean;
var
lResStream: TResourceStream;
begin
lResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
try
lResStream.SaveToFile(ExpandConstant('{tmp}\') + SaveFileName);
finally
lResStream.Free;
Result := FileExists(ExpandConstant('{tmp}\') + SaveFileName);
end;
end;


procedure InitializeWizard;
var
IPLang: THandle;
begin
with WizardForm do
begin
if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_LANG', 'Lang.png') then
begin
IPLang := ImgLoad(SelectLanguageForm.Handle, ExpandConstant('{tmp}\Lang.png'), 5, 5, 40, 40, True, True);
ImgSetVisibility(IPLang, True);
ImgApplyChanges(SelectLanguageForm.Handle);
end;
end;
end;

procedure DeinitializeSetup();
begin
if FileExists(ExpandConstant('{tmp}\') + 'botva2.dll') then gdipShutDown();
end;

/////////////////////////////////////////////////////////////////////

Dodakaedr
27-05-2015, 14:43
habib2302, здесь реализовано http://forum.oszone.net/post-2511590-643.html

habib2302
27-05-2015, 15:08
Dodakaedr, там много лишнего
вот скомпилировал скрипт и вот что получилось
http://s017.radikal.ru/i405/1505/65/e5cc61269f84.png (http://s017.radikal.ru/i441/1505/57/562b4f32fa2a.jpg) http://s020.radikal.ru/i700/1505/21/87173f974426.png (http://s50.radikal.ru/i130/1505/05/153d712d4ff5.jpg)
Т.е. изображение выделенное красным должно быть совершенно в другом месте (в SelectLanguageForm)

Dodakaedr
27-05-2015, 15:46
Т.е. изображение выделенное красным должно быть совершенно в другом месте (в SelectLanguageForm) »
Ну так поместите его туда.

vint56
27-05-2015, 15:52
habib2302, там много лишнего
#define MyAppName "Ashampoo® Burning Studio 15"
#define MyAppVersion "15.0.4.4"
#define InstallFiles "InstallFiles"

[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={pf}\{#MyAppName}
RawDataResource=Botva:{#InstallFiles}\botva2.dll|b2p:{#InstallFiles}\b2p.dll|Icon:{#InstallFiles}\Ic on.png

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

[LangOptions]
english.LanguageName=English / Английский
russian.LanguageName=Russian / Русский

[Files]
Source: "InstallFiles\*"; Flags: dontcopy;

[code]
const
RT_RCDATA = 10;

type
#ifdef UNICODE
PChar = PAnsiChar;
#endif

var
IconPanel : TPanel;

function ImgLoad(Wnd :HWND; FileName :PAnsiChar; Left, Top, Width, Height :integer; Stretch, IsBkg :boolean):Longint; external 'ImgLoad@{tmp}\botva2.dll stdcall delayload';
procedure ImgSetVisibility(img :Longint; Visible :boolean); external 'ImgSetVisibility@{tmp}\b2p.dll stdcall delayload';
procedure ImgApplyChanges(h: HWND); external'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload';
procedure gdipShutdown; external'gdipShutdown@{tmp}\botva2.dll stdcall delayload';

function ExtractResource(var ResourceList: TStringList): Boolean;
var
ResStreams: array of TResourceStream;
ResName, ResFile: String;
i: Integer;
begin
if ResourceList = nil then Exit;
Result := ResourceList.Count > 0;
SetArrayLength(ResStreams, ResourceList.Count);
try
for i := 0 to ResourceList.Count-1 do
try
ResName := Trim( Copy(ResourceList.Strings[i], 1, Pos(',', ResourceList.Strings[i])-1) );
ResFile := Trim( Copy(ResourceList.Strings[i], Pos(',', ResourceList.Strings[i])+1, Length(ResourceList.Strings[i])-Pos(',', ResourceList.Strings[i])) );
ResStreams[i] := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
ResStreams[i].SaveToFile(ExpandConstant('{tmp}\') + ResFile);
Result := Result and FileExists(ExpandConstant('{tmp}\') + ResFile);
finally
ResStreams[i].Free;
end;
finally
ResourceList.Free;
end;
end;

function InitializeLanguageDialog(): Boolean;
var
IconHandle: THandle;
ResList: TStringList;
begin
ResList := TStringList.Create;
ResList.Add('_IS_b2p, b2p.dll');
ResList.Add('_IS_BOTVA, botva2.dll');
ResList.Add('_IS_Icon, Icon.png');

IconPanel := TPanel.Create(SelectLanguageForm);
with IconPanel do
begin
Parent := SelectLanguageForm;
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(100);
Height := ScaleY(100);
BevelOuter := bvNone;
end;

with SelectLanguageForm do
begin
if ExtractResource(ResList) then
begin
Width := ScaleX(315);
Height := ScaleY(155);
IconHandle := ImgLoad(IconPanel.Handle, ExpandConstant('{tmp}\Icon.png'), 0, 0, 100,100, True, True);
IconBitmapImage.Hide;
ImgApplyChanges(IconPanel.Handle);
SelectLabel.Left := ScaleX(SelectLanguageForm.SelectLabel.Left + 65);
LangCombo.SetBounds(ScaleX(LangCombo.Left + 65), ScaleY(LangCombo.Top), ScaleX(LangCombo.Width - 60), ScaleY(LangCombo.Height));
SelectLabel.Caption:='Please select a language.'#13'Выберите язык установщика.';
end;
result := true;
end;
end;

procedure DeinitializeSetup;
begin
if FileExists(ExpandConstant('{tmp}\') + 'botva2.dll') then gdipShutDown;
end;

habib2302
27-05-2015, 18:52
Не получается
https://yadi.sk/d/6zebFSKAguVwA
и как убрать это
http://s017.radikal.ru/i424/1505/54/7edc090ba6e9.png (http://s019.radikal.ru/i620/1505/c3/f8990928dded.jpg)

Shift85
28-05-2015, 20:46
и как убрать это »

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
end;

vint56
28-05-2015, 21:00
habib2302, http://rghost.ru/7s2pJXVgj

habib2302
28-05-2015, 21:40
не отображается

http://s017.radikal.ru/i431/1505/35/693146165f7e.png (http://s017.radikal.ru/i418/1505/ae/f5012c3f16e7.jpg)

vint56
28-05-2015, 22:23
habib2302, uinocode
http://i70.fastpic.ru/big/2015/0528/3f/9ab7075e2bd8264cf000f6566029443f.png (http://fastpic.ru/)

TrueMage
30-05-2015, 11:56
Господа, пожалуйста, помогите или хотя бы сориентируйте куда копать. :)

Задача следующая: нужно установить мод в определенную папку на жестком диске, исходя из следующих условий, размещенных в порядке важности

Вариант 1 (чистая установка)
а) Если есть ключ реестра "reg:HKCU\SOFTWARE\Blizzard Entertainment\Diablo II", то оттуда как "InstallPath\BFE",
б) Если на жестких дисках есть файл, скажем, patch_d2.mpq, то в каталог, который содержит этот файл плюс, опять же, "\BFE"
в) если нет ни того ни того, то в {pf}\BFE.

Вариант 2 (установка обновления)
а) просто в папку, куда была установлена предыдущая версия.

Возможно ли это вообще? Заранее очень благодарен.

kotyarko@fb
30-05-2015, 12:55
TrueMage, в принципе, ничего особенного. Но в этом варианте:
б) Если на жестких дисках есть файл, скажем, patch_d2.mpq, то в каталог, который содержит этот файл плюс, опять же, "\BFE" »
поиск будет не самый быстрый. Будет напрямую зависеть от забитости хардов.




© OSzone.net 2001-2012